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++.
|1||Introduction. Network layering concepts. Slides.|
|2||IP Addressing. DNS. The client-server model. Slides.||
|3||HTTP. Slides. First phase of the project handed out.||
|4||P2P Networks. Email. Slides.||
|5||Midterm I. Discussion of midterm solutions. UDP. Principles of reliable data transfer. Slides.||
|6||TCP. Slides. Second phase of the project handed out.||
|9||Midterm II. Discussion of midterm solutions.|
|10||Multicast. Software Defined Networking. Slides.||
|11||QoS in the Internet. Slides. Third phase of the project handed out.||
|12||Wireless and mobile networks. Slides.||
|14||Network Security. Slides.||
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, in groups of three, 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 three exams: two midterms, and a final exam. All exams are closed book/notes. The second midterm and the final are not cumulative.
Students will 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. Detailed information/requirements/test cases will be provided for each phase. Solutions for the intermediate phases will be posted; students may use these solutions to build the next phase of the project. This project is not for credit, but a few programming questions based on the project will appear in the exams.
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 University Code of Academic Integrity will be upheld, and any violations will be brought to the immediate attention of the Dean of Students.
The students will be consulted and must agree to any modifications or deviations from the syllabus throughout the course of the semester.