CSCI-325: Network Programming

Fall 2023

Instructor

Instructor: Brad Richards
Lectures: TH 409 — MF 12:00-1:20
Phone: 879-3579
Email: brichards@pugetsound.edu
Office: Thompson 401
Office Hours: M 10:10-10:50, W 10:10-10:50, Th 12-12:50, F 10:10-10:50 (via Zoom)
Tutor Schedule: Departmental tutors
CWL Tutors: subject tutors
Course Comments: anonymous comment form
Department Comments: anonymous comment form

Contents

Resources:

Schedule:

Week Topic Reading Assignment
8/28 History, Network Architecture, Switching Chapter 1 Classroom exercise
Asmt 1 (solns)
9/4 Delay & Loss, Protocol Layers, Application Layer Intro
No Class Monday
Chapter 2  
9/11 HTTP, Email, DNS, Sockets Programming Chapter 2 Asmt 2 (soln)
9/18 More Sockets Programming, Link Layer intro Chapter 2 & 6  
9/25 Framing, Error detection, Local Area Networks Chapter 6 Asmt 3 (solns)
10/2 Wireless Networking Chapter 7 Exam Friday
old exam, old solns, topics new solns
10/9 WiFi Chapter 7 802.11 Project Overview
Checkpoint #1
10/16 Finish wireless
No class Monday
Chapter 7  
10/23 Transport layer, UDP, Reliability Chapter 3 Checkpoint #2
10/30 More on reliability, TCP Chapter 3  
11/6 Network Layer, Routing & Queueing Chapter 4 Checkpoint #3
11/13 IPv4, IPv6 Chapter 4 Exam Friday
old exam, old solns, topics, new solns
11/20 Routing Algorithms
No class Friday
Chapter 5 Final Checkpoint
11/27 Finish Routing Chapter 5  
12/4 Future of the Internet, Attacks and Exploits
No Class Friday
  Links to Net Neutrality articles

Background:

This course is an introduction to both the concepts behind modern computer networks and their implementation. During the course of the semester we will cover most of the Computer Networks book (though not in order), and supplement the material with exercises from the book and a series of programming assignments. The programming assignments will be challenging, but will give you direct experience with network fundamentals. This course covers the following CC2013 learning outcomes. Students successfully completing the course will be able to:

This course builds progressively on previously covered material. Therefore, it is essential to attend all classes and keep up with the reading and the assignments. Students are expected to attend all lectures, with exceptions permitted in case of illness and family emergencies, and should do the assigned readings before the relevent class.

Grading:

Homework for this class will be submitted electronically. Late homework will be penalized 5% per day, and will not be accepted more than one week late. The following grade cutoffs are upper bounds — they might come down, but will not be set higher: A = 95, A- = 90, B+ = 88, B = 83, B- = 80, C+ = 77, C = 73, C- = 70, D+ = 67, D = 64, D- = 60, F = <60. Your overall grade is composed as follows:

Community Statement:

The course will work best if we respect and welcome each other no matter what level of "readiness" we are at, and we all support one another in learning. I will not tolerate behaviors that could negatively affect another student's classroom experience. Such behaviors might include: making rude or condescending comments, snickering at others' questions or comments, talking over other individuals, and so on. I reserve the right to withdraw a student from this class who is repeatedly exhibiting such behavior.

The goals of this course can only be accomplished in a setting of mutual respect, where ideas, questions, and misconceptions can be discussed with civility. As your instructor, I am committed to creating a classroom environment that welcomes all students, regardless of their identities (e.g., race, class, gender, sexual orientation, religious beliefs). I firmly believe that everyone in the class is fully capable of engaging and grasping the material, and that the world of computing is stronger when it includes the broadest possible set of perspectives. We all have unconscious biases, and I will try to continually examine my judgments, words, and actions to keep my biases in check and treat everyone fairly. I hope that you will do the same. If you feel comfortable, please let me know if there is anything I can do to make sure everyone is encouraged to succeed in this class.

Academic Integrity

The assignments form a crucial part of the course and, unless stated otherwise, students are required to work on them individually. Please ensure that any work you take credit for is your own. Inappropriate collaboration with other students is not permitted and will be subject to severe penalties. In particular, sharing your work in any way with other students (e.g. code inspection, sharing code electronically via email or photos, etc) is inappropriate, as is copying part or all of someone else's work. Code or other hints found online must be attributed, and should not compromise your ownership of the work. Please review the university's Academic Integrity policy and ask me if you have any questions regarding its application to this course.

University, Academic, and Administrative Policies

There are many university policies and resources that offer guidance on how to be safe and make the most of your college education. Here are a few that you should take a moment to review: