Name | Prof. em. Dr. Thomas Gross |
Field | Informatik |
Address | Lehre D-INFK ETH Zürich, CAB H 69.2 Universitätstrasse 6 8092 Zürich SWITZERLAND |
Telephone | +41 44 632 73 42 |
thomas.gross@inf.ethz.ch | |
Department | Computer Science |
Relationship | Professor emeritus |
Number | Title | ECTS | Hours | Lecturers | |
---|---|---|---|---|---|
252-0027-00L | Introduction to Programming | 7 credits | 4V + 2U | T. Gross | |
Abstract | Introduction to fundamental concepts of modern programming and operational skills for developing high-quality programs, including large programs as in industry. The course introduces software engineering principles with an object-oriented approach based. | ||||
Objective | Many people can write programs. The "Introduction to Programming" course goes beyond that basic goal: it teaches the fundamental concepts and skills necessary to perform programming at a professional level. As a result of successfully completing the course, students master the fundamental control structures, data structures, reasoning patterns and programming language mechanisms characterizing modern programming, as well as the fundamental rules of producing high-quality software. They have the necessary programming background for later courses introducing programming skills in specialized application areas. | ||||
Content | Basics of object-oriented programming. Objects and classes. Pre- and postconditions, class invariants, Design by Contract. Fundamental control structures. Assignment and References. Basic hardware concepts. Fundamental data structures and algorithms. Recursion. Inheritance and interfaces, introduction to event-driven design and concurrent programming. Basic concepts of Software Engineering such as the software process, specification and documentation, reuse and quality assurance. | ||||
Lecture notes | The lecture slides are available for download on the course page. | ||||
Literature | See the course page for up-to-date information. | ||||
Prerequisites / Notice | There are no special prerequisites. Students are expected to enroll in the other courses offered to first-year students of computer science. | ||||
252-0210-00L | Compiler Design Does not take place this semester. The course unit will be offered again in the spring semester 2017. | 8 credits | 4V + 3U | T. Gross | |
Abstract | This course uses compilers as example to expose modern software development techniques. Compiler organization. Lexical analysis. Top-down parsing via recursive descent, table-driven parsers, bottom-up parsing. Symboltables, semantic checking. Code generation for a simple RISC machine: conditionals, loops, procedure calls, simple register allocation techniques. | ||||
Objective | Learn principles of compiler design, gain practical experience designing and implementing a medium-scale software system. | ||||
Content | This course uses compilers as example to expose modern software development techniques. The course introduces the students to the fundamentals of compiler construction. Students will implement a simple yet complete compiler for an object-oriented programming language for a realistic target machine. Students will learn the use of appropriate tools (parser generators); the implementation language is Java. Throughout the course, students learn to apply their knowledge of theory (automata, grammars, stack machines, program transformation) and well-known programming techniques (module definitions, design patterns, frameworks, software reuse) in a software project. Specific topics: Compiler organization. Lexical analysis. Top-down parsing via recursive descent, table-driven parsers, bottom-up parsing. Symboltables, semantic checking. Code generation for a simple RISC machine: expression evaluation, straight line code, conditionals, loops, procedure calls, simple register allocation techniques. Storage allocation on the stack, parameter passing, runtime storage management, heaps. Special topics as time permits: introduction to global dataflow and its application to register allocation, instruction scheduling. | ||||
Literature | Aho/Lam/Sethi/Ullmann, Compilers - Principles, Techniques, and Tools (2nd Edition) Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997 | ||||
Prerequisites / Notice | Prerequisites: Prior exposure to modern techniques for program construction, knowledge of at least one processor architecture at the assembly language level. | ||||
252-0912-00L | Experimental Computer Systems Only for Ph.D. students at the Institute of Computer Systems. All other students need the approval by the lecturer. | 2 credits | 2S | T. Gross | |
Abstract | 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. | ||||
Objective | Learn how to formulate a research project, how to conduct research and how to improve presentation skills in an academic setting. | ||||
Content | 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. | ||||
Lecture notes | Supporting material will be distributed during the seminar. | ||||
Prerequisites / Notice | Credit will be given only to those who present a paper/project. No credit for "attendance". |