Instructor

Instructor: Aleksandar Kuzmanovic, Professor

Office: Technological Institute, Room L457, 2145 Sheridan Road

Phone: 847-467-5519

Office Hours: Wednesdays 10:00am-11:00am or by appointment (Tech L457)

Lecture: Mondays, Wednesdays, and Fridays 1:00-1:50pm (Tech L361)

Time/Place

Lectures: Mondays, Wednesdays, and Fridays 1:00-1:50pm (Tech L361)
Recitations: Thursdays 2:00pm-3:00pm (Tech LR4)

Teaching Assistants

Teaching Assistant: Marc Warrior

Office: Ford, Room - 2.206, 2133 Sheridan Road

Office Hours: Thursdays 3:00pm-4:00pm or by appointment (Ford 2.206)

Recitation: Thursdays 1:00pm-2:00pm (Tech L361) and Thursdays 2:00pm-3:00pm (Tech LR4)

Teaching Assistant: Clay Kauzlaric

Office: Wilkinson Lab in Tech

Office Hours: 2:00pm-3:00pm, Wednesdays

Recitation: N/A

Teaching Assistant: Nathan Lindquist

Office: Wilkinson Lab in Tech

Office Hours: 2:00pm-3:00pm, Tuesdays

Recitation: N/A

Course Description

This course provides an introduction to fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics to be covered include: overview of network architectures, applications (HTTP, FTP), network programming interfaces (e.g., sockets), transport (TCP, UDP), flow control, congestion control, IP, routing , IPv6, multicast, data link protocols, error-detection/correction, multiple access, LAN, Ethernet, wireless networks, and network security. Examples will be drawn primarily from the Internet (e.g., TCP, UDP, and IP) protocol suite. Over the course of the quarter, students program in C++ on UNIX systems to build web clients and servers, and a fully compatible TCP/IP stack that can run them.

Prerequisites

Textbook and other readings

Required:

  1. Computer Networking: A Top-Down Approach, 7th Edition (James Kurose and Keith Ross, 2017)
  2. TCP/IP Illustrated, Volume I: The Protocols (Richard Stevens, Addison Wesley, 1994) [Essential for lectures on TCP/IP and projects]

Recommended:

  1. Computer Networks - A Systems Approach, 4th Edition (Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann, 2007) [Good supplementary material to the required textbooks.]
  2. Unix Network Programming Volume 1, 3rd Edition, 2003 and Volume 2, 2nd Edition, 1999 (Richard Stevens, Prentice Hall) [Describes the details of socket programming and IPC on Unix.]
  3. Advanced Programming in the Unix Environment (Richard Stevens, Addison-Wesley, 1992) [A basic book for anyone writing programs that run under Unix.]
  4. The C++ Programming Language, Special Edition (Bjarne Stroustrup, Addison-Wesley, 2000)

Other References:

  1. UNIX for the Impatient, 2nd Edition (P. W. Abrahams and B. Larsonk, Addison-Wesley, 1996) [A nice introductory book to Unix]
  2. Learning the Unix Operating System (Nutshell Handbook), 5th Edition (J. D. Peek, G. Todino-Gonguet, J. Strang, O'Reilly, 2001) [Good for UNIX beginner]
  3. Programming with GNU Software (M. Loukides and A. Oram, O'Reilly, 1995) [Introdution on the tools on UNIX]
  4. Code Complete (S. McConnell, Microsoft Press, 1995) [On coding style]
  5. Some other pointers on C/Unix (Prof. Fabian E. Bustamante)

Grading

There will be a midterm and a final exam. Exams will be in-class, closed-book, and will cover materials from lectures, required readings and projects. The final exam will not be cumulative.

Homework

There will be two kinds of homework assignments: reading assignments and textbook-style questions. You should have finished the assigned reading before coming to lecture. In addition, there will be about four sets of written homeworks.

Projects

Over the course of the quarter, you will implement a user-level TCP/IP stack and a small web server that runs on top of it. Your code will not implement the full functionality of HTTP or TCP/IP, but it will implement enough of it to be able to interoperate with other, complete implementations. In keeping with the top-down approach of Kurose and Ross, you will build this from the web server down instead of from the network card up. I will initially provide you with the whole stack (as object code) and you will implement the web server. Next, I will peal away the layers of the stack, leaving you to implement your own versions. Each layer will have well-defined interfaces that you will fill out. Here are the layers, as well as each one?s percentage of the project grade. Note that the layers in italics will be supplied to you and are included only for completeness.

The implementation language will be C++ and the platform will be Red Hat Linux 9.0. We hope that you will use g++2.9.6 as your compiler, make as your build tool, and CVS as your version control system. You may also find that the C++ standard template library will make your life easier. You?ll be using the PCs in the TLAB, which will be specially configured for this class. You are welcome to use other machines, but we must be able to compile and run your code on our machines. Note that the Ethernet layer of the code requires that your kernel supports the Berkeley packet filter interface and that you can run your Ethernet card in promiscuous mode to extract and inject raw packets of such test cases. To evaluate your project, we will spot-check your source code, compile it, and run randomized testcases on it. When appropriate, we will supply you with examples. All the projects are to be done by teams of two students. Each team should work cooperatively on the design, implementation, and testing of their solutions. And the work should be shared in a fair manner. The submissions need to include a simple specification of work undertaken by each party.

Late Policy

Unless otherwise indicated, homeworks and projects are due by the end of lecture on their due date. If you hand in an assignment late, we will take off 10% for each day (or portion thereof) it is late.

Cheating Policy

It's OK to ask someone about the concepts, algorithms, or approaches needed to do the project assignments, I encourage you to do so; both giving and taking advice will help you to learn. However, what you turn in must be your own, or for projects, your group's own work; copying other people's code, solution sets, or from any other sources is strictly prohibited. We will punish transgressors severely.

Schedule

DateLecture Topics ReadingAssignment
Mon 1/8Class overview, Computer Networks and the Internet (Internet architecture, protocols, circuit- and packet-switching)Ch. 1.1-1.3, 1.7; Handout for project 1Project 1 out. Find partner (groups of up to 2).
Wed 1/10Homework 1 out.
Mon 1/15NO CLASSMLK Day of Service
Mon 1/22Homework 1 in. Homework 2 out.
Wed 1/24Project 2 out.
Wed 1/31NO CLASSProject 1 in.
Mon 2/5NO CLASS
Wed 2/14Homework 3 out.
Fri 2/16Midterm
Wed 2/21Project 3 out.
Fri 2/23Homework 3 in. Homework 4 out.
Fri 3/2Project 2 in.
Fri 3/9Project 3 in.
Mon 3/12Homework 4 in.
Mon 3/19Final: 9-11am in Tech L361
January 2018, Aleksandar Kuzmanovic