## Malte Schwerhoff: Catalogue data in Spring Semester 2022 |

Name | Dr. Malte Schwerhoff |

Address | Dep. Informatik ETH Zürich, CAB H 31.2 Universitätstrasse 6 8092 Zürich SWITZERLAND |

Telephone | +41 44 632 21 08 |

malte.schwerhoff@inf.ethz.ch | |

Department | Computer Science |

Relationship | Lecturer |

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

252-0216-00L | Rigorous Software Engineering | 8 credits | 4V + 2U + 1A | M. Schwerhoff, M. Vechev | |

Abstract | The course provides an overview of techniques to build correct software, with a strong focus on testing and program analysis. | ||||

Learning objective | The course has two main objectives: - Understand the core techniques for building correct software. - Understand how to apply these techniques in practice. | ||||

Content | The course presents an overview of techniques to build correct software, including: - Code documentation - Modularity and coupling (Design patterns) - Dynamic program analysis (Testing, fuzzing, concolic execution) - Static program analysis (Numerical abstract interpretation, pointer analysis, symbolic execution) - Formal modeling (Alloy) In addition, students apply the learned techniques to solve a group project in the area of program analysis. | ||||

Literature | Will be announced in the lecture. | ||||

252-0232-AAL | Software Engineering 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. | 6 credits | 13R | F. Friedrich Wicker, M. Schwerhoff | |

Abstract | This course introduces both theoretical and applied aspects of software engineering. It covers: - Software Architecture - Informal and formal Modeling - Design Patterns - Software Engineering Principles - Code Refactoring - Program Testing | ||||

Learning objective | The course has two main objectives: - Obtain an end-to-end (both, theoretical and practical) understanding of the core techniques used for building quality software. - Be able to apply these techniques in practice. | ||||

Content | While the lecture will provide the theoretical foundations for the various aspects of software engineering, the students will apply those techniques in project work that will span over the whole semester - involving all aspects of software engineering, from understanding requirements over design and implementation to deployment and change requests. | ||||

Literature | Will be announced in the lecture | ||||

252-0232-00L | Software Engineering | 6 credits | 2V + 1U | F. Friedrich Wicker, M. Schwerhoff, H. Lehner | |

Abstract | This course introduces both theoretical and applied aspects of software engineering. It covers: - Software Architecture - Informal and formal Modeling - Design Patterns - Software Engineering Principles - Code Refactoring - Program Testing | ||||

Learning objective | The course has two main objectives: - Obtain an end-to-end (both, theoretical and practical) understanding of the core techniques used for building quality software. - Be able to apply these techniques in practice. | ||||

Content | While the lecture will provide the theoretical foundations for the various aspects of software engineering, the students will apply those techniques in project work that will span over the whole semester - involving all aspects of software engineering, from understanding requirements over design and implementation to deployment and change requests. | ||||

Lecture notes | no lecture notes | ||||

Literature | Will be announced in the lecture | ||||

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-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-0856-AAL | Computer Science 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, 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++. After having 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 like 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 polymorphism; 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 | English lecture notes will be provided during the semester. The lecture notes and the lecture slides will be made available for download on the course web page. Exercises are solved and submitted online. | ||||

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 | ||||

Prerequisites / Notice | This virtual self-study course is also offered physically in the autumn semester. We recommend to visit the classes of the course 252-0856-00L (or that of the equivalent course 252-0847-00L). While the classes are only offered in German, there are English spoken Exercises. All exercises and exams are offered bilingual (German and English). | ||||

252-0862-00L | Engineering Tool: Modelling The Engineering Tool-courses are for MAVT Bachelor’s degree students only. | 0.4 credits | 1K | M. Schwerhoff | |

Abstract | This course provides an introduction to modelling, i.e. the representation of real-world entities and systems in computer programs. Basic modelling techniques will be introduced and illustrated, and students will apply these techniques in small projects, by modelling parts of systems such as a lift or a railway network. | ||||

Learning objective | Students develop an intuition for modelling the essential aspects of simple applications from their field. They learn how to transform such a model into a computer program. | ||||

Prerequisites / Notice | Lecture Series Informatik 252-0832-00L or equivalent knowledge in programming with C++. Engineering Tool: Advanced Programming with C++ is recommended, but not mandatory. Work on a programming project. Course can only be taken if the programming project is executed and submitted. If no solution to the programming project is submitted, the course is considered failed ("drop out"). |