| Groupd ID | Name | Time Slot |
| 1 | Jinxin Zhang | 5:15-5:30 |
| 1 | David Hess | 5:30-5:45 |
| 2 | Ganesh Kuma | 5:15-5:30 |
| 2 | Megha Jain | 5:30-5:45 |
| 5 | Thomas Robleto | 5:45-6:00 |
| 5 | Aleksandr Tsirlin | 6:00-6:15 |
| 7 | Edward Fu | 5:45-6:00 |
| 7 | David Polese | 6:00-6:15 |
| 11 | Michael Burbea | 6:15-6:30 |
| 11 | Max Benjamin | 6:30-6:45 |
| 12 | Ian Boyle | 6:15-6:30 |
| 12 | Marcin Pawelek | 6:30-6:45 |
| 3 | William Linden | 6:45-7:00 |
| 4 | Alberto Ramirez | 7:00-7:15 |
| 6 | William Leszczuk | 6:45-7:00 |
| 8 | Gilbert Harmann | 7:00-7:15 |
| 9 | James Hsu | 7:15-7:30 |
| 10 | Terence LaFrance | 7:15-7:30 |
This course will provide students with a thorough understanding of the basic principles of computer networks, the design philosophy of the Internet, the details of Internet protocols, and the engineering and scientific principles needed to understand computer networks. Students who complete this course will be able to describe in detail the operations of Internet protocols and develop their own Internet applications. Students will also develop an understanding of the design and construction of network programs via a semester long class project. At the end of the course, you should be capable of network programming.
The prerequisite for CS 352 is Computer Architecture (CS 211), because of number representation, as well as Introduction to Discrete Structures II (CS 206), because students are expected to know basic probability. Students are expected to know how to program in Java and use simple data structures such as hash tables and arrays. Students are also expected to understand the department's facilities and how to use the cereal cluster, handin, and the FAS gradebook.
James F. Kurose and Keith W. Ross, Computer Networking, 3rd edition.
Students are expected to attend all lectures and perform all reading assignments prior to lecture. Students are also expected to attend all recitation section meetings. Students will be evaluated according to their performance on a semester long programming project, 2 mid-term examinations, and the final examination.
WARING: This is a project course, which means that this course should give you more than a passing knowledge of what writing working network programs entails. The project will be a major undertaking. If you complete the projects, you will have learned a lot. However, assess your commitment to this course realistically. If you don't have the time or the inclination to work hard on the project, you would be better off not taking the course. Fortunately, the project will be programmed in Java, so you will not have to learn a new programming language. You will have to learn how to build and debug a reasonably sized Java program and make it robust to outside errors. You will also have to describe how your program work in both a written document as well as an oral exam.
This one large project will be assigned, as three sub-projects. Up to 2 students can work as a group for each sub-project and you can change group members for each project. Students are required to complete the parts by the scheduled deadlines. Failure to turn in the project by the deadline using the "handin" program will result in a zero for all team members. No exceptions!
Cheating on projects and exams will not be tolerated. We want to protect the fairness and integrity of the class, so we run code similarity detectors on the projects and scrutinize exams for copying. Both parties in the exchange are liable; e.g. if you give away solutions to friends, you're putting yourself at risk too. If you get caught, it's a nasty process---just don't go there! You're better off dropping the course and trying it again.
The department academic integrity policy can be found at http://www.cs.rutgers.edu/policies/academicintegrity/. You now need to click explicitly on a link when you first login to our computing facilities, use handin, etc., that says you acknowledge being aware of the policy (which you can read through at the login screen).
That said, we do encourage you to talk to your classmates, provided you follow the Gilligan's Island Rule. After a joint discussion of an assignment or problem, each student should discard all written material and then go do something mind-numbing for half an hour. For example, go watch an episode of Gilligan's Island (or Reality TV in modern terms) , and then recreate the solutions. The idea of this policy is to ensure that you fully understand the solutions or ideas that the group came up with.
If you follow the Gilligan's island rule, often best route to follow to get a question answered is to ask, in order:
Two mid-term examinations are scheduled this semester, and both are held during regular lecture hours. A cumulative final examination will be held at the end of the semester.
Written homework assignments are for your practice only, we won’t grade them. It will be up to you to do them and ask the TA and instructor about problems that you don't understand. It is greatly to your advantage that you do the homework before getting/looking at the solutions. This will be critical for the exams.
The programming part of the projects are typically graded on how close they are to the functional requirements. The written portion is graded on how well the TA can figure out how your project is constructed only from the written description. Exams are typically graded on a curve. As a rule of thumb, the mean is a "C'" and each standard deviation is one letter grade. This rule can be altered, however, if the class does exceptionally well or poorly.
| Event | Date or Deadline | Notes |
| Midterm 1 | February 19, 2007 (Monday) | No electronic devices or notes allowed. No "cheat sheets" allowed. |
| Project 1 | March 5, 2007 (Monday) 11:59PM | |
| Project 2 | April 9, 2007 (Monday) 11:59PM | |
| Midterm 2 | April 16, 2007 (Monday) | No electronic devices or notes allowed. No "cheat sheets" allowed. |
| Project 3 | April 30, 2007 (Monday) 11:59PM | |
| Final | May 7, 2007 (Monday) |
| Dates | Theme | Topics | Readings from Kurose | Notes |
| Week 01 (01/17) | Fundamentals | Networks (Core vs. Edge), Switching schemes, Delay Analysis, Pipelining, Layering, Encapsulation | 1.1 - 1.9 | |
| Week 02 (01/22) | Application Layer Protocols | Basic Messaging, HTTP, FTP, SMTP, DNS | 2.1 - 2.6 | |
| Week 03 (01/29) | Network Programming | Sockets and Threads | 2.7 - 2.9 | |
| Week 03/04 (02/05) | Reliable Data Transfer Algorithms | ABP, Go-Back-N, Selective-Repeat | 3.1 - 3.4 | |
| Week 05 (02/12) | Transport Protocols | UDP, TCP (Flow Control, Congestion Control) | 3.5 - 3.7 | |
| Week 07 (02/26) | IP addressing | Routers, IP addressing, ICMP | 4.1 - 4.4 | |
| Week 08 (03/05) | Routing | Routing algorithms, routing protocols | 4.5 - 4.7 | |
| Week 10 (03/19, Week 09 is spring break.) | Link Layer | Error detection & correction, MAC sub-layer, Ethernet LANs, token-ring | 5.1 - 5.6 | |
| Week 11 (03/26) | Security | Cryptography, Authentication, Digital Signature, Firewall | 8.1 - 8.8 | |
| Week 12 (04/02) |
Wireless Networks Queue Management |
802.11 MAC Leaky Bucket, Token Bucket, Fair Queuing |
6.1 - 6.3 7.7 |
|
| Week 13 (04/09) | Queuing Theory | Definition, Kendall Notation, M/M/1 Analysis | ||
| Week 15 (04/30) (Code review of projects was conducted in Week 14.) | P2P networks, Review |