Course Overview
This course introduces students to the basic principles of computer networks. Although current technologies will be discussed, the emphasis is on understanding the important concepts in modern computer networks and issues that affect design and implementation. The programming assignments require a good background in programming in C or C++ and will involve UNIX system calls. Some of the material covered in a systems programming class, as well as knowledge of operating systems (CS 502) will be assumed.Course Information
Lectures: Mondays, 4:00pm - 8.00pm
Instructor: Prof. Emmanuel Agu, FL-139, 508-831-5568, emmanuel@cs.wpi.edu
Office Hours: Mondays 8PM - 8.30PM. Others by appointmentText: Required: Computer Networks (fifth edition) by A.S. Tanenbaum
Recommended: TCP/IP Sockets in C: Practical Guide for Programmers, Michael J Donahoo and Kenneth Calvert Morgan Kaufmann Publishers 2001
Academic Honesty: Cheating or plagiarism will not be tolerated and will result in an NR grade for the course. Discussing assignments and approaches to solving them is permitted, but the expectation is that programs turned in are work of that programming team. It is fine to find algorithms or code from publicly available sources such as a textbook or a public website. However, you must document the source clearly in your code and in your program documentation. Failure to do this will be treated as plagiarism.
Class Websites: A myWPI class website has also been set up. The discussion board should be used for asking questions to avoid excessive emails and so that everyone can benefit from answers given. Emails should be used only for specific questions which are unique to you. It is expected that you should already be comfortable with programming in C, be able to pick up necessary systems programming constructs. I will answer questions about understanding covered concepts, policy issues and will generally not debug students' code.
Notes:
- Reading is mandatory, working ahead is encouraged.
- Exams are based on lectures, readings and assignments so class attendance is strongly encouraged.
Grade Policy: 55% exams (2 exams), 45% programming assignments (3)
Programming Assignments
http://www.cs.wpi.edu/Help/documentation-standard.html specifies the CS Department Documentation standards. Please follow these guidelines in all your documentation. Every function or subroutine must include the author of the function. This is critical to grading the projects. Please include a README file with each assignment to provide information to assist me in grading your programs.
All programs turned in must compile and execute on one of the WPI Unix platforms. You are encouraged to develop your programs on WPI Unix machines because historically students have had difficulties porting their programs from other operating systems and because you may be given test files that work only on the CCC machines. Turned in programs that do not compile will not be graded and will receive a grade of 0. Points will also be deducted for programs without comments.
Late Assignment Credit
Late programming assignments (turned in after the start of class on the due date) will be penalized 15 percent per day. Assignments will not be accepted after the start of class on the Friday following the due date.Schedule
Introduction (1 day) Topics: Introduction, uses and overview of networks (hardware and software) and reference models Reading: Chapter 1: 1.1 - 1.4 Physical Layer (1 days) Topics: Transmission media, public telephone network, mobile telephones and cable TV Reading: Chapter 2: 2.1 - 2.7 Data Link Layer (1.5 days) Topics: Data link protocols, error detection and correction Reading: Chapter 3: 3.1 - 3.4, 3.6 Medium Access Control Sublayer (1 days) Topics: Multiple access protocols, ethernet, wireless LANs, bluetooth and data link switching Reading: Chapter 4: 4.1-4.4, 4.6-4.6.2, 4.7 - 4.7.1 Network Layer (1.5 days) Topics: Network layer design issues, routing algorithms, congestion control Reading: Chapter 5: 5.1-5.3 Midterm Exam: Nov 15 (tentative) Transport Layer (1.5 days) Topics: transport service, sockets, internet transport protocols Reading: Chapter 6: 6.1 - 6.2, 6.4 Application Layer (1.5 days) Topics: email, web, Reading: Chapter 7: 7.1 - 7.3 Final Exam: Dec 6 (tentative)Timeline
Please note that the following timeline is tentative. Look at the assignment write-up when handed out in order to confirm the due date.
- Oct 11, Programming assignment 1 out
- Oct 25, programming assignment 1 due, Prog assign 2 out
- Nov 8, Programming assignment 2 due & midterm exam review
- Nov 15, midterm exam, Prog assign 3 out
- Nov 29, programming assignment 3 due & final exam review
- Dec 6, Final exam
Web Resources
- An informal network programming guide that has helped some students in the past.
- NIST Net is a network emulation package that runs on Linux. NIST Net allows a single Linux PC set up as a router to emulate a wide variety of network conditions.
The Mapping the Internet project has some artistic (and maybe useful) results from traceroute and the Atlas of Cyberspace includes maps of Cyberspace.
A collection of traceroute sites on the web.
X Traceroute for 3-d maps.