Course Description

15-441 is an introductory course to computer networks. The emphasis will be on the basic performance and engineering tradeoffs in the design and implementation of computer networks. To make the issues more concrete, the class includes several multi-week projects requiring significant design and implementation.

The goal is for students to learn not only what computer networks are and how they work today, but also why they are designed the way they are and how they are likely to evolve in the future. We will draw examples primarily from the Internet. Topics to be covered include: congestion/flow/error control, routing, addressing, naming, multi-casting, switching, internetworking, and network security. Evaluation is based on homework assignments, the projects, and two mid-term exams.

Because this course has a big project component, you must be proficient in C programming on UNIX systems. It is required that you have taken 15-213 and gotten a "C-" or higher since many of the programming skills you will need are taught in that course.

Class Meetings

Tuesday and Thursday, 1:30-2:50 pm, DH 1212


Srinivasan Seshan <>, Wean Hall 8113, 268-8734
David Andersen <>, Wean Hall 8206, 268-3064

Teaching Assistants

Ed Bardsley ebardsle at andrew dot cmu dot edu WeH 5201 cluster
Eric Burns latinum at cs dot cmu dot edu NSH 4511
David Craft dcraft at andrew dot cmu dot edu WeH 7th floor whiteboard
Debabrata Dash ddash+ at cs dot cmu dot edu WeH 8th floor whiteboard
Maksim Tsvetovat maksim at cs dot cmu dot edu WeH Grad lounge (4th floor)


Course Secretary: Barbara Grandillo <>, Wean Hall 8018, Tel: 268-7550

Office Hours



There is a bulletin board, cyrus.academic.cs.15-441, for the course, where anyone can post messages pertinent to the course. Although these will not be ``official'' messages, you may find the discussions there useful. We encourage you to use this bboard as a class resource. The TAs will be reading this bboard regularly. There is another bulletin board cyrus.academic.cs.15-441.announce, which will be used for class announcements. These will also be posted on the class web page.

Course Polices



Your final grade for the course will be based on the following weights for the individual assignments:

The midterm will be an in-class, closed-book exam, covering all material up to that point in the course. The final exam will be a closed-book exam, covering material from the whole year, with emphasis on the second half of the course.

Project 1 will focus on the implementation of IRC-like chat server, focusing first on ensuring familiarity with socket programming, and second on an implementation of routing protocols within the application. Project 2 will focus on file transfers and the protocol components necessary for efficient and reliable file transfer (retransmission, congestion control, caching, etc.) Both projects are to be done in groups of two students.

The homework will combine both textbook-like questions as well as hands-on experimental exercises. There will be three homework assignments.


Students are encouraged to talk to each other, to the TAs, to the instructors, or to anyone else about any of the assignments. Any assistance, though, must be limited to discussion of the problem and sketching general approaches to a solution. Each student must write out his or her own solutions to the homework. The project handouts have more detailed information about collaboration when working on the projects, but, basically, each programming project group must write their own code and documentation for the programming projects done as a group.

Consulting another student's or group's solution is prohibited, and submitted solutions may not be copied from any source. These and any other form of collaboration on assignments constitute cheating. If you have any question about whether some activity would constitute cheating, please feel free to ask the instructors.

Late Policy

Take project and homework deadlines seriously. Our experience is that students often seriously underestimate the effort involved in programming assignments and projects. If we give you 4 weeks to complete an assignment, there is typically a reason. In the interest of fairness, we have adopted the following lateness policy:

Policy on Re-grading

If you think we made a mistake in grading, please return the assignment with a note explaining your concern to the course secretary no later than two weeks after the day the assignment was returned.  We will have the question re-graded by the person responsible for grading that question.