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 a mid-term and final exam.
The prerequisite for this course is 15-212 (Principles of Programming). Because this course has a big project component, you must be proficient in C programming on UNIX systems. It is highly desirable that you have taken 15-213 since many of the programming skills you will need are taught in that course.
Your final grade for the course will be based on the following weights for the individual assignments:
The midterm will be an in-class, open-book exam, covering all material up to that point in the course.
The final exam will be a 3-hour, open-book exam, covering all material for the entire semester, but with some emphasis on material from the second half of the course. The final exam will be on Dec 20, 1pm-4pm in DH 2315.
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 homeworks. 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.
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. Late assignments will NOT be accepted, unless there is a valid reason (e.g. medical problem). If you will not be able to complete an assignment on time, you must make arrangements with the instructors before the deadline.