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-2810-00L | Advanced Compiler Design Findet dieses Semester nicht statt. | 7 KP | 3V + 2U + 1A | 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. |