By the end of this course, you will have a good understanding of the main elements that work together to form the Internet. You will have acquired some familiarity with standard diagnostic tools, network application development, and typical network designs and configurations. In addition, you will have caught a glimpse of more advanced networking concepts and research directions.

Evaluation will include in class quizzes, a midterm, a final, and eight homeworks.


This class serves not only as an introduction to networking concepts but also low level network programming; as such, thorough understanding of operating systems concepts as covered in CS 361 is highly recommended. If you took CS 361 but struggled with either the concepts or homework assignments, you may want to reconsider taking this class until you have gained a bit more experience with low-level programming and the POSIX API. If you have not taken that course, take a look at an example course content or the book for an idea of what is covered.

Peer Instruction

This course will be taught using Peer Instruction, a teaching model which places stronger emphasis on classroom discussion and student interaction.


Grades are curved based on an aggregate course score. There are separate curves for graduate and undergraduate students. This means that the course score cut-offs for an A, B, C etc. are not defined ahead of time: these will be set after the end of the course.

The course grade weighting is:

Task % of total grade
Reading Quizzes 5
Class Participation 5*
Homeworks 35
Midterm 25
Final 30


Reading quizzes will be given at the beginning of each class period using iClickers. Everyone will have their lowest three quiz scores dropped.


Participation is an incredibly important facet of this course. The baseline Class Participation grade will be based off of participating in classroom discussion questions. Your class participation grade can grow to a maximum of 10 through exceptional participation. The expected score in this category is 5: additional points are a bonus reserved for substantial contributions, entirely at the instructor’s discretion. Exceptional participation includes early reports of errors in assignments, helpful discussion on Piazza, contribution of helpful code to the common good of the class (e.g. test cases and/or testing scripts) and thoughtful discussions during lecture.


Homeworks will consist of approximately eight programming projects with duration between one and two weeks. All programming assignments must be completed in Python 3.6. Be sure to consult the online handout or the professor if you have any questions.


All assignments are published due date. You can submit a maximum of two assignments late (up to a week after their original due date) without penalty, but you must notify the TA using the late homework notification form. If you are going to use one of your two late submissions, you must use this form before the assignment is originally due.

Extra credit will not be awarded for early turnins. Zero credit will be given in any of the following cases:

  • No assignment submitted.
  • An assignment submitted after the due date, without notifying the TA before hand.
  • An assignment submitted after the due date, after you’ve used your two late submissions.
  • An assignment submitted more than one week after the original due date.


Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual, and copying code from your classmates or other sources is considered plagiarism. For example, given the question “how did you do X?”, a great response would be “I used function Y, with W as the second argument. I tried Z first, but it doesn’t work.” An inappropriate response would be “here is my code, look for yourself.” You should never look at someone else’s code, or show someone else your code.

To avoid suspicion of plagiarism, you must specify your sources together with all turned-in materials. List classmates you discussed your homework with and webpages from which you got inspiration or copied (short) code snippets. Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc, is obviously prohibited, and will be reported. We will be running MOSS, an automated plagiarism detection tool, on all submissions.

There are consequences to cheating on two levels - the consequences for your grade, and the consequences at the university level. Within class, the first time cheating on a programming assignment or problem set will result in a 0 on the assignment. A second time on a programming assignment, or first time on an exam or final project will result in failing the class.

I also report all academic integrity violations to the dean of students. If it is your first time, the dean of students allows you to informally resolve the case - this means the student agrees that my description of what happened is accurate, and the only repercussions on an institutional level are that it is noted that this happened in your internal, UIC files (i.e. the dean of students can see that this happened, but no professors or other people can, and it is not in your transcript). If this has happened before, in any of your classes, this results in a formal hearing and the dean of students decides on the institutional consequences. After multiple instances of academic integrity violations, students may be suspended or expelled. For all cases, the student has the option to go through a formal hearing if they think that they did not actually violate the academic integrity policy. If the dean of students agrees that they did not, then I revert their grade back to the original grade, and the matter is resolved.

TOPICS COVERED (tentative)

  • Constituent parts of the Internet
  • Layered network model
  • The innards of Web / email / bittorrent
  • Domain Name Services (DNS)
  • Networking APIs for application developers
  • Common network diagnostic tools
  • Network performance - throughput, delay and packet loss
  • Transport layer services
  • TCP - Reliability & Congestion Control
  • IPv4/IPv6 Addressing / Routing
  • Inter/intra domain routing protocols
  • Network address translation
  • Routing in fixed and ad-hoc wireless networks
  • Mobility and the Internet
  • Introduction to Network Security - Botnets, DoS/DDoS, Viruses and Worms
  • Multicast and Anycast mechanisms
  • Multiple access control techniques
  • Physical layer overview - modulation, coding
  • Error detection and correction
  • The UNIX command line