227-0014-20L  Computational Thinking

SemesterAutumn Semester 2024
LecturersR. Wattenhofer
Periodicityyearly recurring course
Language of instructionEnglish



Courses

NumberTitleHoursLecturers
227-0014-20 VComputational Thinking2 hrs
Thu12:15-14:00ETF E 1 »
R. Wattenhofer
227-0014-20 UComputational Thinking1 hrs
Mon12:15-13:00ETZ F 91 »
13:15-14:00ETZ F 91 »
Tue09:15-10:00HG E 33.3 »
Fri10:15-11:00ETZ G 91 »
11:15-12:00ETZ G 91 »
R. Wattenhofer

Catalogue data

AbstractWe learn: algorithmic principles, dynamic and linear programming, complexity, P vs. NP, approximation, reductions, cryptography, zero-knowledge proofs, relational databases, SQL, machine learning, regression, gradient descent, decision trees, deep neural networks, universal approximation, advanced layers and architectures, reinforcement learning, Turing machines, computability, and more.
Learning objectiveComputation 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. The lecture will feature weekly exercises.

This course follows the flipped classroom paradigm. Students will self-study all important concepts by reading a chapter in the script, and by watching a few short video clips. The class meets every two weeks to answer questions, and for a quiz on the current topic.
ContentComputation 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. The lecture will feature weekly exercises.

This course follows the flipped classroom paradigm. Students will self-study all important concepts by reading a chapter in the script, and by watching a few short video clips. The class meets every two weeks to answer questions, and for a quiz on the current topic.
Lecture notesThe script is available here: https://disco.ethz.ch/courses/coti/
Prerequisites / NoticeThis class is suitable for students who have a basic understanding of programming.

For additional Python programming experience we recommend attending the CodeJam lab: https://disco.ethz.ch/courses/codejam/

For practical deep learning exerience we recommend attending the HODL lab: https://disco.ethz.ch/courses/hodl/
CompetenciesCompetencies
Subject-specific CompetenciesConcepts and Theoriesassessed
Techniques and Technologiesassessed
Method-specific CompetenciesAnalytical Competenciesassessed
Decision-makingfostered
Media and Digital Technologiesassessed
Problem-solvingassessed
Social CompetenciesCommunicationfostered
Personal CompetenciesAdaptability and Flexibilityassessed
Creative Thinkingassessed
Critical Thinkingassessed
Integrity and Work Ethicsfostered
Self-awareness and Self-reflection fostered
Self-direction and Self-management fostered

Performance assessment

Performance assessment information (valid until the course unit is held again)
Performance assessment as a semester course
ECTS credits4 credits
ExaminersR. Wattenhofer
Typesession examination
Language of examinationEnglish
RepetitionThe performance assessment is offered every session. Repetition possible without re-enrolling for the course unit.
Mode of examinationwritten 120 minutes
Additional information on mode of examinationStudents can earn a 0.25 grade bonus for the exam, by correctly answering at least half the questions in the quizzes throughout the semester.
Written aidsopen book
This information can be updated until the beginning of the semester; information on the examination timetable is binding.

Learning materials

 
Main linkCourse Web Page
Only public learning materials are listed.

Groups

No information on groups available.

Restrictions

There are no additional restrictions for the registration.

Offered in

ProgrammeSectionType
Electrical Engineering and Information Technology Bachelor5th Semester: Third Year Additional Foundation CoursesWInformation