
This course studies the architecture and protocols of the Internet. Topics to be covered include: naming, web protocols, peer-to-peer networks, transport protocols, routing, multicasting, quality of service, multimedia, wireless networks, and security. Additionally, students will read and present research papers for a deeper understanding of networking concepts. Students will apply what they learn in designing network protocols or services during a semester-long project.
CS 356 or equivalent. Students should be capable of programming in either Java or C/C++.
| Week | Topic | Readings |
| 1 | Introduction. Network layering concepts. | |
| 2 | IP Addressing. DNS. The client-server model. | |
| 3 | HTTP. First phase of the project handed out. | |
| 4 | Email. P2P Networks. | |
| 5 | UDP. Principles of Reliable data transfer. | |
| 6 | TCP. First phase of the project due. Second phase handed out. | |
| 7 | IP, ICMP. | |
| 8 | Midterm. Discussion of midterm solutions. | |
| 9 | Routing. | |
| 10 | Multicasting. | |
| 11 | QoS in the Internet. Second phase of the project due. Third phase handed out. | |
| 12 | Wireless and mobile networks. | |
| 13 | Multimedia. | |
| 14 | Network Security. Third phase of the project due. |
The lecture slides will be posted on the class's webpage prior to the lecture. It is useful to print and bring the lecture slides with you in class. The assigned book chapter readings will be posted before the first day of classes. Students are required to read the assigned chapters before each lecture.
Students will present, individually or in groups of two, one research paper during the semester. In this way, students will learn fundamental lessons from the design of the Internet and be exposed to recent networking developments. As byproducts, students will understand how networking research is done and learn to speak in public about a research topic. The papers are selected by the instructor from top conferences and journals. The presentations (using power point slides) will take place in class, and extra-credit will be assigned for active participation in discussions.
There will be two exams: a midterm, and a final exam. Both exams are closed book/notes. The final exam will cover only the material taught after the midterm.
Students will work individually implement an emulation of the Internet network layer. By the end of the semester, this project will allow students to create networks with relatively complex topologies (e.g., a path between two hosts could include several routers) that concurrently transfer files between multiple hosts. The goals of this project are: (1) understand how to design and implement Internet protocols, (2) learn to develop complex distributed applications as multi-threaded programs that communicate using the socket API. The implementation will be done in three phases, with different weights in the final grade. Detailed information/requirements will be provided for each phase. Solutions for the intermediate phases will be posted after each submission; students are allowed to use these solutions to build the next phase of the project. The submissions will be handled electronically. Test cases will be posted one week before the due dates. Late submissions will not be accepted.
Homework will be assigned weekly to prepare students with the type of questions encountered in exams. This homework is not for credit, but students are encouraged to do it. The solutions will be discussed in class each week.
A make-up exam may be taken only after providing written documentation to the Dean of Students.
The NJIT Honor Code will be upheld, and any violations will be brought to the immediate attention of the Dean of Students. Note in particular that copying programming assignments, in full or in part, is forbidden.
The students will be consulted and must agree to any modifications or deviations from the syllabus throughout the course of the semester.