Distributed Computing
ETH Zurich

Computational Thinking (HS 2025)

Course catalogue Previous year

Computation is everywhere, but what is computation actually? In this lecture we will discuss the power and limitations of computation. Computational thinking is about understanding machine intelligence: What is computable, and how efficiently?

Understanding computation lies at the heart of many exciting scientific, social and even philosophical developments. Computational thinking is more than programming a computer, it means thinking in abstractions. Consequently, computational thinking has become a fundamental skill for everyone, not just computer scientists. For example, functions which can easily be computed but not inverted are at the heart of understanding data security and privacy. The design of efficient electronic circuits is related to computational complexity. Machine learning on the other hand has given us fascinating new tools to teach machines how to estimate functions. Thanks to clever heuristics, machines now appear to be capable of solving complex cognitive tasks. In this class, we study various problems together with the fundamental theory of computation.

The course uses Python as a programming language. Python is popular and intuitive, a programming language that looks and feels a bit like human instructions.

Organization

This course follows the flipped classroom paradigm. You (the student) will self-study all important concepts by

We have weekly paper exercise sessions to learn all the important concepts, with questions on the level of exam questions.

For each topic, the whole class meets every two weeks on Thursday. Each class meeting is organized as follows:

Students can win a 1/4 bonus grade for the exam

News

Exam

Lecture Material

Chapter Title Lecture Notes Lecture Videos Exercises & Solutions 3rd Party Tutorials
Introduction & Python
21.09.2023
PDF
Python Cheat Sheet
Notebook
Python Playlist
Python Basics (Page 1)
Python Advanced (Page 2)
Python for Programmers
Chapter 1
Algorithms
05.10.2023
PDF 1:1
Notebook
Algorithms Playlist
Recursion etc. (1.1-1.3)
Dynamic Programming (1.4)
O Notation (in 1.1)
Linear Programming (1.5)
Linear Relaxation (1.6)
Flows (1.7)
Summary Chapter 1
Exercise 1 PDF
Exercise 1 Notebook
Exercise 2 PDF
Exercise 2 Notebook
Recursion and Backtracking [p]
Dynamic Programming
Linear Programming [b][s]