Semester: winter 2026/27
Lectures: Thursday 10:40, S11 (David Corfield, Jaroslav Nešetřil, Tomas Petricek)
Page in SIS: NPRG086
Grading: Exam

We take computer science concepts like functions, trees, and processes for granted, but where do they come from, how did they evolve, and do we even agree on what they mean? In this course, we will look at a number of computer science concepts from historical perspectives. We will follow the concepts as they change when they cross different disciplines and cross the boundaries between formal definitions, concrete implementations and intuitive metaphors.

This is a (most likely) one-off course jointly taught by David Corfield, Jaroslav Nešetřil, and Tomáš Petříček. We will look at entities from our respective domains from technical, historical and philosophical perspective. The course is planned as a two-semester course, followed by Functions, trees, processes (summer).

Lectures and materials

The following schedule is preliminary and subject to change. We are unfortunately not able to record the lectures, but will be sharing our slides and other materials here.

1. Welcome and introduction (1 October)

2. Lecture cancelled due to travel (8 October)

3. Functions in mathematics (1 October) - (DC)

4. Functions in early days of programming (22 October) - (TP)

5. Functions and constructivism (29 October) - (DC)

6. Functional programming (5 November) - (TP)

7. Monads and their origins (12 November) - (DC)

8. Monads in functional programming (19 November) - (TP)

9. Monads, continuations, constructivism (26 November) - (DC)

10. Trees as a programming construct (3 December) - (TP)

11. Trees and their origins (10 December) - (JN)

12. Trees in discrete mathematics (17 December) - (JN)

13. Trees in discrete mathematics (7 January) - (JN)

Course sylabus

The seminar will focus on history of selected computer science concepts. Specific concepts will be decided at the start of the semmester and may include, for example: