High-Performance Systems and Networks (Winter 2016/17)
The lecture slides can be found linked below. You will need to log in using your university account to access them.
- 00: Introduction (last year's slides, but identical content)
- 10: Micro Optimization
- 20: Performance Evaluation
- 21: Performance Evaluation
- 30: Principles
- 40: Fast Servers
- 41: Control Overhead (Network Algorithmics Chapter 6)
- 42: Copying (Network Algorithmics Chapter 5)
- 43: Clocks & Timers (Network Algorithmics Chapter 7; Slides updated 2016-12-19)
- 44: Checksums (Network Algorithmics Chapter 9.2)
- 50: Fast Routers
- 51: Exact-Match Lookups (Network Algorithmics Chapter 10)
- 52: Prefix Matching (Network Algorithmics Chapter 11; Slides updated 2017-02-01)
- 53: Packet Classification, blackboard screenshots (Network Algorithmics Chapter 12; Slides updated 2017-02-13)
Starting with 40: Fast Servers, the primary source of information is the book Network Algorithmics. It is available in a hardcover version in the library, and as an online resource that can be read from the university network. The performance evaluation book, Performance evaluation of computer and communication systems, is available for free from the publisher, EPFL Press.
The exercise sheets will be published below shortly after the tutorial in which they will be introduced. They are usually due on the Sunday following their release at 23:59. Note that you will need to log in using your university account to access them.
- #0: Crash Course to C (uploaded 2016-10-25; due 2016-11-06)
- #1: How smart is your compiler?, ecc.c, ecc.S (uploaded 2016-11-08; due 2016-11-13)
- #2: Measuring Performance (uploaded 2016-11-15; due 2016-11-20)
- #3: Performing Experiments (uploaded 2016-11-23; due 2016-11-27)
- #4: Optimizing (uploaded 2016-11-30; due 2016-12-04)
- #5: Using Select (uploaded 2016-12-07; due 2016-12-11)
- #6: Timer Wheels, timers.zip, example hierarchical timing wheel implementation (uploaded 2016-12-13; due 2016-12-18)
- #7: Checksums (updated 2017-01-05; due 2017-01-08)
- #8: Questions (uploaded 2017-01-11; due 2017-01-15)
- #9: Simple Tries, 40-simple-tries.zip, example unitrie.c (uploaded 2017-01-18; updated 2017-01-20 to contain routes.txt as well; due 2017-01-22)
- #10: Multi-Bit Tries (uploaded 2017-01-25; due 2017-01-29)
- #11: Binary Search (uploaded 2017-02-01; 1.3 corrected 2017-02-03; due 2017-01-05)
- #12: Packet Classification (uploaded 2017-02-07; due 2017-02-12)
You can find the code for the practical exercises in your group's personal repository.
If you have any questions, please do not hesitate to contact me, preferably by coming to the office (Z809 – actually located where you think it should be, unlike G230).
- Exercise sheets have to be handed in by checking them into Git on or before Sunday, 23:59. Don't forget to push!
- For theoretical questions, the file format has to be PDF, plain text or markdown.
- You have to get ≥50% of the total points to be admitted to the exam.
- The tutorial is strongly recommended, but not compulsory.
- Please try to avoid generating compiler warnings in the practical exercises. These are almost always indicative of bad programming practices.
- Please back up your answers with evidence or derivations. This is not repeated in every question because it should be obvious.
Getting Started with C
There is an online C course that you can complete from the convenience of your browser. For the first exercise sheet, you should not have to go any further than the Pointers chapter, and maybe the Strings chapter is enough already. During the course of the exercises, we will need the constructs up to Dynamic allocation, and the Pointer Arithmetics chapter might be useful as well.
For an overview of the concepts themselves, Wikipedia has good articles on the Null-Terminated String concept used by C, as well as pointers in general. The article about C itself isn't very useful as far as learning C is concerned, but has one of the oldest Hello World programs ever written. If you need information on a particular aspect of C, it's also worth asking the search engine of your choice first. C has been around for >40 year; there is a lot of information about it out there.
For Git usage, please see the GitLab service description. This documentation contains the most important bits of information on Git, as well as pointers to a lot more information, including another online course. The service description, but not the materials linked there, is also available in German.
The following books have been recommended by students:
C: Programmieren von Anfang an
Taschenbuch – 1. Dezember 1999
von Helmut Erlenkötter
Taschenbuch: 320 Seiten
Verlag: rororo; Auflage: 22 (1. Dezember 1999)
If you know any other good books or materials for getting started with C, please let me know. These books are neither required reading nor are they known to be particularly good or bad. I do not generally read them before linking them here.