## Ralf Sasse: Catalogue data in Spring Semester 2021 |

Name | Dr. Ralf Sasse |

Address | Lehre D-INFK ETH Zürich, CAB H 33.2 Universitätstrasse 6 8092 Zürich SWITZERLAND |

Telephone | +41 44 632 53 89 |

ralf.sasse@inf.ethz.ch | |

Department | Computer Science |

Relationship | Lecturer |

Number | Title | ECTS | Hours | Lecturers | |
---|---|---|---|---|---|

252-0832-00L | Computer Science | 4 credits | 2V + 2U | R. Sasse, M. Schwerhoff | |

Abstract | The course covers the fundamental concepts of computer programming with a focus on systematic algorithmic problem solving. Taught language is C++. No programming experience is required. | ||||

Learning objective | Primary educational objective is to learn programming with C++. When successfully attended the course, students have a good command of the mechanisms to construct a program. They know the fundamental control and data structures and understand how an algorithmic problem is mapped to a computer program. They have an idea of what happens "behind the scenes" when a program is translated and executed. Secondary goals are an algorithmic computational thinking, understanding the possibilities and limits of programming and to impart the way of thinking of a computer scientist. | ||||

Content | The course covers fundamental data types, expressions and statements, (Limits of) computer arithmetic, control statements, functions, arrays, structural types and pointers. The part on object orientation deals with classes, inheritance and polymorphy, simple dynamic data types are introduced as examples. In general, the concepts provided in the course are motivated and illustrated with algorithms and applications. | ||||

Lecture notes | A script written in English will be provided during the semester. The script and slides will be made available for download on the course web page. | ||||

Literature | Bjarne Stroustrup: Einführung in die Programmierung mit C++, Pearson Studium, 2010 Stephen Prata, C++ Primer Plus, Sixth Edition, Addison Wesley, 2012 Andrew Koenig and Barbara E. Moo: Accelerated C++, Addison-Wesley, 2000. | ||||

252-0846-AAL | Computer Science II Enrolment ONLY for MSc students with a decree declaring this course unit as an additional admission requirement. Any other students (e.g. incoming exchange students, doctoral students) CANNOT enrol for this course unit. | 4 credits | 9R | F. Friedrich Wicker, R. Sasse | |

Abstract | This course provides the foundations of programming and working with data. Computer Science II particularly stresses code efficiency and provides the basis for understanding, design, and analysis of algorithms and data structures. In terms of working with data, foundations required for understanding experimental data and notation and basic concepts for machine learning are covered. | ||||

Learning objective | Based on the knowledge covered by the lecture Computer Science I, the primary educational objective of this course is the constructive knowledge of data structures and algorithms. After successfully attending the course, students have a good command of the mechanisms to construct a program in Python and to work with multidimensional data using Python libraries. Students particularly understand how an algorithmic problem can be solved with a sufficiently efficient computer program. Secondary educational objectives are formal thinking, the power of abstraction, and appropriate modeling capabilities. | ||||

Content | Introduction of Python: from Java to Python, advanced concepts and built-in data structures in Python; parsing data, operating on data using Numpy and visualization using Matplotlib; linear regression, classification and (k-means) clustering, mathematical tools for the analysis of algorithms (asymptotic function growth, recurrence equations, recurrence trees), classical algorithmic problems (searching, selection and sorting), design paradigms for the development of algorithms (divide-and-conquer and dynamic programming), data structures for different purposes (linked lists, trees, heaps, hash-tables). The relationship and tight coupling between algorithms and data structures is illustrated with graph algorithms (traversals, topological sort, closure, shortest paths). In general, the concepts provided in the course are motivated and illustrated with practically relevant algorithms and applications. Exercises are carried out in Code-Expert, an online IDE and exercise management system. Programming language used in this course is Python. | ||||

Lecture notes | The slides will be available for download on the course home page. | ||||

Literature | T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms , 3rd ed., MIT Press, 2009 | ||||

Prerequisites / Notice | Preliminaries: course 252-0845 Computer Science or equivalent knowledge in programming. | ||||

252-0846-00L | Computer Science II | 4 credits | 2V + 2U | F. Friedrich Wicker, R. Sasse | |

Abstract | This course provides the foundations of programming and working with data. Computer Science II particularly stresses code efficiency and provides the basis for understanding, design, and analysis of algorithms and data structures. In terms of working with data, foundations required for understanding experimental data and notation and basic concepts for machine learning are covered. | ||||

Learning objective | Based on the knowledge covered by the lecture Computer Science I, the primary educational objective of this course is the constructive knowledge of data structures and algorithms. After successfully attending the course, students have a good command of the mechanisms to construct a program in Python and to work with multidimensional data using Python libraries. Students particularly understand how an algorithmic problem can be solved with a sufficiently efficient computer program. Secondary educational objectives are formal thinking, the power of abstraction, and appropriate modeling capabilities. | ||||

Content | Introduction of Python: from Java to Python, advanced concepts and built-in data structures in Python; parsing data, operating on data using Numpy and visualization using Matplotlib; linear regression, classification and (k-means) clustering, mathematical tools for the analysis of algorithms (asymptotic function growth, recurrence equations, recurrence trees), classical algorithmic problems (searching, selection and sorting), design paradigms for the development of algorithms (divide-and-conquer and dynamic programming), data structures for different purposes (linked lists, trees, heaps, hash-tables). The relationship and tight coupling between algorithms and data structures is illustrated with graph algorithms (traversals, topological sort, closure, shortest paths). In general, the concepts provided in the course are motivated and illustrated with practically relevant algorithms and applications. Exercises are carried out in Code-Expert, an online IDE and exercise management system. Programming language used in this course is Python. | ||||

Lecture notes | The slides will be available for download on the course home page. | ||||

Literature | T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms , 3rd ed., MIT Press, 2009 | ||||

Prerequisites / Notice | Preliminaries: course 252-0845 Computer Science or equivalent knowledge in programming. All required mathematical tools above high school level are covered, including a basic introduction to graph theory. | ||||

252-0848-00L | Computer Science I | 4 credits | 2V + 2U | M. Schwerhoff, R. Sasse | |

Abstract | The course covers the fundamental concepts of computer programming with a focus on systematic algorithmic problem solving. Taught language is C++. No programming experience is required. | ||||

Learning objective | Primary educational objective is to learn programming with C++. When successfully attended the course, students have a good command of the mechanisms to construct a program. They know the fundamental control and data structures and understand how an algorithmic problem is mapped to a computer program. They have an idea of what happens "behind the scenes" when a program is translated and executed. Secondary goals are an algorithmic computational thinking, understanding the possibilities and limits of programming and to impart the way of thinking of a computer scientist. | ||||

Content | The course covers fundamental data types, expressions and statements, (Limits of) computer arithmetic, control statements, functions, arrays, structural types and pointers. The part on object orientation deals with classes, inheritance and polymorphy, simple dynamic data types are introduced as examples. In general, the concepts provided in the course are motivated and illustrated with algorithms and applications. | ||||

Lecture notes | A script written in English will be provided during the semester. The script and slides will be made available for download on the course web page. | ||||

Literature | Bjarne Stroustrup: Einführung in die Programmierung mit C++, Pearson Studium, 2010 Stephen Prata, C++ Primer Plus, Sixth Edition, Addison Wesley, 2012 Andrew Koenig and Barbara E. Moo: Accelerated C++, Addison-Wesley, 2000. | ||||

252-0861-00L | Engineering Tool: Introduction to C++ Programming The Engineering Tool-courses are for MAVT Bachelor’s degree students only. | 0.4 credits | 1K | R. Sasse | |

Abstract | The event provides an introduction to programming in C++ by means of an interactive tutorial. | ||||

Learning objective | Build up an understanding of basic concepts of imperative programming. Reading and writing of first simple programs. | ||||

Content | In this course we will gently introduce you to the basics of computer programming. To program a computer means to give it a sequence of commands (a computer program) so that it exactly does what you want it to do. | ||||

Prerequisites / Notice | Belegung der Lerneinheit nur möglich, wenn das Programmierprojekt bearbeitet und abgegeben wird. Wird im Falle einer Belegung das Programmierprojekt nicht abgegeben, so wird die Lerneinheit als nicht bestanden bewertet («Abbruch»). | ||||

263-4600-00L | Formal Methods for Information Security | 5 credits | 2V + 1U + 1A | S. Krstic, R. Sasse, C. Sprenger | |

Abstract | The course focuses on formal methods for the modeling and analysis of security protocols for critical systems, ranging from authentication protocols for network security to electronic voting protocols and online banking. In addition, we will also introduce the notions of non-interference and runtime monitoring. | ||||

Learning objective | The students will learn the key ideas and theoretical foundations of formal modeling and analysis of security protocols. The students will complement their theoretical knowledge by solving practical exercises, completing a small project, and using state-of-the-art tools. The students also learn the fundamentals of non-interference and runtime monitoring. | ||||

Content | The course treats formal methods mainly for the modeling and analysis of security protocols. Cryptographic protocols (such as SSL/TLS, SSH, Kerberos, SAML single-sign on, and IPSec) form the basis for secure communication and business processes. Numerous attacks on published protocols show that the design of cryptographic protocols is extremely error-prone. A rigorous analysis of these protocols is therefore indispensable, and manual analysis is insufficient. The lectures cover the theoretical basis for the (tool-supported) formal modeling and analysis of such protocols. Specifically, we discuss their operational semantics, the formalization of security properties, and techniques and algorithms for their verification. The second part of this course will cover a selection of advanced topics in security protocols such as abstraction techniques for efficient verification, secure communication with humans, the link between symbolic protocol models and cryptographic models as well as RFID protocols (a staple of the Internet of Things) and electronic voting protocols, including the relevant privacy properties. Moreover, we will give an introduction to two additional topics: non-interference as a general notion of secure systems, both from a semantic and a programming language perspective (type system), and runtime verification/monitoring to detect violations of security policies expressed as trace properties. |