Lectures: Not scheduled yet, please check back soon! (Tomas Petricek)
Page in SIS: NPRG088
Grading: Credit
Programming originated at the intersection of many disciplines, including logic, electrical engineering, business management and psychology. Different cultures of programming, rooted in those disciplines, continue shaping programming to this day. They remain at the core of current disagreements about programming, but also productively contribute to shared concepts. In this course, we will look at programming from a historical perspective, examining foundational works of the field through the lens of different cultures of programming.
This is a one-off course based on my open-access book Cultures of Programming published by Cambridge University Press in December 2025. Also check out the exhibition in Galeria Chodba (Mala strana, ground floor)!
Course format
The course will combine lectures with discussions about notable past papers on programming. I’ll ask you to read some old papers and briefly present them and discuss what interesting and surprising things can be found there! The exact arrangement will depend on the number of students attending and interest in getting credits for the course :-).
Course sylabus
The course will mostly follow the structure & material from the book.
Cultures of programming
- Five ways of thinking about programming
- Clashes and collaborations around programming
- Framing the history an philosophy of programming
Mathematization of programming
- Programs as formal mathematical entities
- Algol 60 and the birth of programming languages
- Structured programming and the goto debate
- Program verification: proofs, their limits, and social processes
Interactive programming
- Hackers, time-sharing, and the hands-on imperative
- Augmenting human intellect and personal dynamic media
- Home computing and the birth of an industry
Software engineering
- The software crisis and disciplinary responses
- Testing, debugging, and how software became reliable without proof
- Software development methodologies and their cultures
Programming with types
- From data structuring to lightweight formal methods
- Type theory and automated mathematics
- Pluralism and scientific progress in type systems
Object-oriented programming
- Origins of objects: Simula, Smalltalk, and beyond
- From mathematics and humanism to engineering and management
- Struggle for control of the OOP concept
