EECS 325/425   Computer Communication Network

Fall 2004

Course Description

EECS 325 is a senior level course on computer networks. The goal of the course is to teach the fundamental concepts and principles in today's networks. The course involves various aspects of computer networking, with emphasis on (1) application layer protocols such as HTTP and FTP, (2) TCP and congestion control, (3) routing and IP, and (4) link layer access protocols. Students are expected to attend the class, work on written homework assignments and programming projects. EECS 425 is a graduate level course taught together with EECS 325. A small number of graduate students should register for EECS 425. Students should also attend the the class, work on homework assignments and programming projects. In addition, they are required to work on an extra project and read technical materials with more research merit.

Prerequisites

EECS 337 and EECS 340 (or their equivalents) are required. C/C++/Java programming experiences are also required. Knowledge in mathematics and statistics would be very helpful.

Textbooks 

Required: Computer Networking, A Top-Down Approach Featuring the Internet, Second Edition, by James F. Kurose and Keith W. Ross, 2002.
Optional: Computer Networks - A Systems Approach, Third Edition by Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann, 2003

Course Information

Instructor: Shudong Jin (Email: , Office hours: MW 4:00-5:00pm, Office: Glennan 514B)
Lecture time: MWF 3:00-3:50pm
Location: Olin 313
TA: Danielle Liu (2/3 gradings) and Adam Troy (1/3 gradings)

Course Content and Requirements

Lectures will be given three times a week. Students are expected to attend all lectures. Classes missed for any cause other than illness may not be made up.

Written homework assignments are given during some lectures. There will be about seven homework assignments. Written answers are preferable, though email submissions are acceptable (acceptable format of electronic submissions include PostScript and PDF). Each assignment is typically due in two weeks, and then solutions will be posted about 5 days later. A late submission (within 5 days) will still be graded, but the student will only receive partial credits. The percentage decreases linearly with time, 10% a day.

There will be two or three programming projects. The students will have about one month to finish each project. If collaboration is initiated between two students (never more than 2 students), then the students should talk to the instructor. Programming projects will be submitted in electronic format, and it should include both commented source code (C/C++/Java) as well as documents describing the implementation details and results. The projects will be evaluated based on correctness, completeness, neatness, and its documentation.

There are one midterm exam and one final exam. The shorter in-class midterm will cover all topics discussed in the first half, while the three-hour final exam will emphasize the topics covered in the second half. Exams will be in written format.

Grading Policy

Written homework: 30%
Programming project: 20%
Midterm exam: 15%
Final exam: 35%

Current grades of the class.

Tentative Schedule

For some lectures, I will modify the slides provided by the authors of the K&R textbook. They will be posted after the lecture. For other lectures, no slides will be used. The link (to each assignment) can be followed at the time of the assignment.

08/23        Course info, introduction
08/25        Network architecture, layering, and protocols
08/27        Principles of application-layer, lecture notes, Assignment: Homework#1, solutions
08/30        FTP, SMTP, lecture notes
09/01        DNS
09/03        HTTP, lecture notes
09/06        Holiday
09/08        HTTP, Web proxy caching, lecture notes
09/10        CDN and Peer-to-peer, lecture notes, Assignment: Homework#2, solutions
09/13        More topics on peer-to-peer systems
09/15        Socket programming and project, lecture notes, Assignment: Project#1
09/17        Overview of transport layer, UDP, lecture notes
09/20        Principles of reliable data transfer, lecture notes
09/22        Principles of reliable data transfer, lecture notes
09/24        Principles of reliable data transfer, lecture notes, Assignment: Homework#3, solutions
09/27        TCP, lecture notes
09/29        TCP timeout estimation, state transition
10/01        Principles of congestion control, lecture notes
10/04        TCP Congestion control, lecture notes
10/06        TCP throughput
10/08        TCP-friendliness and rate-based control, lecture notes, Assignment: Homework#4, solutions
10/11        Overview of network layer, lecture notes
10/13        Lab session for proj#1, Assignment: Project#2
10/15        Midterm exam

10/18        Holiday
10/20        Midterm recap and network layer overview
10/22        Routing principles - LS and DV algorithms, lecture notes
10/25        IPv4 and IPv6, lecture notes, Assignment: Homework#5, solutions
10/27        more on IPv4 and IPv6
10/29        Internet routing architecture, lecture notes
11/01        Internet routing architecture, lecture notes
11/03        Multicast routing, lecture notes
11/05        Mobile routing, lecture notes
11/08        QoS routing, Assignment: Homework #6, solutions
11/10        QoS routing, lecture notes
11/12        Overview of link layer, error detection/correlation, lecture notes
11/15        Multiple access protocols, Quiz, lecture notes, Assignment: Project#3
11/17        Multiple access protocols, lecture notes
11/19        Multiple access protocols of Ethernet, lecture notes
11/22        LAN addressing and ARP, lecture notes, Assignment: Homework#7, solutions
11/24        Wireless links, PPP, lecture notes
11/26        Holiday
11/29        ATM, lecture notes
12/01        Miscellaneous
12/03        Course recap and final exam info, lecture notes
12/15        Final exam