Introduction to the course

This course is an introduction to algorithmic thinking aimed at humanities students and other students who aren’t ordinarily taught programming in the course of their university degrees.

By algorithmic thinking we mean not only computer programming but also the mindset on which this rests, where a complex task or instruction is broken down into basic components, which are often iterated, or repeated, many times. This kind of thinking is now pervasive in science and society more generally. More and more tasks are handed over to computers, requiring an algorithmic approach even in areas where computers previously played a small role, such as digital humanities. So we think it’s a shame that humanities students and many others aren’t properly exposed to the thinking that lies behind computational approaches.

The main aim of this course is to remedy this unfortunate situation. We therefore aim to teach students:

  1. the basic concepts of computer programming

  2. how to use these concepts to design simple computer programs

  3. how such programs can be used to explain, illuminate, and explore concepts and ideas that are relevant to you as a humanities student

Our purpose is not to prepare you to get a job as a computer programmer. (That would require you to take several more courses.) Rather, our purpose is to equip you with what we think of as computational literacy. Reading, writing, and understanding a computer program is much like reading, writing, and understanding a foreign language. A single course, no matter how good, will not make you an expert in the language of computer programming. But it may give you basic literacy in this language. We believe this basic literacy is an extremely valuable skill:

  1. you will become able to use computers to study concepts and ideas that are relevant to your primary field of study

  2. you will become familiar with how computer programs are designed and how they work

  3. you will be able to communicate effectively with others who are experts in computer programming; in particular, you won’t be dazzled or intimidated by computers or expert programmers

This course will teach you computational concepts such as variables, iteration, loops, cases, data structures, and functions, as well as how these are combined into a program that implements an algorithm. An algorithm is essentially a cook-book recipe that breaks a complex task down to basic components. More precisely, it is a finite set of precise instructions that can be carried out by a machine, with no need for creativity or understanding. For example, to alphabetize a list of words, we first order them by their first letter, then break “ties” between words starting with the same letters by inspecting the second letter, and so on until all words are ordered. We can understand how the algorithm as a whole works in virtue of being built up from its simple steps; it is not just a “black box”.

Additionally, you will get an introduction to some carefully chosen concepts and theories that are of particular interest and relevance to humanities students, while also lending themselves to explanation, illumination, and exploration by means of algorithmic thinking. The first module covers some very basic probability theory and statistics, including the important distinction between correlation and causation. The second module is a short introduction to computational linguistics, including corpus-based explorations of language diversity. The third module focuses on evolutionary models, with applications to cultural and linguistic evolution. Finally, the fourth module introduces game theory and uses of this to explore the evolution of social cooperation. Throughout all these examples, the idea of iteration figures centrally–that is, repeating some simple process a large number of times–thus ensuring that the examples naturally lend themselves to investigation by means of algorithmic thinking.

The course will be given in two versions: a 5 ECTS version for students in the UiO Honours Programme, consisting of modules one and two; and a 10 ECTS version open to all students at HF and beyond, covering all four modules.