ECE/CS 438 Communication Networks - Fall 2019


Course Overview:

Computer communication networks are among the most important and influential global infrastructures that humanity has created. The goal of this course is to provide a foundational view of communication networks: the principles upon which the Internet and other computer networks are built; how those principles translate into deployed protocols; and hands-on experience solving challenging problems with network protocols.

This course will introduce students to the key concepts underlying wired and wireless networking. The layered architecture of the network protocol stack will be the focus of discussion. Alongside, a variety of case studies will be drawn from the Internet, combined with practical programming exercises. At the end of the semester, students will understand several concepts, including the Internet architecture, HTTP, DNS, P2P, Sockets, TCP/IP, BGP, Routing protocols, wireless and sensor networking, WiFi, cellular and satellite networks, security, etc.



Lecture Time: Monday & Wednesday 3:00pm - 4:20pm

Lecture Location: ECEB 1015 & Overflow Room: ECEB 2015



Course Staff:

Instructor:             Haitham Hassanieh (haitham@illinois.edu)
Office Hours:         TBD.

Course TA:            Sohrab Madani (smadani2@illinois.edu)
Office Hours:         Monday 1:00 pm - 2:00 pm in ECEB 5034.

Course TA:            Youjie Li (li238@illinois.edu)
Office Hours:         Tuesday 8:00 am - 9:00 am in ECEB 5034.

Course TA:            Jayden Guan (jguan8@illinois.edu)
Office Hours:         Wednesday 1:00 pm - 2 pm in ECEB 5034.



Piazza:                       http://piazza.com/illinois/fall2019/ececs438

GradeScope:            https://www.gradescope.com Entry Code: 9G6652



Textbook:                Computer Networking (A Top-Down Approach Featuring the Internet) J. F. Kurose and D. W. Ross, 7th edition, Addison-Wesley.



Grading:

3 credits 4 credits
Homework: 16% 12%
Programming Assignments: 34% 28%
Midterm Exam: 20% 15%
Final Exam: 30% 25%
Mini-Project: 0% 20%


Please refer to the course website for all course announcements, schedule and material.

Website: https://courses.engr.illinois.edu/ece438



Description:

Computer communication networks are among the most important and influential global infrastructures that humanity has created. The goal of this course is to provide a foundational view of communication networks: the principles upon which the Internet and other computer networks are built; how those principles translate into deployed protocols; and hands-on experience solving challenging problems with network protocols.

This course will introduce students to the key concepts underlying wired and wireless networking. The layered architecture of the network protocol stack will be the focus of discussion. Alongside, a variety of case studies will be drawn from the Internet, combined with practical programming exercises. At the end of the semester, students will understand several concepts, including the Internet architecture, HTTP, DNS, P2P, Sockets, TCP/IP, BGP, Routing protocols, wireless and sensor networking, WiFi, cellular and satellite networks, security, etc.



Lecture Time: Monday & Wednesday 3:00pm - 4:20pm

Lecture Location: ECEB 1015 & Overflow Room: ECEB 2015



Course Staff:

Instructor:             Haitham Hassanieh (haitham@illinois.edu)
Office Hours:         TBD.

Course TA:            Sohrab Madani (smadani2@illinois.edu)
Office Hours:         Monday 1:00 pm - 2:00 pm in ECEB 5034.

Course TA:            Youjie Li (li238@illinois.edu)
Office Hours:         Tuesday 8:00 am - 9:00 am in ECEB 5034.

Course TA:            Jayden Guan (jguan8@illinois.edu)
Office Hours:         Wednesday 1:00 pm - 2 pm in ECEB 5034.



Piazza:   http://piazza.com/illinois/fall2019/ececs438

Please post all general questions about lectures, homework, programming assignments, and exams on Piazza rather than emailing the staff so that others get the benefit of your questions. It is unlikely that we respond to email. If you choose, you can post anonymously to your classmates. However, the instructors will always see the author of a post. If you wish to communicate privately with the staff, please use the private communication function on Piazza.

The goal of Piazza is to generate discussion among students. The staff will monitor Piazza regularly but will not respond directly to give other students a chance to respond. We cannot guarantee a response to every question especially for last minute questions before assignment deadlines and exams. Please use the following etiquette:

  • Post your question significantly before the deadline if you want a response.
  • Monitor Piazza for answers to your classmates' questions and other clarifications and announcements. Many students will have similar questions.
  • Before asking a question check if it has already been answered on the class webpage, the slides, or on Piazza itself. It takes 1 min for you to check before asking. By asking questions that have already been answered, you create a lot of spam for everyone that distracts from new questions.
  • Help answer each other's questions. We will try to approve non-staff answers if they are correct and we have time.
  • Please be courteous to the staff and your classmates.




Main Textbook: Computer Networking (A Top-Down Approach Featuring the Internet), by J. F. Kurose and D. W. Ross, 6th or other editions, Addison-Wesley.

Other Textbooks: - Computer Networks: A Systems Approach, by Peterson and Davie, 5th edition, Morgan Kaufmann
- Computer Networks, A. S. Tanenbaum, 5th edition, Prentice-Hall
- UNIX Network Programming, by W. Richard Stevens, 3rd Edition, Addison-Wesley.
- Mathematical Foundations of Computer Networking, by S. Keshav, 1st Edition, Addison-Wesley



Homework Assignments:

There will be 4 homework assignments.
  • Release & Due Date: The deadlines and release dates are tentative and subject to change. Please refer regularly to the course schedule for updates.
  • Submission: All assignments must be submitted online through GradeScope by 11:59pm on the due date. Hard copies are not accepted.
  • Groups: Homework assignments can be done in groups of 2. Please be sure to include your partner's name in the GradeScope submission. Please use Piazza to find a partner.
  • GradeScope: Please sign up for GradeScope using your @illinois.edu email. Otherwise, we cannot map your grade properly. Please make sure to include you your partners ID. It is your responsibility to make sure your partner includes you ID. Sign up code: 9G6652
  • Writing the Assignment: You do not have to type your assignments. You are allowed to write them, scan them and submit a scanned pdf. However, if you choose to write it, make sure it is clearly written. We will not correct anything we do not understand.
  • Questions: Unlike 100, 200, & 300 level courses, homework questions in 438 tend to be subjective and open to interpretation. This is more inline with the type of questions or tasks you will be given in a real job. It is up to you to figure it out.
  • Solutions: We will not release the solutions to the assignments. The graders will write comments on grade scope.
  • Regrade Requests: You are allowed to submit a regrade request up to 2 weeks after the grades are released. All regrade requests must be submitted in writing on Gradescope. You can also ask for clarifications during office hours or via private messages on Piazza. Do not copy paste your solution publicly on Piazza.
  • Late Submission: You must submit your homework on time. No late submissions are allowed. If you have extenuating circumstances, please send a private message on Piazza and we will consider your request. Note, however, that you are allowed to submit in groups of 2 to mitigate such scenarios and working alone is not an excuse.
  • Rudeness: Please be courteous. Being rude to the staff because you do not like the grade, the question, or the solution will result in an automatic zero on the homework and a potential report to FAIR system depending on the severity of the infraction.

Homework: Release Date Due Date
1. Basic Concepts & Application Layer Monday, Sep. 9 Sunday, Sep. 15 at 11:59pm
2. Application & Transport Layer Monday, Sep. 23 Sunday, Sep. 29 at 11:59pm
3. Transport & Network Layer Monday, Oct. 28 Sunday, Nov. 4 at 11:59pm
4. Link Layer & Wireless Monday, Dec. 2 Sunday, Dec. 8 at 11:59pm



Programming Assignments:

There will be 4 programming assignments.
  • Release & Due Date: The deadlines and release dates are tentative and subject to change. Please refer regularly to the course schedule for updates.
  • Submission: All programming assignments must be submitted online through GitHub by 11:59pm on the due date.
  • Groups: Programming assignments can be done in groups of 2. Only one person needs to submit the assignment. Please be sure to follow the instructions on how you set your partners name otherwise she/he will not get the grade.
  • Solutions: We will not release the solutions to the assignments. There is an autograder. You can keep submitting until you get it right.
  • Grade: You can submit your assignment many times and see the grade that the autograder gives you. Your final grade will be the maximum among all the times your submitted. Note, however, that the autograder has queue and it significantly slows down before the deadline when 150 students try to submit at the same time.
  • Code: All programming assignments solutions must be in C or C++. However, if you choose to use C++, you are not allowed to use any socket programming library, all the networking should be done using the standard C API taught in class. Furthermore, if you need to use a library for data structures, you must get the approval of the course staff and you must acknowledge the source in a README. However, algorithms (e.g. Dijkstra's) must be your own.
  • Debugging: It is your job to debug your own code. The staff can answer general questions. However, we will not look at your code.
  • Late Submission: You must submit your MPs on time. No late submissions are allowed. If you have extenuating circumstances, please send a private message on Piazza and we will consider your request.

Programming Assignment: Release Date Due Date Grade % 3 (4) credits
0. Socket Programming Monday, Aug. 26 Never 0% (0%)
1. HTTP Client & Server Monday, Sep. 16 Sunday, Sep. 22 at 11:59pm 4% (4%)
2. Congestion Control Monday, Sep. 30 Sunday, Oct. 13 at 11:59pm 10% (8%)
3. Routing Monday, Nov. 3 Sunday, Nov. 17 at 11:59pm 10% (8%)
4. Medium Access Control Monday, Nov. 18 Sunday, Dec. 1 at 11:59pm 10% (8%)



Collaboration Policy:

The homework should be done in groups of two. You are allowed to discuss the problems with other students. However, you must write your own homework solution.

The programming assignments are in groups of two. You must write all the code you hand in for the programming assignments. You are not allowed to look at anyone else's solution. You may also discuss the assignments with other students, but you may not look at or use each other's code. Code plagiarism will be checked using an automated detector.



Academic Integrity:

The University of Illinois at Urbana-Champaign Student Code should also be considered as a part of this syllabus. Students should pay particular attention to Article 1, Part 4: Academic Integrity. Read the Code at the following URL: http://studentcode.illinois.edu/.

Academic dishonesty may result in a failing grade. Every student is expected to review and abide by the Academic Integrity Policy: http://studentcode.illinois.edu/. Ignorance is not an excuse for any academic dishonesty. It is your responsibility to read this policy to avoid any misunderstanding. Do not hesitate to ask the instructor(s) if you are ever in doubt about what constitutes plagiarism, cheating, or any other breach of academic integrity.

All students caught cheating will be reported with no exceptions to the College of Engineering through the FAIR (Faculty Academic Integrity Reporting) system which will go on record.



Midterm & Final Exam:

There is one Midterm and one Final Exam. The final exam is comprehensive and will cover all material presented in the class. The midterm will cover all material up to the lecture before the exam. Both midterm and final are closed book. You are allowed to bring a handwritten cheat sheet to the exams (1 double sided letter paper for the midterm and 2 double sided letter paper for the final). You must submit the cheat sheet so make sure to photocopy it. Further details about the midterm and final will be announced during the course.

The Midterm is tentatively set for Oct. 21 at 7pm in ECEB 1002. There will be no class on that day. A conflict exam will be scheduled on a need basis. If you have a conflict during this time, please let us know as soon as possible via a private message on Piazza.



Mini-Project:

Students taking the class for 4 credits are required to do a mini-project and submit a term report. The project can be done in groups of 1, 2, 3 or 4 but not more. Students will first submit a 1 page project proposal by Nov 11 at 11:59pm. The final project report (~6 pages) will be due by Dec. 18 at 11:59pm.

More details on the mini-project as well as project suggestions will be provided to the students at a later stage.



Grading:

3 credits 4 credits
Homework: 16% 12%
Programming Assignments: 34% 28%
Midterm Exam: 20% 15%
Final Exam: 30% 25%
Mini-Project: 0% 20%


Note: This schedule is tentative and subject to change over time due to unforeseen events. Please check it regularly.

# Date Topics & Slides Notes
1 Aug. 26 1.Introduction.pptx, 1.Introduction.pdf
Introduction: Course Overview & Logistics
Programming Assignment 0 (Will not be graded)
Beej's Guide to Network Programming
2 Aug. 28 Introduction: Basic concepts: Network architecture, Network edge & core, performance, Protocol layers, Internet History
Sep. 02 Labor Day (No Classes)
3 Sep. 04 2.Application.pptx, 2.Application.pdf
Application Layer: Application Layer Principles
4 Sep. 9 Application Layer: Socket Programming, Web & HTTP Homework 1
(Due Sunday Sep. 15, 11:59pm)
5 Sep. 11 Application Layer: Email, DNS
6 Sep. 16 Application Layer: P2P, Video Streaming Programming Assignment 1
(Due Sunday Sep. 22, 11:59pm)
7 Sep. 18 3.Transport.pptx, 3.Transport.pdf
Transport Layer: Transport Layer Services, (De)Multiplexing, UDP
8 Sep. 23 Transport Layer: Reliable Data Transfer Homework 2
(Due Sunday Sep. 29, 11:59pm)
9 Sep. 25 Transport Layer: Reliable Data Transfer, TCP
10 Sep. 30 Transport Layer: TCP Programming Assignment 2
(Due Sunday Oct. 13, 11:59pm)
11 Oct. 02 Transport Layer: TCP Congestion Control
12 Oct. 07 4.Network.pptx, 4.Network.pdf
Network Layer: Data Plane and Control Plane
13 Oct. 9 Network Layer: Routers
14 Oct. 14 Network Layer: IP
15 Oct. 16 Midterm Review Session
16 Oct. 21 Midterm Exam at 7:00 pm in ECEB 1002
17 Oct. 23 Network Layer: Routing Algorithms
18 Oct. 28 Network Layer: Intra-AS and Inter AS Routing Homework 3
(Due Sunday Nov. 3, 11:59pm)
19 Oct. 30 Network Layer: SDNs, ICMP, Network Management
20 Nov. 04 Link Layer: Framing, Error Detection and Correction Programming Assignment 3
(Due Sunday Nov. 17, 11:59pm)
21 Nov. 06 Link Layer: Multiple Access Protocols
22 Nov. 11 Link Layer: LANs Project Proposal Due (4 credit students)
23 Nov. 13 Link Layer: VLANs
24 Nov. 18 Link Layer: Programming Assignment 4
(Due Sunday Dec. 1, 11:59pm)
25 Nov. 20 Wireless:
Nov. 25 Thanksgiving Vacation
Nov. 27 Thanksgiving Vacation
26 Dec. 02 Wireless: Homework 4
(Due Sunday Dec. 8, 11:59pm)
27 Dec. 04 Wireless:
28 Dec. 9 Security:
29 Dec. 11 Security:
Dec. 16 Final Exam at 7:00 pm in ECEB 1013 & 1015
Dec. 16 Final Project Due Final Project Report Due (4 credit students)