CSCI-325: Network Programming

Fall 2019


Instructor: Brad Richards
Lectures: TH 374 — MF 12:00-1:20
Phone: 879-3579
Office: Thompson 401
Office Hours: MWF 11-11:50, Th 10:10-10:50
Tutor Schedule: See online schedule




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


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.

The programming assignments form a crucial part of the course, and students are required to work on them individually unless otherwise specified. Inappropriate collaboration with other students will be subject to severe penalties. I encourage you to interact with each other and discuss possible implementation approaches, but any sharing of code — even algorithms or designs — will be considered cheating. Please review the Academic Integrity section in The Logger and ask me if you have any questions regarding its application to this course.

If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Peggy Perno, Director of the Office of Student Accessibility and Accommodation, 105 Howarth Hall, 253-879-3395. She will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.


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: Participation: At the end of the semester you will receive a score of 0 through 5 for participation. The "default" grade will be a 2.5 meaning you were generally physically present and mentally engaged. A higher score will be given to students whose engagement is noteworthy. Examples include: answering and asking relevant questions, noticing mistakes (in a polite and productive manner), active engagement in class activities. A score of lower than 2.5 will be given for students with several absences, minor class disruptions, or being mentally absent.

Emergency Response

Please review university emergency preparedness and response procedures posted at There is a link on the university home page. Familiarize yourself with hall exit doors and the designated gathering area for your class and laboratory buildings.

If building evacuation becomes necessary (e.g. earthquake), meet your instructor at the designated gathering area so she/he can account for your presence. Then wait for further instructions. Do not return to the building or classroom until advised by a university emergency response representative.

If confronted by an act of violence, be prepared to make quick decisions to protect your safety. Flee the area by running away from the source of danger if you can safely do so. If this is not possible, shelter in place by securing classroom or lab doors and windows, closing blinds, and turning off room lights. Lie on the floor out of sight and away from windows and doors. Place cell phones or pagers on vibrate so that you can receive messages quietly. Wait for further instructions.