Lecture (Section 001): Mon, Wed, Fri, 2:30–3:20pm in WTHR 172

Instructor

Vishal Shrivastav
Assistant Professor

Office: BHEE 334B
vshriva@purdue.edu

Office Hours
Mon 4–5pm in BHEE 334B

The goal of this course is to provide students with a proper grounding in the fundamentals of computer networking. The course will cover classic concepts such as packet vs. circuit switching, Internet architecture principles, naming and addressing, routing, forwarding, reliability, flow control, congestion control, and socket programming. The later part of the course will introduce students to more advanced topics such as secure communication, router architecture, datacenter and software-defined network. The course will also provide students a hands-on experience of building practical and efficient networked systems and applications through various programming labs.

All course materials and grades will be posted on Brightspace. We will use Piazza as the discussion forum to post and discuss questions regarding the course.

1. Packet vs. Circuit Switching
2. Network Performance Metrics
3. Internet Architecture Principles
4. Data Link Layer – MAC Addressing, ARP, CSMA/CD, Switched Ethernet, MAC Learning, STP
5. Network Layer – IP Addressing, NAT, IP Forwarding, Distance Vector, Link State, BGP, DNS
6. Transport Layer – UDP, TCP Reliability, TCP Flow Control, TCP Congestion Control
7. Application Layer – Web, HTTP, TLS, HTTPS, HTTP/2, QUIC
8. Socket Programming
9. Secure Communication
10. Router Architecture
11. Datacenter and Software-defined Network

Proficiency in C and Python and familiarity with basic data structures (ECE 36800).

Computer Networks: A Systems Approach (5th edition), by Peterson and Davie, Morgan Kaufmann, 2011, Hardcover ISBN: 9780123850591, eBook ISBN: 9780123850607. The eBook is available for free through Purdue's online library—at this webpage click "Safari" and search for the book title. Note that while the class has a textbook, we will not follow its order of presentation; instead, we will use the textbook as a reference when covering each topic. The primary learning resource for this class will be the lecture slides posted on Brightspace.

50% — Programming Labs

  • Lab 0: Setting up the Environment – 0%
  • Lab 1: MAC Learning, Forwarding, and STP – 10%
  • Lab 2: Distributed Network Routing Protocols – 10%
  • Lab 3: Reliable Transport – 15%
  • Lab 4: HTTP Web Client and Server – 15%
Lab 1 and Lab 2 will be in Python while Lab 3 and Lab 4 will be in C. Each lab will be due in 3 weeks following its release, and must be done in a group of at most two students.

10% — Problem Sets
There will be 9 problem sets (PS1–PS9), each with equal credit. Problem sets will be open-book and must be done individually with no collaboration allowed. Each problem set will be due in 1 week following its release.

15% — Midterm Exam
Midterm exam will be closed-book with no collaboration allowed.

25% — Final Exam
Final exam will be closed-book with no collaboration allowed. The exam will cover the entire syllabus.

Barring extraordinary circumstances (serious medical situations or family emergencies, accompanied by verification and a prior notification to the instructor), no extensions or make-ups will be granted for labs, problem sets, and exams.

Students who are most active and helpful in answering questions on Piazza may receive bonus points.

Policy for Late Submissions

For Programming Labs:
If submitted within 24 hours (1 day) after the deadline – 30% grade penalty.
If submitted within 48 hours (2 days) after the deadline – 50% grade penalty.
No submissions will be accepted beyond 48 hours (2 days) after the deadline.

For Problem Sets:
If submitted within 24 hours (1 day) after the deadline – 50% grade penalty.
No submissions will be accepted beyond 24 hours (1 day) after the deadline.

Nouman Abbasi
Graduate TA
Office Hours
Tue 3–4pm in BHEE 209
abbasi5@purdue.edu
Ruochong (Robert) Wu
Graduate TA
Office Hours
Fri 12–1pm in BHEE 209
wu1188@purdue.edu
Shiyang Wang
Graduate TA
Office Hours
Wed 4–5pm in BHEE 209
wang5348@purdue.edu
Mohmmad Alwakeel
Undergraduate TA
Office Hours
Thu 1:30–2:30pm in BHEE 209
malwake@purdue.edu
Amine Ben Jemia
Undergraduate TA
Office Hours
Mon 12–2pm in BHEE 209
abenjemi@purdue.edu

Unless expressly allowed, students are expected to complete all the problem sets, exams, and programming labs by themselves (or within their chosen group for programming labs). However, students are allowed to discuss general issues with other students (programming techniques, clearing up confusion about requirements, etc.). Students may discuss particular algorithmic issues on Piazza (but they must not post or copy code!). If there is any doubt, students should contact the instructor.

Course staff will be using software designed to catch plagiarism in programming labs and copying on problem sets and exams. A student is considered in violation of the academic honesty policy regardless of whether they are the one "copying" or the one "being copied from".

Academic integrity is one of the highest values that Purdue University holds. Individuals are encouraged to alert university officials to potential breaches of this value by either emailing integrity@purdue.edu or by calling 765-494-8778. While information may be submitted anonymously, the more information is submitted the greater the opportunity for the university to investigate the concern. More details are available on our course Brightspace under "University Policies".

Punishments for academic dishonesty are severe, including receiving a failing grade in the course or being expelled from the university. By departmental rules, all instances of cheating will be reported to the Dean of Students. On the first instance of cheating on a programming lab, problem set, or exam, students involved will receive a 0; the second instance of cheating will result in a failing grade in the course.

Use of Copyrighted Materials. All course materials, including lecture slides, problem sets, programming labs, examinations, and solutions are subject to Purdue's copyright policies. Students must not share, distribute, or post any material on an online web site without checking with the instructor.