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).
|Fri 16-18||ETZ F 91||Manuel Madlener|
|Fri 16-18||ETZ J 91||Tobias Margiani|
|Tue 10-12||CHN D 48||Nathanael Köhler|
|Tue 10-12||ML J 34.1||Leo Merholz|
|Tue 10-12||ETZ F 91||Silvia Ritsch|
|Tue 10-12||ETZ J 91||Tobias Margiani|
|Tue 10-12||ETZ K 91||Noah Zarro|
- For Chapter 10, two additional pages about efficient linked lists have been added to the lecture notes.
- Chapter 1: No need to know the history of operating systems (Section 2.6)
- Chapter 7: The code pieces of Algorithms 7.27 ‒ 7.30 were not covered.
- Chapter 9: Section 9.7 was covered only superficially (only the concept of Monitors, not the examples).
- Chapter 10: Section 7.6 was only covered in terms of the general idea (described in the first three paragraphs of Section 7.6). Section 9.2 was not covered.
- Chapter 11: The lecture did neither cover "cover time" and Lemma 11.25 nor the proofs of Lemmas 11.11 and 11.15.
- Chapter 12: The lecture did neither cover items 12.18 ‒ 12.20 nor items 12.39 ‒ 12.42.
- That's it, everything else is assumed to be known in the 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
Operating Systems: Three Easy Pieces
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
Operating System Concepts, 8th Edition
Abraham Silberschatz, Peter Baer Galvin, Greg Gagne.
John Wiley & Sons, 2008, ISBN 978-0-470-12872-5
Advanced Programming in the UNIX® Environment, Third Edition
W. Richard Stevens, Stephen A. Rago.
Addison-Wesley Professional, 2013, ISBN 978-0-321-63773-4
The Art of Multiprocessor Programming
Maurice Herlihy, Nir Shavit.
Elsevier/Morgan Kaufmann, 2008, ISBN 978-0-12-370591-4