UIC - Computer Science


Overview | Syllabus | Schedule | Assignments

Spring 2015 - Latest news

  • 2015.04.27 - The lectures has completed. The course grade weighting has been updated.
  • 2015.04.05 - All lecture slides are up to date on Piazza. Course schedule has been updated. Final exam will be at 1:00-3:00 PM, Monday May 4, 2015.
  • 2015.03.20 - Assignment 4 demonstration in person. No class on Friday March 20, 2015. Midterm exam grades have been posted in Blackboard. Have a good break!
  • 2015.03.03 - Midterm exam will be in class at 1 PM Friday, March 6, 2015 in SES 238. Only one sheet of paper is allowed.
  • 2015.02.25 - Assignment 4 has been published on Blackboard. This is a group project requiring working in pair. You have to register in a group (Assignment group) to be able to see this assignment and to submit. Please use Piazza to find your partner if you do not have one.
  • 2015.01.28 - Assignment 2 has been published on Blackboard. Office hours have been changed.
  • 2015.01.21 - Discussion board is on Piazza. Links to wireshark labs (optional) are posted in the schedule.
  • 2015.01.16 - Updated TA office hours. All slides has been posted.
  • 2015.01.12 - First lecture's slides has been posted on Blackboard. Assignment 1 has been published on Blackboard. The Prerequisites and evaluation table have been revised.
  • 2015.01.08 - The evaluation table has been revised. Some notes before the first lecture have been sent via email.
  • 2015.01.05 - Course's homepage is available. First lecture: Monday, Jan 12, 1PM - 1:50PM SES 238.

General information

Meets: MWF 1PM - 1:50PM SES 238
Instructor: Dr. Phu Phung
Required Textbook: Kurose and Ross - Computer Networking: A Top-Down Approach, 6th Edition (Powerpoint Slides)
Required device: any version of iClicker (this course is taught using Peer Instruction) and a personal computer.
Office Hours: 11AM-1PM Mondays
Office: SEO 1216
UIC Blackboard: CS450 Spring 2015 Blackboard
Discussion board: CS450 Spring 2015 Piazza

TA: Xiang Huo
Office: SEO 1306
Office Hours: 11AM-1PM Fridays


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.

Assessment will include in class quizzes, a midterm, a final, a group presentation, and 6 programming assignments.


This class is programming intensive, with most assignments done in C. CS361 or equivalent is a required prerequisite: concurrent enrollment only with instructor consent, and not recommended. If you took CS361 but struggled in it, you may want to reconsider taking this class until you have gained a bit more experience with low-level programming and UNIX environments.

Peer Instruction

This course will be taught using Peer Instruction, a teaching model which places stronger emphasis on classroom discussion and student interaction. Students need to read required materials before classes. Every student must have a physical iClicker device to answer in class quizzes in order to archive participation grades.


Grades are curved based on an aggregate course score. Grads and undergrads are graded on separate curves. 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 (+5 bonus)
Assignments 30 (+5 bonus +6 extra (optional))
Midterm 25
Final 35
Total 100-116%

Reading quizzes

Reading quizzes will be given at the beginning of each class period using iClickers. You have to register your iClicker in Blackboard (select the course in Blackboard -> Tools -> i>clicker Student Registration).

Class participation

As this course places stronger emphasis on classroom discussion and student interaction, class participation is incredibly important and therefore graded. The baseline Class Participation grade is 5% will be based off of participating in group discussion questions. You have to sign up in a group (three students each) for these discussions. You have to sign-up in a group in Blackboard by noon Thursday Jan 15, 2015 (Tools -> Groups -> Peer discussion group). You can find your group partners in person/classes or use Blackboard forum to form your group. Otherwise, I will assign you in a group randomly by the third lecture on Friday Jan 16.
There will be bonus points up to 5% which is counted for exceptional participation such as early reports of errors in assignments, helpful discussion on Piazza forums, contribution of helpful code to the common good of the class (e.g. test cases and/or testing scripts) and thoughtful discussions during lecture.

Programming assignments

Programming assignments will consist of approximately 6 programming projects with duration between one and two weeks. The deadlines are firm. If you have an “acceptable” reason that you think you cannot make the deadline, email me 26 in advance. Some projects will require working in pair. You are responsible to find your partner. You can use the discussion forums to find a match. The recommended programming language is C, however, students can choose their own language to implement programming projects. Be sure to consult the online handout or the instructor if you have any questions.

Academic integrity

Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual, and copying code from your classmates is considered plagiarism. For example, give 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”.

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. All students are expected to understand and be able to explain their turned-in materials. Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc, is obviously prohibited, is grounds for failing the course, and will be reported.

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

Tentative Course Schedule

(The schedule more than 24 hours in advance is subject to change)
Date Topic Required Readings Recommended Readings Assignments
Application Layer
W1-Lecture 1:
Mon January 12
Introduction to the course, and the Internet

How the Internet works (video)
W1-Lecture 2:
Wed January 14
Programming envoriment demo, Assignment 1
VirtualBox, Ubuntu Assignment 1 - Simple HTTP Client
W1-Lecture 3:
Fri January 16
4 layer Internet model, Socket Programming
K&R 1.1, 1.5, 1.6
beej’s guide (sections 4 & 5)
W2-No class:
Mon January 19
No class (Martin Luther King, Jr. Day)
W2-Lecture 4:
Wed January 21
Network applications and the Web
2.1 & 2.2
Wireshark Get started
W2-Lecture 5:
Fri January 23
Wireshark HTTP
W3-Lecture 6:
Mon January 26
W3-Lecture 7:
Wed January 28
Client-Server model, Assignment 2
no quiz Assignment 2 - Multithreaded Web server
W3-Lecture 8:
Fri January 30
Wireshark DNS
W4-Lecture 9:
Mon February 2
no quiz
W4-Lecture 10:
Wed February 4
Peer to Peer, BitTorrent, DHTs, Distributed Consensus
Transport Layer
W4-Lecture 11:
Fri February 6
Transport layer and UDP
W5-Lecture 12:
Mon February 9
Reliable Transport
W5-Lecture 13:
Wed February 11
Reliable Transport
W5-Lecture 14:
Fri February 13
W6-Lecture 15:
Mon February 16
Assignment 3

Assignment 3 - Wireshark experiments
W6-Lecture 16:
Wed February 18
TCP (cont.) and Flow control
W6-Lecture 17:
Fri February 20
Connection management and Congestion control
W7-Lecture 18:
Mon February 23
DNS Security
Guest lecture by Prof. V.N. Venkatakrishnan

W7-Lecture 19:
Wed February 25
Congestion Control (cont.)
Assignment 4 - DNS resolver
W7-Lecture 20:
Fri February 27
iClicker questions review
W8-Lecture 21:
Mon March 2
Midterm review
The Network Layer
W8-Lecture 22:
Wed March 4
Network layer introduction
Fri March 6
Midterm Exam
W9-Lecture 23:
Mon March 9
Routers & IP
W9-Lecture 24:
Wed March 11
Internet P
W9-Lecture 25:
Fri March 13
Midterm exam review and Assignment 4
W10-Lecture 26:
Mon March 16
NAT 4.4.2
W10-Lecture 27:
Wed March 18
IPv6 4.4.4
W10-No class:
Fri March 20
Assignment 4 evaluation
W11-No class:
Mon March 23-27
(Spring vacation)
W12-Lecture 28:
Mon March 30
Routing Algorithms 4.5 Assignment 5 - Reliable communication
W12-Lecture 29:
Wed April 1
Routing Algorithms 4.5
W12-Lecture 30:
Fri April 3
Routing in the Internet 4.6.2-4.6.3
The Link Layer
W13-Lecture 31:
Mon April 6
Introduction to the Link Layer 5.1-5.3
W13-Lecture 32:
Wed April 8
Media Access Control 5.3
W13-Lecture 33:
Fri April 10
Ethernet; Address assignment and discovery 5.4.1,4.4.2 Obtaining a Host Address subsection Assignment 6 - Unreliable communication
W14-Lecture 34:
Mon April 13
Switches and VLANs 5.4.3 – 5.4.4
W14-Lecture 35:
Wed April 15
Data center Networking and Web transactions synthesis 5.6
W14-Lecture 36:
Fri April 17
Wireless and Mobile Networks
Physical Layer
W15-Lecture 37:
Mon April 20
Wireless and Mobile Networks
W15-Lecture 38:
Wed April 22
Network security overview
W15-Lecture 39
Fri April 24
SSL, HTTPS, Firewall
W16-Lecture 40:
Mon April 27
i-clicker questions review
W16-Lecture 41:
Wed April 29
Final review

W16-No class
Fri May 1, 11-2
Hour offices and Assignment 6 demo
W17-Final exam
Mon May 4
Final exam
1:00-3:00 p.m.
Final exam schedule