Name | Prof. Dr. Peter Müller |
Field | Software Technology |
Address | Professur für Software Technology ETH Zürich, CAB H 84 Universitätstrasse 6 8092 Zürich SWITZERLAND |
Telephone | +41 44 632 28 68 |
peter.mueller@inf.ethz.ch | |
URL | http://www.pm.inf.ethz.ch |
Department | Computer Science |
Relationship | Full Professor |
Number | Title | ECTS | Hours | Lecturers | |
---|---|---|---|---|---|
252-0237-00L | Concepts of Object-Oriented Programming | 6 credits | 3V + 2U | P. Müller | |
Abstract | Course that focuses on an in-depth understanding of object-oriented programming and compares designs of object-oriented programming languages. Topics include different flavors of type systems, inheritance models, encapsulation in the presence of aliasing, object and class initialization, program correctness, reflection | ||||
Learning objective | After this course, students will: Have a deep understanding of advanced concepts of object-oriented programming and their support through various language features. Be able to understand language concepts on a semantic level and be able to compare and evaluate language designs. Be able to learn new languages more rapidly. Be aware of many subtle problems of object-oriented programming and know how to avoid them. | ||||
Content | The main goal of this course is to convey a deep understanding of the key concepts of sequential object-oriented programming and their support in different programming languages. This is achieved by studying how important challenges are addressed through language features and programming idioms. In particular, the course discusses alternative language designs by contrasting solutions in languages such as C++, C#, Eiffel, Java, Python, and Scala. The course also introduces novel ideas from research languages that may influence the design of future mainstream languages. The topics discussed in the course include among others: The pros and cons of different flavors of type systems (for instance, static vs. dynamic typing, nominal vs. structural, syntactic vs. behavioral typing) The key problems of single and multiple inheritance and how different languages address them Generic type systems, in particular, Java generics, C# generics, and C++ templates The situations in which object-oriented programming does not provide encapsulation, and how to avoid them The pitfalls of object initialization, exemplified by a research type system that prevents null pointer dereferencing How to maintain the consistency of data structures | ||||
Literature | Will be announced in the lecture. | ||||
Prerequisites / Notice | Prerequisites: Mastering at least one object-oriented programming language (this course will NOT provide an introduction to object-oriented programming); programming experience | ||||
263-2100-00L | Research Topics in Software Engineering Number of participants limited to 22. | 2 credits | 2S | P. Müller, T. Gross, M. Püschel, M. Vechev | |
Abstract | This seminar is an opportunity to become familiar with current research in software engineering and more generally with the methods and challenges of scientific research. | ||||
Learning objective | Each student will be asked to study some papers from the recent software engineering literature and review them. This is an exercise in critical review and analysis. Active participation is required (a presentation of a paper as well as participation in discussions). | ||||
Content | The aim of this seminar is to introduce students to recent research results in the area of programming languages and software engineering. To accomplish that, students will study and present research papers in the area as well as participate in paper discussions. The papers will span topics in both theory and practice, including papers on program verification, program analysis, testing, programming language design, and development tools. A particular focus will be on domain-specific languages. | ||||
Literature | The publications to be presented will be announced on the seminar home page at least one week before the first session. | ||||
Prerequisites / Notice | Organizational note: the seminar will meet only when there is a scheduled presentation. Please consult the seminar's home page for information. | ||||
264-5810-00L | Programming Languages Seminar | 2 credits | 2S | P. Müller, M. Vechev | |
Abstract | This graduate seminar provides doctoral students in computer science a chance to read and discuss current research papers. Enrollment requires permission of the instructors. Credit units are granted only to active participants. | ||||
Learning objective | Learn about current research results in the area of programming languages, static program analysis, program verification, and related areas; practice of scientific presentations. | ||||
Content | The seminar will explore different topics from a research perspective. | ||||
Lecture notes | Supporting material will be distributed during the seminar. | ||||
Prerequisites / Notice | The seminar is open to assistants of the Chair of Programming Methodology and the Software Reliability Lab (Department of Computer Science). Others should contact the instructors. |