Distributed Computing
ETH Zurich

Computer Engineering 2 (Technische Informatik 2) (FS 2019)

Computers come in all shapes and sizes: servers, laptops, tablets, smartphones, smartwatches, all the way down to that tiny microcontroller in a washing machine. People buy a computer because (i) it gives them access to the Internet, (ii) it provides storage, and probably also because (iii) it computes. While having network access seems to be vital, advanced storage and computing capabilities more and more move to designated servers ("the cloud"). In this lecture, we learn how computers provide networking, storage, and computation by means of an operating system.

We start out with networking, and discuss the internet protocol, addressing, routing, transport layer protocols, flows, some representative application layer protocols, and how to implement these with sockets. We also discuss the link and physical layer, Markov chains and PageRank, and selected topics in security. Regarding storage, we talk about file systems, the memory hierarchy, caching, efficient data structures such as hashing, and data base principles. Concerning computation, we discuss the virtualization of the processing units with processes and threads. We focus on concurrency and examine scheduling, locking, synchronization, mutual exclusion, deadlocks, and consistency.

The lecture will use various teaching paradigms. All lectures will be based on blackboard discussions, supported by a script. Where appropriate we will also use demonstrations. The lecture will feature weekly paper exercises.

Some of the course material is best learned in front of an actual computer. In addition to the lecture we offer exciting hands-on exercises in a lab environment. Please check the lab website for details.

Course languages: German (lecture, exam), English (materials).

Lecture by Roger Wattenhofer, Thursday 10-12 @ ETF C 1 ETF E 1. The lectures get recorded and published password protected on the ETH video portal.

Exercises organized by Simon Tanner, Friday 16-18 or Tuesday 10-12. You can sign up for an exercise slot on echo. The first exercise session will be on Friday, 01. March 2019.

DateRoomTA
Fri 16-18ETZ F 91Manuel Madlener
Fri 16-18ETZ J 91Tobias Margiani
Tue 10-12CHN D 48Nathanael Köhler
Tue 10-12ML J 34.1Leo Merholz
Tue 10-12ETZ F 91Silvia Ritsch
Tue 10-12ETZ J 91Tobias Margiani
Tue 10-12ETZ K 91Noah Zarro
For some of the exercises you need access to a Linux terminal. On Windows 10 you can install the Ubuntu terminal. On other operating systems you can create a virtual machine with VirtualBox with an Ubuntu image.


News

Excluded content


Exam

The exam will take place on Friday, 23rd of August 2019, 09:00-10:30. The exam will be in German, you are allowed to answer in German or English.

You are allowed to bring any written material you like (script, books, personal notes,...) to the exam, but no electronic devices whatsoever (no calculator, phone, laptop,...).

Some examples of old exams: FS 16 mock exam (no solutions provided), FS 16 first exam, FS 16 second exam, FS 17 first exam, FS 17 second exam, FS 18 first exam, FS 18 second exam.

How we compose exams: exam question guidelines


Lecture material single chapters

Title Lecture Notes Exercises Responsible Assistant Additional Material
Preface
2019/02/21
PDF 1:1
PDF 2:1
Chapter 1
Introduction
2019/02/21
PDF 1:1
PDF 2:1
Shell Basics
Chapter 2
Network Layer & Routing
2019/02/28
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Damian Pascual Ortiz
Recap Slides
Chapter 3
Transport Layer & Flows
2019/03/07
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Damian Pascual Ortiz
Recap Slides
Chapter 4
Application Layer & Sockets
2019/03/14
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Tejaswi Nadahalli
Recap Slides
Chapter 5
Link & Physical Layers
2019/03/21
PDF 1:1
PDF 2:1
Exercises,
Solutions
Tejaswi Nadahalli
Recap Slides
Chapter 6
Storage & File Systems
2019/03/28
PDF 1:1
PDF 2:1
Exercises,
Solutions
Pankaj Khanchandani
Recap Slides
Chapter 7
Databases & SQL
2019/04/04
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Pál András Papp
Recap Slides
Chapter 8
Dictionaries & Hashing
2019/04/11
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Georgia Avarikioti
Recap Slides
Chapter 9
Processes & Concurrency
2019/04/18
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Yuyi Wang
Recap Slides
Chapter 10
Locks & Contention
2019/05/02
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Jakub Sliwinski
[AMP Chapter 7] part 1 of the script
[AMP Chapter 9] part 2 of the script
Recap Slides
Chapter 11
Markov Chains & PageRank
2019/05/09
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Tejaswi Nadahalli
Recap Slides
Chapter 12
Security & Cryptography
2019/05/16
PDF 1:1
PDF 2:1
Exercises, Quiz
Solutions
Jakub Sliwinski
Recap Slides
Chapter 13
Q&A
2019/05/23

References

All references are accessible from within the ETH-network; OSTEP is accessible from everywhere.

[OSTEP] Operating Systems: Three Easy Pieces
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
Arpaci-Dusseau Books
[OSYS] Operating System Concepts, 8th Edition
Abraham Silberschatz, Peter Baer Galvin, Greg Gagne.
John Wiley & Sons, 2008, ISBN 978-0-470-12872-5
[APUE] Advanced Programming in the UNIX® Environment, Third Edition
W. Richard Stevens, Stephen A. Rago.
Addison-Wesley Professional, 2013, ISBN 978-0-321-63773-4
[AMP] The Art of Multiprocessor Programming
Maurice Herlihy, Nir Shavit.
Elsevier/Morgan Kaufmann, 2008, ISBN 978-0-12-370591-4