CSE 310: Computer Networks

Fall 2021

Time: T/Th 11:30 AM - 12:50 PM

Instructor: Shubham Jain (jain [at] cs [dot] stonybrook [dot] edu)


Course Description

The goal of this course is to cover the introductory topics in networking. We will learn how network applications such as the Web work, what constitutes the "Internet", and how information is transmitted from one part of the world to another. More importantly we will learn the design patterns and general principles in designing Computer Networks. We we learn networking concepts using the OSI layer abstraction going from the application layer all the way down to the physical layer. The class will have a mix of programming assignments and homeworks, take-home exams, and a final exam.


The recommended textbook is: Computer Networks, A Top Down Approach by Kurose and Ross. 7th Edition

I will also make my slides and other reading material available through Piazza. Assignment submissions must be done on Blackboard.

Grading Policy (Tentative)

Final exam: 20%
Midterm Exam: 20%
Programming Assignments: 30%
Homeworks: 30%

Programming Assignments: There will be 3 programming assignments. You will get about 2 weeks for each assignment. The assignments are programming heavy. You can program in Python or C. Python is by far the easiest for the assignments and I will strongly advice you to use Python. Assignments should be submitted by 11.59 PM on the day they are due. You will typically get 2 weeks to finish your homework.

Homeworks: There will be 3 homeworks. These do not require programming and are written assignments. They are due before 11.59 PM on the day they are due. You will typically get 1 week to finish each homework.

Midterm and Final Exam: These will be timed exams. Details will be shared closer to the exam date.

Submissions instructions and total attempts: We will use Blackboard for submissions. If you want to resubmit after you already submitted one version of your assignment, you may do so. But you are allowed a maximum of 2 resubmissions (i.e., a maximum of 3 attempts). Irrespective of anything else, your last attempt will be considered. This means, if you submit one version of your homework before the deadline and submit another version after the deadline, we will grade the later submission and grade you according to the late submission policy.

Grace period: You get a 72 hours grace period spanning all 3 assignments. You will not be penalized as long as the total hours that you are late does not exceed 72 hours across your assignments. Once your grace period is over, each assignment you submit late will be subject to the late penalty below.

Late submission policy: If you submit your assignment at hour h after your deadline (after your grace period), here are the grade penalties

Re-grading Requests

All issues with grading must be brought up with the instructors on Piazza (in a private post) within 1 week of release of the graded assignment or exam. Any requests/concerns after this date will not be honored. The request must include a detailed explanation of the specific grading issues and reason/correction. We believe students often learn by investigating and understanding their mistakes. Therefore, it is the responsibility of the student to determine the issues, not the grader/instructor/TA. To promote consistency of grading, questions and concerns about grading should be addressed first to the TA and then, if that does not resolve the issue, to the instructor.

Office Hours

Office hours will be announced on Piazza.

The following schedule is tentative and subject to change.

Week Date Topic Reading
Week 1 8/24 Introduction and Course Overview
  • KR 1.1
8/26 Application Layer
  • Introduction and Overview
  • KR 1.5, 2.1.1, 2.1.5
Week 2 8/31
  • HTTP Protocol
  • KR 2.2.1 - 2.2.3
  • DNS
  • KR 2.4
Week 3 9/7
  • CDN
  • KR 2.6.2; 2.6.3
  • Sockets
Homework 1 out (Sep 8)
Week 4 9/14
    Transport Layer
  • Introduction
  • KR 3.1, 3.2
  • TCP
Homework 1 due (Sep 15)
Programming Assignment 1 out (Sep 15)
  • KR 3.5.1, 3.5.2
Week 5 9/21
  • Wireshark Hands-on
  • TCP Reliable Data Transfer principles
  • KR 3.4.1, 3.5.4
Week 6 9/28
  • TCP Flow Control
  • KR 3.5.3, 3.5.5
  • TCP Congestion Control
Programming Assignment 1 due (Sep 29)
  • KR 3.6.1, 3.7.1
Week 7 10/5
  • UDP
Programming Assignment 2 out (Oct 4)
  • KR 3.3.1
    Network Layer
  • Overview and Introduction
  • Internet Protocol
  • KR 4.3.3, 4.3.4
Week 8 10/12 FALL BREAK. NO CLASS.
  • Network Addressing
  • KR 4.3.3
Week 9 10/19
  • Forwarding
Programming Assignment 2 due (Oct 18)
Homework 2 out (Oct 18)
  • KR 4.1.1, 4.2
  • Intra-domain Routing
  • KR 5.2.1, 5.2.2
Week 10 10/26
  • Intra-domain Routing
Homework 2 due (Oct 25)
  • KR 5.2.1, 5.2.2
10/28 Midterm Exam
Week 11 11/2
  • Inter-domain routing
Homework 3 out (Nov 1)
  • KR 5.4
  • Link Layer
  • KR 6.1, 6.4.1, 6.4.3
Week 12 11/9
  • Link Layer: Ethernet
Homework 3 due (Nov 8)
Programming assignment 3 out (Nov 8)
  • KR 6.3.1, 6.3.2
  • Link Layer: WiFi
  • KR 7.3.1 - 7.3.4
Week 13 11/16
  • TBD
  • Wireless and Mobile Networks
Week 14 11/23
  • Physical Layer
Programming assignment 3 due (Nov 23)
  • KR 1.2.2
Week 15 11/30
  • Data Centers and SDN
  • Introduction to Distributed Systems

    Final exam during exam week.