Spring 2017

CS 325: Network Programming


Tony Mullen
410 Thompson Hall

Phone: 253.879.3562
Email: tmullen@pugetsound.edu

Office hours

My office hours for Fall 2017 are:

Mon, Wed, & Fri: 12:00-12:50

Tu: 11:00-11:50

You can make an appointment to meet at other times also.

I try to respond to emails within 24 hours. You should not expect a response to emails received after 5:00 PM until the next day.

Attendance and lateness policy

Students are expected to attend class and labs. Multiple absences without a written excuse can result in a reduced grade for the class.

If you are not present when attendance is taken, but arrive to class later in the period, be sure to make sure I know that you were in attendance.

Academic integrity

Please ensure that any work you take credit for is your own. Homework should be assumed to be individual work unless it is explicitly given as group work.

When working on individual coding assignments (i.e. all assignments not explicitly labeled as pair or group assignments) you should never look at other people's code for your benefit or allow them to look at yours for their benefit. You may look at another person's code in order to help them identify a problem they are having.

There are sophisticated tools available to identify code plagiarism. Simply changing superficial characteristics of code (variable names, line breaks, spacing) is not enough to conceal when a program has been cribbed. Aside from this, however, someone who copies code cheats themselves out of the opportunity to learn the material. Sooner or later, this will catch up to them.

If your work involves contributing to code written by other people (as is often the case when working with open source software) always be aware of and respectful of the license governing the use of the code, and always be clear about where your own contributions begin and end.

Soliciting answers to homework exercises on websites such as Stack Overflow is a breach of academic integrity and will be dealt with as such if discovered. Stack Overflow is a valuable resource for getting help with legitimate programming problems, so please use it appropriately. In addition to cheating yourself out of the opportunity to learn the material, posting homework questions pollutes Stack Overflow and shows disrespect for the efforts of your instructors in creating the exercises. You may turn to online resources (such as Stack Overflow or other forums) for general support for software libraries or tools and for technical troubleshooting. If you are not sure whether your question is appropriate for a public forum, check with me first. Once you post content on Stack Overflow, you will probably not be able to remove it, so don't post anything you may come to regret.

Please review the Academic Integrity section of the UPS Student Handbook for more specifics on what sorts of behavior constitute violations of academic integrity.

Devices in class

Please avoid using devices during class in ways that distract yourself or others.

General policies

The university is a place for respectful exchange of information and ideas.

University-wide policies regarding student conduct and integrity can be found in the UPS Student Handbook.

If you have any questions or problems related to this class or anything else I may be able to help with, please don't hesitate to email me or drop by my office any time to talk.

Special Accommodations

Academic accommodations are available for students with disabilities who are registered with the Office of the Office of Accessibility and Accommodations. 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 Accessibility and Accommodations, 105 Howarth, 253.879.3395. She will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.

I also encourage all students having difficulty, whatever the reason, to consult privately with me at any time.

Emergency Procedures

Please review university emergency preparedness and response procedures posted at www.pugetsound.edu/emergency/. 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.

Course description

In this class students will study the fundamentals of computer network programming. Reading and lectures will cover the principles and general concepts of modern networking, and in-class labs and homework assignments will give students experience with practical network analysis and programming. A variety of practical tools will be employed, including the Python programming language and socket libraries, the Wireshark packet sniffer, and the Seattle distributed networking environment.

Goals of the class

By the end of this class students will

  • Have a general understanding of how the Internet works and a familiarity with its documentation (RFCs)
  • Be familiar with the layers the TCP/IP protocol stack and understand the roles they play in networking
  • Understand key network protocols in each layer
  • Gain experience with socket programming using Python
  • Learn about practical network monitoring using tools such as Wireshark

Textbook & required materials

The textbook for this class is:

Computer Neworking: A Top-Down Approach, 7th Edition by James Kurose & Keith Ross

Lecture slides

Lecture slides or in-class resources for this class will be posted soon after the lecture is completed. You can find them here.


Week Date Topic Reading Assignment
1 1/18 Introduction; Structure of the Internet CN 1.1-1.5 HW 1: Python tutorial due Mon, 1/23
Wireshark Lab 1 due Fri, 1/27
(Work in class Wed)
2 1/23 Network layers & protocols;
Application layer
CN 1.6-2.2
+ Ch 1 review Qs
RFC 1958: Architectural Principles of the Internet
HW 2: Python tutorial, Pt 2
& Ch 1 review Qs
due Mon, 1/30
Wireshark Lab 2 due Fri, 2/3
3 1/30 Application layer; CN 2.2-2.8 HW 3: Ch 2 review Qs & problems due Mon, 2/6
Wireshark Lab 3 due Fri, 2/10
4 2/6 Socket programming Python Socket HowTo HW 4: Simple web server due Wed, 2/15
5 2/13 HTTP, SMTP, & DNS CN 3.1-3.3 Wireshark Lab 4 due Mon, 2/20
HW 5: UDP Pinger due Fri, 2/24
6 2/20 Transport layer protocols;
CN 3.4-3.5 Wireshark Lab 5 due Mon, 2/27
HW 6: SMTP/TLS due Fri, 3/3
7 2/27 TCP; Congestion control CN 3.6-3.8 HW 7: Proxy Server due Wed, 3/8
8 3/6 Review;
Midterm Exam Fri 3/10
9 3/13 Spring break
10 3/20 Network layer;
Routing & forwarding
No class Fri, 3/24
CN 4.1-4.2
and 4.3.3 (DHCP)
Wireshark Lab 6 due Fri, 3/24
HW 8: BT Downloader (Pt 1) due Fri, 3/31
11 3/27 Internet routing CN 4.3-4.5
12 4/3 Link layer Wireshark Lab 7 due Wed, 4/12
HW 9: BT Downloader (Pt 2) due Fri, 4/14
13 4/10 Link layer protocols CN 5.1-5.4 Wireshark Lab 8 due Mon, 4/17
14 4/17 Physical layer CN 5.5-5.7 HW 10: Getting Started with Seattle due Fri, 4/21
15 4/24 Wireless & mobile CN 6.1-6.3 HW 11: Reliable Transport Protocol with Seattle due Fri, 5/12
16 5/1 Review;
Classes end Wed, 5/3
Final exam Fri 5/12 4:00PM-6:00PM


This course will be graded based on the following factors:

  • 60% Homework & labs
  • 30% Exams (one midterm and one final)
  • 10% Attendance & participation

More specifically, the following will be expected of you:

Readings: Reading assignments are listed on the class calendar. Material from the readings will appear on the midterm and final exams.

Homework assignments and labs: There will be regular programming assignments and labs that you'll be expected to carry out on your own (in some cases, we will carry out labs in part or completely during class, but this probably won't be the norm, as there is no dedicated lab period associated with this class). Assignments and labs must be submitted on Moodle. Late work will be penalized by 20% per day, and will not be accepted more than 4 days after the original deadline.

Exams: There will be one in-class midterm exam and a final exam at the end of the semester. Refer to the calendar for the exam schedule.

Attendance and participation: Regular attendance and conscious presence in class will earn the allotted 10%. This portion of your grade may be affected by repeated unexcused absences.

Online resources

The class Moodle page will be where you can turn in assignments and find some class materials.


We will be using Seattle for some of the exercises in this course. You will need to register to use the Seattle Clearinghouse tools.


You should install Python 3 if you haven't already. If you are working on Mac OS X, you may already have Python 2.7 installed. It's not a problem to have them both installed.