This program explores the history of computing, with a particular focus on two eras during which there was a particularly strong British role: the mid-1800s, when the first programmable devices were being designed (at the level of blueprints, not actual physical devices), and the mid-1900s, when the first physical programmable computers were built as part of the Allied efforts in World War II.

Enigma Machine
Enigma Machine

A main focus of the program’s curriculum will be on Alan Turing, the mathematician-turned-codebreaker whose success in deciphering the German Enigma code was a turning point in the war. The program is designed with the intent of helping students to learn not only the cryptographic concepts relevant to the Enigma code and to its decryption, but also to view that cryptographic work in a broader context (historical, cultural, and computational). 

Students will take a CS course in cryptography and a World War II history course, both with a British emphasis. They will also take a CS course on the History of Computing, ranging from the mid-nineteenth century (when Charles Babbage and Ada Lovelace worked to develop the first design for a programmable device) to the modernization of computation in the latter half of the twentieth century. The program also includes a 2-credit course on computing in context, particularly surrounding gender and sexuality — again inspired by Turing, a gay man who was chemically castrated by the British government as “treatment’” for his sexuality.

To allow us to study cryptography with appropriate depth, there are two prerequisite courses for the program: CS 201 (Data Structures) and CS 202 (Math of CS). (Math 236 will be accepted in lieu of CS 202.) All students who will have completed those CS courses by Spring 2022 are welcome to apply, no matter their major and no matter their class year. This program fulfills the Formal/Statistical Reasoning and Humanistic Inquiry curricular exploration graduation requirements, along with the International Studies requirement. For CS majors, it also fully satisfies the elective requirements for the major.

Message from Faculty Director

David Liben-Nowell, Professor of Computer Science

David Liben-Nowell teaches a variety of courses in computer science at Carleton, with a particular emphasis on introductory CS courses and more algorithmically focused upper-level material. His research interests include a variety of applications of the techniques of theoretical computer science to questions arising within and beyond computer science, especially the social sciences; he also recently published a textbook on discrete math specifically written for computer science students.

David Liben-Nowell

David’s undergraduate work at Cornell was in Computer Science and Philosophy, and he did his PhD in Computer Science at MIT. He also completed an MPhil at Churchill College at the University of Cambridge, in Computer Speech and Language Processing. While studying at Cambridge, he became mildly obsessed with cricket and did not fall into the water even once while punting on the Cam.

Read an interview with David Liben-Nowell about the History of Computing program.

Why I am leading this program?

What is my experience/qualification to lead this program?

Who is this program designed for?


Learning Goals

  • To explore some of the major historical developments in computer science that, in part, led to our modern age of computation.
  • To learn about cryptography and code-breaking, including its role in World War II.
  • To situate CS knowledge (from this program and beyond) in a broader societal, historical, and personal context.
  • To experience and adapt to a different culture, both inside and outside computer science.


CS 201 and CS 202. (Math 236 will be accepted in lieu of CS 202.) All students who will have completed those CS courses by the end of the Spring 2022 term are welcome to apply, no matter their major and no matter their class year.

Course of Study
20 Credits

Students enroll in three 6-credit courses and one 2-credit course, for a total of 20 credits. Two of the 6-credit courses, CS 301 and CS 341, count toward the CS major, specifically toward the CS elective requirement, and fulfill the Formal and Statistical Reasoning graduation requirement. The third 6-credit course, HIST 145, fulfills the Humanistic Inquiry graduation requirement, along with the International Studies requirement. The final 2 credits are earned in a S/CR/NC-only IDSC course.

CS 301: History of Computing (6 credits)

In the mid-1800s, Charles Babbage’s analytical engine, inspired by programmable looms, was the first conception of an automated programmable computing device. A century later, British researchers built some of the first physical computers — particularly WWII-era code-breaking work, and programmable machines developed immediately after the war. We will explore those two eras through historical writings (including Babbage and Ada Lovelace, who wrote programs for the analytical engine, and Alan Turing) and visits to relevant museums and archives. We will also study some of the more recent history of computing, particularly the major advances in the 1960s and 1970s. 

Prerequisites: CS 201 and CS 202. (Math 236 will be accepted in lieu of CS 202.)

Instructor: David Liben-Nowell

CS 341:  Cryptography (6 credits)

Modern cryptographic systems allow parties to communicate in a secure way, even if they don’t trust the channels over which they are communicating (or maybe even each other). Cryptography is at the heart of a huge range of applications: online banking and shopping, password-protected computer accounts, and secure wireless networks, to name just a few. In this course, we will introduce and explore some fundamental cryptographic primitives. Topics will include public-key encryption, digital signatures, code-breaking techniques (like those used at Bletchley Park during WWII to break the Enigma machine’s cryptosystem), pseudorandom number generation, and other cryptographic applications.

Prerequisites: CS 201 and CS 202.  (Math 236 will be accepted in lieu of CS 202.)

Instructor: David Liben-Nowell

History 145:  World War II History (6 credits)

This course will consider the broad context of World War II, from the British perspective. Topics will include a variety of aspects of the British experience both at home and abroad, including military, political, and social; the course will include a number of excursions to relevant sites, including the Churchill War Rooms, Bletchley Park, and buildings damaged or destroyed in the Blitz.

Prerequisites: None.

Instructor: Local British faculty

IDSC 141: Computing with Context: Alan Turing, Gender, and Computing (2 credits, S/CR/NC only)

This course will address a cluster of topics related to a broad gender-based context for computing. The starting point is Alan Turing himself: a hero for his code-breaking work during the war, Turing was also a gay man chemically castrated by the British government who (likely) died by suicide after enduring that treatment. The course will spiral outward from Turing to include a broader set of topics related to gender and sexuality in computing, ranging from Turing’s era to the present. Specific topics will vary based on the interests of available experts in aspects of gender and computing.

Prerequisites: None.

Instructor: Staff

Program Features


While in Cambridge, the home base for the program, students will stay in some combination of hotels, hostels, and rooms in one of the 31 colleges that are part of the University of Cambridge. On longer excursions outside of Cambridge, students will generally stay in hotels and hostels.


We will explore a variety of locations relevant to the history of computing, including Bletchley Park and various sites in London, Manchester, and Cambridge. We will also visit locations relevant to the British experience in World War II, including the Churchill War Rooms and buildings damaged or destroyed in the Blitz. A World War II-related trip to France is planned.