
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.
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% |
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 |
5.Link.pptx, 5.Link.pdf
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, Data Centers, Synthesis |
|
24 |
Nov. 18 |
6.Wireless.pptx, 6.Wireless.pdf
Wireless: Links and channel |
Programming Assignment 4
(Due Sunday Dec. 1, 11:59pm) |
25 |
Nov. 20 |
Wireless: MAC |
|
|
Nov. 25 |
Thanksgiving Vacation |
|
|
Nov. 27 |
Thanksgiving Vacation |
|
26 |
Dec. 02 |
Wireless: 802.11, Cellular 3G, 4G |
Homework 4
(Due Sunday Dec. 8, 11:59pm) |
27 |
Dec. 04 |
Wireless: Mobility, Handoff, Advanced Topics |
|
28 |
Dec. 9 |
7.Security.pptx, 7.Security.pdf
Security: Crypto, RSA, Authentication, Digital Signatures, SSL/TLS |
|
29 |
Dec. 11 |
Final Review |
|
|
Dec. 16 |
Final Exam at 7:00 pm in ECEB 1013 & 1015 |
|
|
Dec. 18 |
Final Project Due |
Final Project Report Due (4 credit students) |
|