Systems Programming and Computer Architecture

What's new?

  • Jan 14: uploaded 64-bit version of assembly cheat sheet [pdf]
  • Dec 18: final assignment released (Writing a Device Driver); enjoy the holidays! :-)
  • Dec 13: assignment 12 released (Cache Coherence and Simulation)
  • Dec 4: assignment 11 released (Virtual Memory & Page Table Programming)
  • Nov 27: assignment 10 released (Optimizing Matrix Multiplication)
  • Nov 20: assignment 9 released (Performance Measurement and Optimization)
  • Nov 13: assignment 8 released (Floating Point)
  • Nov 6: assignment 7 released (Linking and Relocations)
  • Oct 30: assignment 6 released (Memory Management)
  • Oct 23: assignment 5 released (bomblab)
  • Link to solutions on "Course Materials" website
  • Oct 16: assignment 4 released
  • Oct 1: no lectures and exercise session next week
  • Oct 1: improved Prof solution for the datalab
  • Sep 25: assignment 2 released (C Programming)
  • Sep 18: assignment 1 released (datalab)

Course Materials


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

  • Claudio Föllmi (foellmic at student)
  • Kilian Risse (krisse at student)
  • Sebastian Wicki (swicki at student)

Course Hours

Lecture

  • Tue 10-12h, CAB G 61: Timothy (En)
  • Wed 10-12h, CAB G 61: Timothy (En)

Exercise

  • Thu, 13-15h, CHN D 42: Kilian Risse
  • Thu, 13-15h, CHN G 46: Sebastian Wicki
  • Thu, 13-15h, LEE C 104: Stefan Kaestle
  • Thu, 13-15h, LEE D 105: Simon Gerber
  • Thu, 13-15h, LFW C 1: Zaheer Chothia and Gerd Zellweger
  • Thu, 13-15h, ML J 34.1: Claudio Foellmi
  • Thu, 13-15h, ML J 37.1

Exercise Groups

Kilian Risse (CHN D 42)

Swe Geng Luca Gasparini Maurice Hoerold
Felix Wolf Kim Marbach Valentin Venzin
Reto Weber Jan Gilcher Thomas Leu
Julian Mueller Andreas Zingg Cornelia Noser
Ismaa'eel Ataullah    

Sebastian Wicki (CHN G 46)

Patrick Staeuble Conradin Roffler Julia Giger
Linard Arquint Maximilian Falkenstein Nicolas Truessel
Samuel Siebenmann Jan Veen Raphael Anderegg
Christian Schaepper Lukas Schaer Alexander Peiker
Mirko Kaufmann Fredrik Urby Andres Konrad
James Dermelj Pascal Wiesmann Fabian Ulbricht
Fabian Grob    

Stefan Kaestle (LEE C 104)

Christoph Lauper Mohammed Ajil Vincent Stettler
Markus Roth Elias Huwyler Sonja Menzi
Mauro Bamert Alain Denzler Patrick Huwiler
Timo Braem Sander Staal David Rohr
Felice Serena Luzi Sennhauser Jonathan Heitz
Yan Wang Jeremia Stalder Jonas Pfenninger
Samuel Sadok-Bouziane Nicolas Ochsner Daniel Maag
Julian Collazo Escareno    

Simon Gerber (LEE D 105)

Christoph Maurhofer Tobias Krebs Raphael Kuebler
Philipp Wirth Yoel Zweig Max Huettenmoser
Angela Rellstab Nicole Trachsler Lukas Roth
Nicole Thurnherr Nikolas Goebel Etienne de Stoutz
Sandro Marcon Matteo De Sabato Basile Maret
Arian Uruqi Tobias Ballat Katharina Daun
Severin Meier Livio Kaiser Arturas Lapinskas
Frederic Vogel Philipp Rimle Philip Junker

Zaheer Chothia and Gerd Zellweger (LFW C 1)

Filip Meier Sandra Duenki Timothy Zemp
Pascal Josephy Felix Rauchenstein Jonas Felber
Aurel Gruber Julia Badertscher Andrina Denzler
Ylli Muhadri Nicolas Mesot David Bimmler
Vincent von Rotz Valentin Trifonov Young Ban
Kevin Klein Florian Marending Omar Lone
Luca Lanzendoerfer Valentin Scherer Jonathan Gebrehgziabher
Jonathan Meier Mickey Vaenskae Simon Ringeisen
Olexiy Konkov Jan Eberhardt  Marc Fischer

Claudio Foellmi (ML J 34.1)

Michael Kurth Aryaman Fasciati Marco Crespi
Sibylle Jeker Luca Stalder Cedric Della Casa
Michael Schuerch Sandro Kalbermatter Yves Frank
Lukas Ernst Christian Bohn Fabian Murer
Samuel Dubler Francois Wirz Jodok Vieli
Lorenz Kuhn Simon Scherrer Emmanuel Hofmann
Dimitri Stanojevic Panuya Balasuntharam Sandro Meier
Linus Handschin Patrick Frei   Lukas Frischknecht