Instructors

Torsten Adrian
Torsten Hoefler Adrian Perrig

About this course

This course is intended as an introduction to both computer networking and operating systems for computer scientists. Students will get a comprehensive overview of the key protocols and the general architecture of the Internet, as one example of more general principles in network design, and acquire hands-on experience in programming different aspects of a computer network. In addition, the course provides a full introduction to modern operating system design, including memory management, scheduling, I/O, protection, and so on. The architecture of Unix-like operating systems (such as Linux) is used as an example of more general principles in OS design.

Basic Course Information

  • Course Number: 252-0062-00L, 8 Credits
  • Spring 2016, Lectures:
    Thu (08-10): CAB G 61
    Fri (10-12): CAB G 61
    Course Details
  • Exercise sessions:
    Tue (15-18): HG D 3.1 (Chris/Taeho), HG D 3.3 (Raphael; in German if desired)
    Thu (15-18): ML H 41.1 (David)
    Fri (13-16): CAB G 57 (David), CHN D 42 (Raphael; in German if desired)

Tentative schedule of lectures:

a
Week Thursday Friday
Operating Systems
0 25.02.: OS Introduction (slides_1pp) (slides_6pp) 26.02.: Processes (slides_1pp) (slides_6pp)
1 03.03.: Scheduling (slides_1pp) (slides_6pp) 04.03.: Synchronization (slides_1pp) (slides_6pp)
2 10.03.: Memory Management (slides_1pp) (slides_6pp) 11.03.: Demand Paging (slides 1pp) (slides 6pp)
3 17.03.: Filesystem Abstractions (slides_1pp) (slides_6pp) 18.03.: Filesystem Implementation (slides_1pp) (slides_6pp)
4 07.04.: IO (slides_1pp) (slides_6pp) 08.04.: IO (2) (slides_1pp) (slides_6pp)
5 14.04.: Virtual Machine Monitors (slides_1pp) (slides_6pp) 15.04.: Reliable Storage, NUMA & The Future (slides_1pp) (slides_6pp)
Networking
6 21.04.: Network Introduction, OSI model
(slides_1pp) (slides_6pp)
22.04.: Physical layer
(slides_1pp) (slides_6pp)
7 28.04.: Data Link Layer 1
(slides_1pp) (slides_6pp)
29.04.: Data Link Layer 2
(slides_1pp) (slides_6pp)
8 05.05.:

no class

06.05.: Data Link Layer (contd.)
9 12.05: Network Layer 1
(slides_1pp) (slides_6pp)
13.05: Network Layer 1 (contd.)
10 19.05: Network Layer 2
(slides_1pp) (slides_6pp)
20.05: Network Layer 2 (contd.)
1126.05: Transport Layer
(slides_1pp) (slides_6pp) (TCP summary_1pp)
(TCP summary_6pp)
27.05: Congestion Control
(slides_1pp) (slides_6pp)
12 02.06: Application Layer
(slides_1pp) (slides_6pp)
03.06: Application Layer (contd.)

Assignments

Ass. Out Description Solutions
Operating Systems
Assignment 1 1.3.2016 Introduction and Fork Solution
Assignment 2 thread.h.skeleton, thread-main.c 7.3.2016 Scheduling Solution
Assignment 3 15.3.2016 Memory Management Solution
Assignment 4 22.3.2016 Paging / Thrashing Solution
Assignment 5 12.4.2016 File Systems Solution
Networking
Assignment 6 / Project 1 28.4.2016 Solution
Assignment 7 4.5.2016 Solution
Assignment 8 12.5.2016 Solution
Assignment 9 (updated 24.05.2016) 19.5.2016 Solution
Assignment 10 27.5.2016 Solution
Assignment 11 31.5.2016 Solution

Note: The assignments must be handed in using Git (if you want to receive feedback). Create a new folder for each assignment. This tutorial explains how the hand-in procedure works in detail.

Sometimes, some of the TAs use slides in the recitation sessions. Ercan puts his slides here.

Projects

Project Out Description Source Slides
Project1 22. 4. 2016 Reliable Transport src Slides
Project2 30. 05. 2016 Dynamic Routing src Slides

Resources:

OS Networking

Contact Information

LecturerEmail
Torsten Hoeflerhtor at inf, CAB F 75
Adrian Perrig adrian.perrig at inf, CAB F 85.1
TAEmail
Timo Schneidertimos at inf.ethz.ch
Salvatore Di Girolamosalvatore.digirolamo at inf.ethz.ch
Ercan Ucanercan.ucan at inf.ethz.ch

Git tutorial here