CS-3251: Computer Networking I
Section B'
School of Computer Science, Georgia Tech
Fall 2018
Course Objectives
The main objective of this course is to provide students with a rigorous understanding of computer networking concepts, protocols and technologies. Even though we will cover the major Internet protocols in some detail, the emphasis will be on fundamental problems, ideas and algorithms. From this perspective, the architecture and protocols of the Internet are only a ``successful case-study'' among many others that were not so fortunate. Students will have the opportunity to design their own protocols, implement and test them over real networks, solve related mathematical problems, and experiment with various network measurement and troubleshooting tools.
Instructor
Prof. Constantine Dovrolis
Office: 3346 KACB
Office hours: Tues and Thur, 1:30-2:30 (or by appointment)
Email: constantine@gatech.edu (but the best way to ask questions is through Piazza)
Teaching assistants
The names and email addresses of the TAs will be announced in class and on Canvas.
Table of Contents
- Lectures: Tues and Thur - 12:00-1:15pm
- Classroom: Mason 1133
- Prerequisite: CS2200 (minimum grade: C)
- Credits: 3
- Note: There are two sections for CS3251 in Fall 2018. While the two sections will cover mostly the same material, there may be difference in topic sequencing and emphasis. It is important that students attend the lectures, do the HWs and programming assignments and take the tests for the section the student is registered in. This is syllabus is for SECTION B.
- Give the instructor a printed face-photo with your name, major and year of study: Aug 27
- Homework-1 due date: Sep 13
- Programming assignment #1 due date: Sep 20
- Fall break: Oct 8-9
- Programming assignment #2 -- design report due: Oct 11
- Homework-2 due date: Oct 18
- Midterm exam date: Oct 23, in class
- Programming assignment #2 -- partial implementation (phase-1) due: Nov 8
- Homework-3 due date: Nov 15
- Programming assignment #2 -- complete implementation due: Nov 27
- Homework-4 due date: Nov 30
- Last class: Dec 4
- Final exam date: Mon, Dec 10, 11:20am-2:10pm (comprehensive exam)
We will use the following textbook (required). It is referred to as
"KR" in the following (the authors' acronyms).
The following books are optional and they can be used as references for advanced
material:
- Week-1:
Architectural layers; Packet versus circuit switching; Delay and throughput; Protocols and service models
Readings: Chapter-1 of KR
Playtime: Install Wireshark on your laptop and learn how to use it
- Week-2:
Principles of network applications; An example: the HTML application-layer protocol; Network programming (basics).
Readings: Sections 2.1, 2.2 and 2.7 of KD-edition-7; Additional online material for socket programming.
Playtime: Play with ping
- Week-3:
Network programming (advanced); The DNS protocol
Readings: Section 2.4 of KR-edition-7; Additional online material for socket programming.
Playtime: Play with the DNS utilities nslookup or dig
- Week-4:
Link Layer: Error detection and correction; Multiple-Access Control (MAC) protocols, Switching
Readings: Sections 6.1, 6.2, 6.3, 6.4 of KR
Extra reading (about CRC): Tutorial on CRC
Playtime: Play with the following simple CRC calculator
- Week-5:
Wireless Networks; 802.11
Readings: Sections 7.1, 7.2, 7.3 of KR
Playtime: Play with WiFi monitoring and diagnostic tools
- Week-6:
Network Layer: Forwarding and routing; Datagram vs virtual-circuit networking;
Readings: Section 4.1 of KR-edition-7
Playtime: Play with smokeping
- Week-7:
Network Layer: What is in a router? The IP protocol
Readings: Sections 4.2, 4.3 of KR-edition-7
Playtime: Play with IP address/prefix allocation sites
- Week-8:
Network Layer: Link-State routing; Distance-Vector routing
Readings: Sections 5.1 and 5.2 of KR-edition-7
Playtime: Play with Paris traceroute or Scamper
- Week-9:
Network Layer: Hierarchical routing; Interdomain routing and BGP
Readings: Sections 5.3, 5.4 of KR-edition-7
Playtime: Play with BGP looking glass sites
- Week-10:
Transport Layer: Multiplexing applications; UDP protocol and unreliable datagram transport; Introduction to reliable data transport
Readings: Sections 3.1, 3.2, 3.3 of KR
Playtime: Play with throughput estimation tools
- Week-11:
Transport Layer: Reliable data transport; TCP basics; TCP connection management
Readings: Section 3.4 of KR
Playtime: Play with capacity estimation tools
- Week-12:
Transport Layer: RTT estimation; Flow control
Readings: Section 3.5 of KR
Playtime: Play with available bandwidth estimation tools
- Week-13:
Transport Layer: Principles of congestion control, TCP congestion control
Readings: Sections 3.6, 3.7 of KR
Playtime: Play with TCP diagnostic tools
- Week-14:
Multimedia Networking: Video streaming; Voice-over-IP
Readings: Sections 9.1, 9.2, 9.3 of KR
Playtime: Use Wireshark to understand how the Netflix video player or how Skype works
Material will be due at 11:59pm on the specified date and should be submitted using Canvas.
- Homeworks: We will have four homeworks throughout the semester. Each homework will include some problems that are of mathematical or algorithmic nature. Additionally, each homework will include a Wireshark exercise that you will do using your laptop. The homeworks will not have the same weight grade-wise (e.g., homework-1 may have a maximum of 50 points, homework-2 may have a maximum of 150 points, etc).
- Programming assignments: We will have two programming assignments.
The first will be simpler and it will be done individually. It will involve some basic sockets programming in Python, Java or C (your choice).
The second assignment will be significantly more challenging and it will be done by groups of two students (or individually, if that is what you prefer).
- Midterm exam: 15%
- Final exam: 30% Comprehensive (covers entire syllabus)
- Four homeworks and Wireshark exercises: 20%
- Programming assignment 1: 8%
- Programming assignment 2: 24%
- Class participation: 3%
- Bonus points (if the final CIOS participation level is more than 95%): 2%
Rough guidelines for calculation of final grade (this is only a ROUGH guideline!):
- 90% or more: A
- 80-90%: B
- 70-80%: C
- 60-70%: D
- less than 60%: F
Notes about grading
- I can only give out a grade of I for non-academic reasons.
- If you end up doing poorly in the class please don't ask for "extra work" to raise your grade. This would not be fair to other students.
- For those registered as P/F. A Pass requires that you earn a "C" or better and that you submit all work items and take the exam.
- For any questions about the lectures, please contact Constantine during office hours or through email.
- For any questions about homeworks or programming assignments, please post a question on Piazza (no anonymous posts will be allowed).
- For any questions about grades, please contact the Lead TA through email.
Class Participation
To do well in this course, students must take active and regular roles in discussion and demonstrate comprehension of the reading and lecture themes. To encourage this, there are three points allocated to class participation.
-
You can earn one point by submitting a printed recent face-photo, together with your name and major/year. You need to do so at the instructor's office (so that you know where his office is) by August 27. My hope is that I can use these photos to learn your names.
-
You can earn the additional two points by submitting handwritten questions at the end of lectures. The questions can ask about something that was covered in class and for which the student needs additional clarification or can ask other questions or make comments relating to the class material. Each question must have your name and be dated.
Each submitted question with a legitimate and valid question or comment will receive one class participation point up to a maximum of 2 points. Students may continue to ask questions even if they have already earned the maximum number of points. The instructor will follow up on some of the submitted questions in subsecquent class discussions.
-
In addition to the above, students are encouraged to come by Instructor or TA office hours as well as ask questions and participate in discussions on piaza.
- Late submission policy:
Assignments and programming assignments should be handed in on time -- by midnight the day the assignment is due. There is a 1 hour grace period for submitting assignments. There will be a 20% late penalty for material handed in 1-24 hours late and a 50% penalty for material submitted 24-48 hours late. Material that is submitted more than 48 hours late will not be accepted and will receive a ZERO grade.
- All work for this class is to be done individually, except the second programming assignment. That can be done by teams of two students or individually.
- You are strongly urged to familiarize yourselves with the
GT Student Honor Code
rules. Specifically, the following is not allowed:
- Copying, with or without modification, someone else's work when this work is
not meant to be publicly accessible (e.g., a classmate's program or solution).
- Submission of material that is wholly or substantially identical to that
created or published by another person or persons, without adequate credit
notations indicating authorship (plagiarism).
You are encouraged to discuss problems and papers with others as long as this
does not involve copying of code or solutions. Any public material that you
use (open-source software, help from a text, or substantial help from a
friend, etc...) should be acknowledged explicitly in anything you submit to us.
If you have any doubt about whether something is legal or not please do
check with the Instructor.