Systems Programming and Computer Architecture - Fall 2018

What's new?

16.10.2018: We have just added more traces to the malloclab-handout.tar. Please re-downloaded the template.

3.10.2018: Due to a conference, next Tuesday, 9th of October, the lectures is cancelled. On Wednesday, 10th of October, there will be guest lecture (during the usual time) by Frank McSherry on Rust. Also, the exercise session on Wednesday afternoon will take place.

25.09.2018: If you are solving the datalab with LLVM, for instance on Mac OS X, you will probably run into a bug with the fitsBits. We published a fixed version of the datalab handout. In any case, if you submit your solution to the judge, it will be correctly evaluated.

18.09.2018: Jakub Golinowski's exercise session was wrongly listed as English / German, but it is English only. If you prefer a "en/de" exercise session, you can still change in echo.ethz.ch



Overview

This course introduces the fundamental concepts, mechanisms, and techniques that underpin how computer systems process information, execute programs, and interact with the outside world. We focus on computing immediately above and below the boundary between hardware and software, and expose students to the practical issues that affect performance, portability, robustness, and extensibility through assembly language, the C programming language, and computer hardware from the perspective of systems software.

Topics include:

  • Representing information in computer systems
  • Systems programming in C
  • Assembly language and compiled code
  • Sequential, pipelined, and multicore processor design
  • Caches and the memory hierarchy
  • Performance optimization and performance measurement
  • Devices, I/O, traps, and DMA
  • Memory management

Main Text and Reference books

  • R. Bryant, D. O'Hallaron: Computer Systems: A Programmer's Perspective, 2nd ed. 2002, Prentice Hall.
  • B. Kernighan, D. Ritchie: C Programming Language, 2nd ed. 1988, Prentice Hall.

Recommended Text and Reference books

  • D. Patterson, J. Hennessy: Computer Organization and Design, 4nd ed. 2008, Morgan Kaufmann.
  • S. Harbison, G. Steele: C: A Reference Manual, 5nd ed. 1994, Prentice Hall.
  • S. Oualline: Practical C Programming, 1997, O'Reilly.
  • S. Prata: C Primer Plus, 2004, Sams.
  • U Kirch-Prinz, P. Prinz: C Pocket Reference, 2002, O'Reilly.
  • Intel publishes a lot of material covering the IA-32 processors. The official web site for IA-32 and Intel 64 documentation is here.

 

Lecturer

Staff

Hilfsassistenten

  • Patrick Ziegler (zieglerp at student.ethz.ch)
  • Samuel Sadok (sasamuel at student.ethz.ch)
  • Jakub Golinowski (jakubg at student.ethz.ch)
  • Laurin Paech (lpaech at student.ethz.ch)

Course Hours

Lecture

  • Tue 10-12h, HG G 5
  • Wed 10-12h, NO C 60

Exercise

Time Room Language TA
Wed 13-15 CHN D 42 en / de Zaheer Chotia
Wed 13-15 CHN G 22 en John Liagouris
Wed 13-15 ETZ F 91 en / de Reto Achermann
Wed 13-15 ETZ G 91 en / de Patrick Ziegler
Wed 13-15 HG D 3.3 en / de Samuel Sadok
Wed 13-15 LEE D 105 en Jakub Golinowski
Wed 13-15 ML H 34.3 en / de Laurin Paech