Name | Herr Prof. em. Dr. Thomas Gross |
Lehrgebiet | Informatik |
Adresse | Lehre D-INFK ETH Zürich, CAB H 69.2 Universitätstrasse 6 8092 Zürich SWITZERLAND |
Telefon | +41 44 632 73 42 |
thomas.gross@inf.ethz.ch | |
Departement | Informatik |
Beziehung | Professor emeritus |
Nummer | Titel | ECTS | Umfang | Dozierende | |
---|---|---|---|---|---|
252-0027-00L | Einführung in die Programmierung | 7 KP | 4V + 2U | T. Gross | |
Kurzbeschreibung | Einführung in grundlegende Konzepte der modernen Programmierung. Vermittlung der Fähigkeit, Programme von höchster Qualität zu entwickeln. Einführung in Prinzipien des Software Engineering mit objekt-orientiertem Ansatz. | ||||
Lernziel | Viele Menschen können Programme schreiben. Die Ziele der Vorlesung "Einführung in die Programmierung" gehen aber darüber hinaus: sie lehrt die fundamentalen Konzepte und Fertigkeiten, die nötig sind, um professionelle Programme zu erstellen. Nach erfolgreichem Abschluss der Vorlesung beherrschen Studenten die fundamentalen Kontrollstrukturen, Datenstrukturen, die Verfahren zur Problemlösung und Mechanismen von Programmiersprachen, die die moderne Programmierung auszeichnen. Sie kennen die Grundregeln für die Produktion von Software in hoher Qualität. Sie haben die nötigen Vorkenntnisse für weiterführende Vorlesungen, die das Programmieren in spezialisierten Anwendungsgebieten vorstellen. | ||||
Inhalt | Grundlagen der objekt-orientierten Programmierung. Objekte und Klassen. Vor- und Nachbedingungen, Invarianten, Design by Contract. Elementare Kontrollstrukturen. Zuweisungen und Referenzierung. Grundbegriffe aus der Hardware. Elementare Datenstrukturen und Algorithmen. Rekursion. Vererbung und Interfaces, Einführung in Event-driven Design und Concurrent Programming. Grundkonzepte aus Software Engineering wie dem Softwareprozess, Spezifikation und Dokumentation, Reuse und Quality Assurance. | ||||
Skript | Die Vorlesungsfolien auf der Vorlesungswebseite zum Download zur Verfügung gestellt. | ||||
Literatur | Weitere Literaturangaben auf der Web Seite der Vorlesung. | ||||
Voraussetzungen / Besonderes | Die Vorlesung hat keine besonderen Voraussetzungen. Sie erwartet das gleichzeitige Belegen der anderen Informatik Vorlesungen des Basisjahres. | ||||
252-0912-00L | Experimental Computer Systems Für Post/Doktoranden im Institut für Computersysteme. Alle anderen brauchen Bewilligung des Dozenten. | 2 KP | 2S | T. Gross | |
Kurzbeschreibung | This graduate seminar provides doctoral students in computer science a chance to discuss their research. Enrollement requires permission of the instructor. Credit units are granted only to active participants. | ||||
Lernziel | Learn how to formulate a research project, how to conduct research and how to improve presentation skills in an academic setting. | ||||
Inhalt | The seminar will explore different topics from a research perspective. The seminar is open to assistants of the Department of Computer Science (Informatik), Computer Systems Institute. Others should contact the instructor. | ||||
Skript | Supporting material will be distributed during the seminar. | ||||
Voraussetzungen / Besonderes | Credit will be given only to those who present a paper/project. No credit for "attendance". | ||||
263-2100-00L | Research Topics in Software Engineering Maximale Teilnehmerzahl: 22 | 2 KP | 2S | P. Müller, T. Gross, M. Püschel, M. Vechev | |
Kurzbeschreibung | 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. | ||||
Lernziel | 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). | ||||
Inhalt | 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. | ||||
Literatur | The publications to be presented will be announced on the seminar home page at least one week before the first session. | ||||
Voraussetzungen / Besonderes | Organizational note: the seminar will meet only when there is a scheduled presentation. Please consult the seminar's home page for information. | ||||
263-2810-00L | Advanced Compiler Design | 7 KP | 3V + 2U + 1A | R. Eigenmann, T. Gross | |
Kurzbeschreibung | This course covers advanced topics in compiler design: SSA intermediate representation and its use in optimization, just-in-time compilation, profile-based compilation, exception handling in modern programming languages. | ||||
Lernziel | Understand translation of object-oriented programs, opportunities and difficulties in optimizing programs using state-of-the-art techniques (profile-based compilation, just-in-time compilation, runtime system interaction) | ||||
Inhalt | This course builds conceptually on Compiler Design (a basic class for advanced undergraduates), but this class is not a prerequisite. Students should however have a solid understanding of basic compiler technology. The focus is on handling the key features of modern object-oriented programs. We review implementations of single and multiple inheritance (incl. object layout, method dispatch) and optimization opportunities. Specific topics: intermediate representations (IR) for optimizing compilers, static single assignment (SSA) representation, constant folding, partial redundancy optimizations, profiling, profile-guided code generation. Special topics as time permits: debugging optimized code, multi-threading, data races, object races, memory consistency models, programming language design. Review of single inheritance, multiple inheritance, object layout, method dispatch, type analysis, type propagation and related topics. This course provides another opportunity to explore software design in a medium-scale software project. | ||||
Literatur | Aho/Lam/Sethi/Ullmann, Compilers - Principles, Techniques, and Tools (2nd Edition). In addition, papers as provided in the class. | ||||
Voraussetzungen / Besonderes | A basic course on compiler design is helpful but not mandatory. Student should have programming skills/experience to implement an optimizer (or significant parts of an optimizer) for a simple object-oriented language. The programming project is implemented using Java. |