Data Networks
Saarland University and International Max Planck Research School (IMPRS-CS)

Summer 2007


Final grades
The final grades and the summary of all project and exam grades can be found here.



Peter Druschel
Krishna Gummadi


Office hour: 11 AM - 12 PM, Tuesday, E1.4, 601
Office hour: 10 AM - 11 AM, Friday, E1.4, 609

Teaching Assistants:

Tim Benke
Marcel Dischinger
Minko Dudev
Massimiliano Marcon
Henning Peters


Tutorial hours: 11:00 AM - 01:00 PM, Monday, in E 1.4 021
Tutorial hours: 01:00 PM - 03:00 PM, Tuesday, in E 1.4 021
Tutorial hours: 11:00 AM - 01:00 PM, Wednesday, in E 1.4 021
Tutorial hours: 11:00 AM - 01:00 PM, Friday, in E 1.4 021
Tutorial hours: 11:00 AM - 01:00 PM, Thursday, in E 1.4 6th floor Rotunda


The class will meet on Mondays and Wednesdays between 2 P.M. and 4 P.M. in building E1.3, HS 002. The first lecture is on April 18 (Wednesday).

Lecture notes, course schedule, recommended readings, and assignments will be posted here.

Students are encouraged to meet the teaching staff during office hours for help with any questions or problems. Tutorials will be offered when needed.

Mailing Lists:

<>: includes everyone involved with the course, the teaching staff as well as the students. Important announcements, such as exam schedules and assignment deadlines, will be posted on this list. Students can also use it to form project teams, to discuss projects, and to exchange ideas and experience. Everyone should join and read this group mailing list daily. To subscribe, please send mail to: <>

<> : includes all members of the teaching staff, the instructors as well as the teaching assistants. Students should use this for all communication with the course staff.

Please, email individual staff members only when the communication is personal, and is not related to the course in general.

Course Description

Data networks have become an integral part of modern computer systems. Familiarity with the fundamentals of computer networking is important for any computer scientist. This course will take a systems approach to teaching computer networks; it will be based on a careful study of a real and large computer network, the Internet. It will cover the principles of packet-switched networks that underlie the Internet, the practical algorithms and protocols that constitute the Internet, and the architectural ideas that are responsible for its phenomenal success. Specific topics include wired and wireless local area networks, routing and resource sharing in internetworks, and end-to-end functionality and security of Internet-scale systems like the WWW and peer-to-peer applications. Students will work on projects designed to convey a deeper appreciation of fundamental networking concepts covered in class.

Intended Audience / Prerequisites

This core course is open to Bachelor and Master students. Bachelor students must have passed the basic courses on Programming 2 and Math 2. Proficiency in programming (Java, C/C++) and UNIX development tools (e.g. make, gcc, gdb, jdb) is required to pass this course.

The language of the course is English. All lectures, office hours, tutorials and communication with the course staff will be conducted exclusively in English.


Computer Networks - A Systems Approach, 3rd Edition
by Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann, 2003.

Other References

Computer Networking, A Top-Down Approach Featuring the Internet, by James F. Kurose and Keith W. Ross

Computer Networks, 3rd ed
by Andrew Tanenbaum

UNIX Network Programming, Volume 1: Networking APIs: Sockets and XTI, 2nd ed by W. Richard Stevens

Lecture Notes

Summary lecture notes will be available on the course web-site for most of the material covered in the class. These notes are primarily meant to help students with taking notes. However, they will not accurately or consistently cover all the material discussed in the lectures. Students are expected to know all material covered in the lectures, and in the assigned readings and projects. Therefore, students should not rely only on the lecture notes. They should attend class regularly, take their own notes and complete all assignments.


There will be a midterm exam, a final exam, and a repeat exam. The repeat exam will be given only for students who fail to pass or take either one of the midterm or the final exams. All exams will be closed book and will be based on the material covered in lectures, readings, and projects.


To pass the course, a student must (i) pass the project assignments, and (ii) pass at least two out of the three exams, namely the midterm exam, the final exam, and the repeat exam. To pass the project assignments, the sum of all points earned by a student in the project assignments must be at least 50% of the maximal possible points. To pass an exam, a student must score at least 50% of the maximum possible points in the exam.

Your course grade will be based on a weighted score computed from the points you earn in your successful examinations and your project assignments. Project scores will count towards 40% of the weighted score, while exam scores will account for the remaining 60% of the weighted score.

Homework Assignments

Homework assignments will be provided to help students prepare for the exams. Solutions should be turned within one week after the assignments are handed out. Teaching assistants will read over the solutions, identify common mistakes being made, and discuss them during the tutorial hours. Teaching assistants will also provide sample solutions. However, they will not grade the submitted solutions; homework assignments will not count towards the course grade.

Project Assignments

There will be several project assignments during the course of the semester. Their purpose is to solidify students' understanding of the material covered in the class by exposing them to practical applications. The projects will require a substantial amount of software design and implementation. The software produced will be graded based on its ability to successfully pass a set of functional and performance tests.

Project teams: Students are strongly encouraged to work on the projects in small teams. It is the responsibility of the students to form and manage their own teams.

All team members must be involved in all aspects of the project. To collaborate effectively, team members should divide the project responsibilities so that they can work effectively in parallel. However, each member should be familiar with the work done by all other members. Proper time management is critical – if you don't start working on the assignments early you will not be able to complete the projects!

Computing facilities: TBD

Project deadlines: Programming projects must be submitted by 11:59 PM on their due dates (posted here.)

Late submissions: We will apply a flexible slip date policy for late submissions. Each student is allocated an automatic extension of 4 calendar days for the entire semester. Students can use the extension on any project during the semester in increments of one day. For instance, you can hand in one project assignment 4 days late, or one assignment 2 days late and two assignments 1 day late.

For team submissions, the slip time will be deducted from each team member's remaining slip time. Students will not receive credit for late submissions beyond the automatic extensions.

Honor code: It is acceptable to discuss ideas, algorithms, or approaches to solving problems and assignments with other students. We encourage you to give and get such advice as it will help you learn the material better and improve your ability to work as a team member. However, what you submit must be the work of your own group; copying code or solution sets from any source is strictly prohibited.