Distributed Computing
ETH Zurich

Computational Thinking (HS 2020)

Course catalogue

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. 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. To give just one more example: How can we design the best electronic circuit for a given problem? In this class, we study various problems together with the fundamental theory of computation.

The weekly lectures will be based on blackboard discussions and coding demos, supported by a script and coding examples. 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. The lecture will feature weekly exercises, on paper and in Python.

Errata

News

Exam


Lecture Material

Chapter Title Lecturer Lecture Notes Exercises Solutions Responsible Assistant Recordings
Introduction
16.09.2020
Roger Wattenhofer PDF
Python Basics
Chapter 1
Algorithms
16.09.2020
23.09.2020
Roger Wattenhofer PDF 1:1
PDF 2:1
Notebook

Exercise 1 Notebook
Exercise 2 PDF
Exercise 2 Notebook
Solutions 1 PDF
Solutions 1 Notebook
Solutions 2 PDF
Solutions 2 Notebook
Henri Week 1
Week 2
Chapter 2
Complexity
30.09.2020
7.10.2020
Roger Wattenhofer
Andras Papp
PDF 1:1
PDF 2:1
Notebook
Exercise 3 PDF
Exercise 3 Notebook
Exercise 4 PDF
Exercise 4 Notebook
Solutions 3 PDF
Solutions 3 Notebook
Solutions 4 PDF
Solutions 4 Notebook
Robin
Andras
Week 3
Week 4
Chapter 3
Cryptography
14.10.2020
21.10.2020
Zeta Avarikioti
Roger Wattenhofer
PDF 1:1
PDF 2:1
Notes
Notebook
Exercise 5 PDF
Exercise 5 Notebook
Exercise 6 PDF
Exercise 6 Notebook
Solutions 5 PDF
Solutions Notebook
Solutions 6 PDF
Solutions Notebook
Ard
Tejaswi
Zeta
Week 5
Week 6
Chapter 4
Data and Storage
28.10.2020
04.11.2020
Roger Wattenhofer PDF 1:1
PDF 2:1
Notebook
Exercise 7 PDF
Exercise 7 Notebook
Exercise 8 PDF
Exercise 8 Notebook
Solutions 7 PDF
Solutions 7 Notebook
Solutions 8 PDF
Solutions 8 Notebook
Kobi
Simon
Week 7
Exercise 7
Week 8
Exercise 8
Chapter 5
Machine Learning
11.11.2020
18.11.2020
Roger Wattenhofer PDF 1:1
PDF 2:1
Notebook
Exercise 9 PDF
Exercise 9 Notebook
Exercise 10 PDF
Exercise 10 Notebook
Solutions 9 PDF
Solutions 9 Notebook
Solutions 10 PDF
Solutions 10 Notebook
Beni
Zhao
Week 9
Exercise 9
Week 10
Exercise 10
Chapter 6
Neural Networks
25.11.2020
02.12.2020
Roger Wattenhofer PDF 1:1
PDF 2:1
Notebook
Exercise 11 PDF
Exercise 11 Notebook
Exercise 12 PDF
Exercise 12 Notebook
Solutions 11 PDF


Solutions 12 PDF
Solutions 12 Notebook
Damian
Oliver
Week 11
Exercise 11
Week 12
Exercise 12
Chapter 7
Computability
09.12.2020
16.12.2020
Roger Wattenhofer PDF 1:1
PDF 2:1
Exercise 13 PDF
Exercise 13 Notebook Exercise 14 PDF
Solutions 13 PDF
Solutions 13 Notebook Solutions 14 PDF
Robin
Andras
Week 13
Exercise 13
Week 14

Web Materials