ECE/CS 438 Communication Networks - Fall 2017


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 well 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 & Location: Monday & Wednesday 3:00pm - 4:20pm in ECEB 1015



Course Staff:

Instructor:             Haitham Hassanieh (haitham@illinois.edu)
Office Hours:         Monday/Wednesday 4:20pm - 5:00pm in Class.

Course TA:            Ashutosh Dhekne (dhekne2@illinois.edu)
Office Hours:         Wednesday 1:00pm - 3:00pm in CSL B05 Basement Lounge.

Course TA:            Suraj Jog (sjog2@illinois.edu)
Office Hours:         Thursday 2:00pm - 4:00pm in CSL 369.



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



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



Grading:

3 credits 4 credits
Homework: 15% 10%
Programming Assignments: 30% 25%
Midterm Exam: 25% 20%
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 well 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 & Location: Monday & Wednesday 3:00pm - 4:20pm in ECEB 1015



Course Staff:

Instructor:             Haitham Hassanieh (haitham@illinois.edu)
Office Hours:         Monday/Wednesday 4:20pm - 5:00pm in Class.

Course TA:            Ashutosh Dhekne (dhekne2@illinois.edu)
Office Hours:         Wednesday 1:00pm - 3:00pm in CSL B05 Basement.

Course TA:            Suraj Jog (sjog2@illinois.edu)
Office Hours:         Thursday 2:00pm - 4:00pm in CSL 369.



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

Please post all general questions about lectures, homework, or programming assignments on Piazza rather than emailing the staff, so that others get the benefit of your questions. If you choose so, you can post anonymously to your classmates, the instructors will always see the author of a post. If you wish to communicate anonymously 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 and will try to respond to questions. However, we cannot guarantee a response 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 from staff.
  • Monitor Piazza for answers to your classmates' questions and other clarifications and announcements. Many students will have similar questions.
  • Help answer each other's questions. We will try to approve non-staff answers if they are correct and we have time.




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 3 homework assignments. The deadlines and release dates are tentative and subject to change. Please refer regularly to the course schedule for updates. All assignments must be submitted online through compass by 11:59pm on the due date. Homework assignments are individual. Each student should submit his or her own 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. Do not print your assignment and bring it to class. We will not accept it. Finally, different TAs are responsible for different homework. Please direct your questions to the TA in charge of each homework.

Homework: Release Date Due Date TA in Charge
1. Basic Concepts & Application Layer Sep. 6 Sep. 20 at 11:59pm Suraj Jog
2. Transport Layer: TCP, UDP Sep. 20 Oct. 11 at 11:59pm Suraj Jog
3. Link Layer Nov. 15 Dec. 4 at 11:59pm Ashutosh Dhekne



Programming Assignments:

There will be 4 homework assignments. The deadlines and release dates are tentative and subject to change. Please refer regularly to the course schedule for updates. All assignments must be submitted through SVN by 11:59pm on the due date. Programming assignments can be done in groups of 2. Only one needs to submit the assignment however, it should clearly indicate who is the other student in the group is and have Group.txt file with only the netid of each member on two lines. Different TAs are responsible for different programming . Please direct your questions to the TA in charge of each assignment.

All programming assignments solutions must be in C or C++. However only C will be supported by the staff (meaning we will not always answer code-related questions on C++). 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. Additionally, you must acknowledge the source in a README. However, algorithms (e.g. Dijkstra's) must be your own. It is your job to debug your own code. The staff can answer general question. However, we will not look at your code.

Programming Assignment: Release Date Due Date TA in Charge
0. Socket Programming Aug. 28 Never Ashutosh Dhekne
1. HTTP Client & Server Sep. 13 Oct. 2 at 11:59pm Ashutosh Dhekne
2. Congestion Control Oct. 02 Oct. 30 at 11:59pm Ashutosh Dhekne
3. Routing Oct. 30 Nov. 15 at 11:59pm Suraj Jog
4. Medium Access Control Nov. 15 Dec. 6 at 11:59pm Suraj Jog



Late Submission Policy:

You can hand in your homework and programming assignments late, but the total amount of lateness summed over all the deadlines must not exceed 100 hours. You must submit all homework assignments through compass and all programming assignments through SVN so we can track the number of late hours. You can divide up your 100 hours among the homework and programming assignments however you like; you don't have to ask or tell us. We recommend that you try not to waste all the 100 hours on your first assignment. You are not allowed to ask for any extensions!
  • For Homework Assignments: If you don't hand in a homework at all, we'll give it an F. If you hand it in late, and your total late time (including the late time for that assignment) exceeds 100 hours, then we'll give it an F. Solutions for assignments will be released 100 hours past the deadline.

  • For Programming Assignments: If you don't hand in an assignment at all, or don't hand it in by the last day of classes, we'll give the assignment an F. If you hand an assignment in late, and your total late time (including the late time for that assignment) exceeds 100 hours, and you hand it in by the last day of classes, then we'll give it a D.



Collaboration Policy:

The homework should be done individually. You are allowed to discuss the problems with other students. However, if you do, you must write your own homework solution and must explicitly state at the top of you solution the name(s) of students you discussed your solution with.

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 cheat sheet to the exams (1 double sided letter paper for the midterm and 2 double sided letter paper for the final). Further details about the midterm and final will be announced during the course.

The Midterm is tentatively set for Oct. 23 at 6pm. There will be no class on that day. If you have a conflict during this time, please let us know as soon as possible.



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 2 or 3 but not 1. Students will first submit a 1 page project proposal by Nov 6th. We will then schedule a meeting to discuss and approve the projects. The final project report (4-5 pages) will be due by the final day of exams which is Dec. 22nd.

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: 15% 10%
Programming Assignments: 30% 25%
Midterm Exam: 25% 20%
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. 28 1.Introduction.pptx, 1.Introduction.pdf
Introduction: Course Overview & Logistics
2 Aug. 30 Introduction: Basic concepts: Network architecture, Network edge & core, performance, Protocol layers, Internet History Programming Assignment 0 (Will not be graded)

Beej's Guide to Network Programming
Sep. 04 Labor Day (No Classes)
3 Sep. 06 2.Application.pptx, 2.Application.pdf
Application Layer: Application Layer Principles
Homework 1 (Due Sep. 20)
4 Sep. 11 Application Layer: Socket Programming, Web & HTTP
5 Sep. 13 Application Layer: Email, DNS Programming Assignment 1 (Due Oct. 02)
6 Sep. 18 Application Layer: P2P, Video Streaming
7 Sep. 20 3.Transport.pptx, 3.Transport.pdf
Transport Layer: Transport Layer Services, Multiplexing and Demultiplexing, UDP
Homework 1 Due
Homework 2 (Due Oct. 11)
8 Sep. 25 Transport Layer: Reliable Data Transfer
9 Sep. 27 Transport Layer: Reliable Data Transfer, TCP
10 Oct. 02 Transport Layer: TCP Programming Assignment 1 Due
Programming Assignment 2 (Due Oct. 30)
11 Oct. 04 Transport Layer: TCP Congestion Control
12 Oct. 09 Network Layer
13 Oct. 11 Network Layer Homework 2 Due
14 Oct. 16 Midterm Review Session
15 Oct. 18 Network Layer
16 Oct. 23 Midterm Exam
17 Oct. 25 Network Layer
18 Oct. 30 Network Layer Programming Assignment 2 Due
Programming Assignment 3 (Due Nov. 15)
19 Nov. 01 Link Layer:
20 Nov. 06 Link Layer: Project Proposal Due (4 credit students)
21 Nov. 08 Link Layer:
22 Nov. 13 Wireless:
23 Nov. 15 Wireless: Programming Assignment 3 Due
Programming Assignment 4 (Due Dec. 6)
Homework 3 (Due Dec. 4)
Nov. 20 Thanksgiving Vacation
Nov. 22 Thanksgiving Vacation
24 Nov. 27 Wireless:
25 Nov. 29 Wireless:
26 Dec. 04 Security Homework 3 Due
27 Dec. 06 Security Programming Assignment 4 Due
28 Dec. 11 TBD
29 Dec. 13 Final Review Session
TBD Final Exam
Dec. 22 Final Project Due Final Project Report Due (4 credit students)