Systems Programming and Computer Architecture - Fall 2012

What's new?

  • Dec. 17: Slides for Lectures 25&26 are up.
  • Dec. 13: Assignment 11 is up.
  • Dec. 10: Slides for Lectures 23&24 are up.
  • Dec. 4: Sample solutions for Assignments 6 & 7 are up.
  • Nov. 26: Slides for Lecture 19&20 are up
  • Nov. 22: Assignment 8 is up.
  • Nov. 19: Slides for Lecture 17&18 are up.
  • Nov. 15: Assignment 7 is up.
  • Nov. 14: Sample solutions for Assignments 4 & 5 are up.

Schedule

Week no. Lecture no. Lecture date Lecture topic Book (2nd ed.)
chapter
1 1 Tue 18 Sep Intro, admin, bit, bytes:
1up-pdf, 6up-pdf
2.1
2 Wed 19 Sep Integer arithmetic:
1up-pdf, 6up-pdf
2.2-2.3
2 3 Tue 25 Sep Floating Point:
1up-pdf, 6up-pdf
2.4-2.5
4 Wed 26 Sep Machine Basics:
1up-pdf, 6up-pdf
3.1 - 3.4, 3.13
3 5 Tue 2 Oct. More machine operations:
1up-pdf, 6up-pdf
3.5
6 Wed 3 Oct. Control transfer:
1up-pdf, 6up-pdf
3.6
5 7 Tue 16 Oct. More procedures; array access:
1up-pdf, 6up-pdf
3.7 
8 Wed 17 Oct. Structures, alignment, floats:
1up-pdf, 6up-pdf
3.8-3.9 
6 9 Tue 23 Oct. Memory layout:
1up-pdf, 6up-pdf
3.12, 5.1-5.11
10 Wed 24 Oct. Advanced C:
1up-pdf, 6up-pdf
 
7 11 Tue 30 Oct. Sequential processor design
1up-pdf, 6up-pdf
4.2 - 4.3
12 Wed 31 Oct. Pipelined processor design #1
1up-pdf, 6up-pdf
4.3 - 4.4
8 13 Tue 6 Nov. Pipelined processor design #2
1up-pdf, 6up-pdf
4.5 - 4.6
14 Wed 7 Nov. Optimization
1up-pdf, 6up-pdf
5.6 - 5.11
9 15 Tue 13 Nov. Caches and Optimization
1up-pdf, 6up-pdf
6.2 - 6.6
16 Wed 14 Nov. Linking
1up-pdf, 6up-pdf
6.6, 7.1-7.14
10 17 Tue 20 Nov. Exceptions
1up-pdf, 6up-pdf
8.1
18 Wed 21 Nov. Virtual memory I
1up-pdf, 6up-pdf
9.1-9.5
11 19 Tue 27 Nov. Virtual memory II
1up-pdf, 6up-pdf
9.6-.97
20 Wed 28 Nov. Devices
1up-pdf, 6up-pdf
no book material
ns16550 data sheet
12 21 Tue 4 Dec. Memory allocation I
1up-pdf, 6up-pdf
9.9
22 Wed 5 Dec. Memory allocation II
1up-pdf, 6up-pdf
9.10 - 9.11
13 23 Tue 11 Dec. More Devices
1up-pdf, 6up-pdf
no book material
21140A data sheet
24 Wed 12 Dec. Multiprocessing
1up-pdf, 6up-pdf
no book material
14 25 Tue 18 Dec. Synchronization primitives
1up-pdf, 6up-pdf
no book material
26 Wed 19 Dec. Multiprocessing II
1up-pdf, 6up-pdf
no book material

Assignments

Solutions (password protected)

Week no. Date Topic Material
1 20 Sept. C Introduction Part I C Tutorial I
Unix Tutorial
2 27 Sept. C Intro Part II and Assignment1
3 & 4 4 Oct. Assembly
5 18 Oct. Bomblab and Assembly (cont.) 
6 25 Oct. Programming in C
7 1 Nov. Sequential Processor Architecture
8 8 Nov. Pipelined Processor Architecture
9 15 Nov.  Performance measurement and optimization  assignment7.pdf   a7_handout.tar.gz
10 22 Nov. Linking  assignment8.pdf 
11 29 Nov. Virtual memory  assignment9.pdf 
12 6 Dec. Page table programming  assignment10.pdf   handout_a10.tgz
13 13 Dec. Memory management  assignment11.pdf
14 20 Dec. Q & A   

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.

Additional Material

Lecturer

Staff

Hilfsassistenten

  • Antoine Kaufmann (antoinek at student) (DE)
  • Daniel Jost (dajost at student) (DE)
  • Michael Och (ochm at student) (DE)

Course Hours

Lecture

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

Exercise

  • Thu, 13-15h, CHN G 46
  • Thu, 13-15h, IFW A 32.1
  • Thu, 13-15h, IFW C 33
  • Thu, 13-15h, LFW C 1
  • Thu, 13-15h, ML J 34.1

Exercise Groups

Group 1(En): LFW C 1 (Ercan & Qin)

Adrian Wasim Spurr Anton Markaj Tobias Florian Verhulst
Pascal Silvio Magnus Widmer Julian Karl Fuchs Samuel Marco Ueltschi
Nico Michael Kurmann Seraiah Walter Patrice Damian Marti
Severin Lukas Münger Kieran James Nirkko Yassin Nasir Hassan
Jonas Tobias Kuratli Jonas Passerini Karl Wüst
Jonathan Daniel Rosenthal Jonathan Johannes Maurer Benjamin Weber
Urs Florian Müller Priska Elide Pietra Abhimanyu Patel
Thomas Philip Hall David Dan Chettrit Jonas Waeber

Group 2(En): IFW A 32.1 (Stefan & Simon)

Marko Pichler Trauber Nicolas Sebastian Kick Mattia Guglielmo Gollub
Jannick Marc Griner Mrigya Agarwal Lukas Bischofberger
Daniel David Schwyn Michael Oliver Travella David Wesono Niggli
Daniel James Luginbühl Madelin Schumacher Marc André Tanner
Mathias Jostock Marcel Nicolas Geppert Samuel Schmid
Joshua David Raphael Schneider Jeffrey Tom Bhamornsiri Hermann Paul Amadeus Schweizer
Niklas Peter Hofmann Jonas Stulz Miriam Tschanen
Nadja Stephanie Müller Mohanarajah Gajamohan Pascal Roos

Group 3(De): CHN G 46 (Antoine)

Sandro Valerio Lombardi Dominik Kovacs Julian Henry Loss
Andreas Blöchliger Rijad Nuridini Damian Gruber
Sébastien Santschi Andreas Erich Allenspach Rafael Patrick Häuselmann
Michel Keller Milan Roman Bombsch Peyman Khodadust Gamechi
Stefan Morgenthaler Andreas Vinzenz Knecht Stefan Blumer
Raffaele Lucio Meyer Tizian Lucien Zeltner Claude Remo Schwyn
Isabelle Renée Rösch Christian Cadruvi Arthur Siegfried Kurath
Claudio Anliker Andreas Albrecht  

Group 4(De): IFW C 33 (Daniel)

Andreas Michael Buob Severin Matieu Läubli Jonas Krucher
Gabriel Leuenberger Marius Paul Gisler Marc Gähwiler
Alexander Nicolas Meier Simon Josef Fritsche Leonhard Markus Helminger
Lukas Häfliger Christoph Heinz Stillhard Christian Pascal Vonrüti
Alexander Viand Alexandra Maximova Gregori Wegberg
Benjamin Simon Steger Matthias Gerber Philipp Gamper
Fabian Werner Rudolf Tino Matthias Burri Cyril Pascal Steimer
Florian Claudius Sebastian Jacky Jonas Sebastian Maurer Marek Arnold

Group 5(De): ML J 34.1 (Michael)

Samuel Damian Oberholzer Tobias Grob Silvan Clemens Egli
Ruben Emanuel Wohlgenannt Thomas Müller Fabian Stutz
Sandro Cornelio Huber Roman Andreas Willi Lukas David Widmer
Jessica Patricia Falk Tatjana Brülisauer Cédric Manuel Bürke
Manuela Fischer Nico Previtali Robin Guldener
Andrea Regula Schüpfer Manuel Pascal Schürch Michael Jan Franz
Nicolas Benjamin Forster Dejan Mircic Michael Andreas Giger
Jan Milan Deriu Christian Felix Hagedorn Kevin Joël Kipfer
Tim Taubner