Computational Thinking (HS 2020)
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.
 Course language: Written English, Spoken German
 Lecture by Roger Wattenhofer, Wednesdays 810 in ETF C 1 and via livestream. The recordings will be published below (the raw recordings can be found here).
 Exercises organized by Lukas Faber, Wednesdays from 1011 in ETF C 1 plus recorded by the same livestream
News
 21.09.2020: We will now use the ETH offered livestream as primary means for remote students to attend
 16.09.2020: The lectures & exercises started
Exam
 TBD
Lecture Material
Chapter Title  Lecturer  Lecture Notes  Exercises  Solutions  Responsible Assistant  Recordings 

Introduction 16.09.2020 
Roger Wattenhofer  PDF 1:1 PDF 2:1 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 Notebook 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 
Exercise 3 PDF Exercise 3 Notebook 
Solutions 3 PDF 
Robin Andras 

Chapter 3 Cryptography 14.10.2020 21.10.2020 
Roger Wattenhofer  
Chapter 4 Data and Storage date TBD 
Roger Wattenhofer  
Chapter 5 Machine Learning date TBD 
Roger Wattenhofer  
Chapter 6 Neural Networks date TBD 
Roger Wattenhofer  
Chapter 7 Computability date TBD 
Roger Wattenhofer 