CPSC 441: Computer Networks

Professor Carey Williamson

Winter 2022

Overview

CPSC 441 will have four programming assignments. In aggregate, the assignments count 50% toward your final grade in CPSC 441. Each assignment will be graded on a numerical scale. All assignments will be equally weighted (40 marks each, with each contributing 12.5% toward your final grade), even though they might not be of equal difficulty. Some assignments may have extra bonus credit for optional advanced features specified in the assignment description.

The assignments will involve fairly substantial programming in C or C++. There will be one assignment due about every 3 weeks during the semester, with a slight gap around midterm exam time.

Some possible ideas for assignments are: writing a simple HTTP proxy for the Web; designing a UDP-based file transfer protocol; analysis of peer-to-peer media streaming systems; doing Redundant Traffic Elimination (RTE) on TCP byte streams; analyzing TCP network traffic traces; characterizing Internet routing paths; assessing buffer management strategies in router architectures; and simulation modeling of Medium Access Control (MAC) protocols.

Assignments

Here are the actual CPSC 441 assignments for the Winter 2022 semester:

Assignment 0: Palindrome Testing is due on Friday, January 14 (4:00pm).
This is an ungraded warm-up assignment meant to introduce you to socket programming in C or C++.
Here is a sample solution: mypal-client.c

Assignment 1: Clown Proxy is due on Friday, January 28 (4:00pm).
Here is a sample solution in C courtesy of student Apostolos Scondrianis: README proxy.c

Assignment 2: Vowelizer is due on Friday, February 18 (4:00pm).
Here is a sample solution in C++ courtesy of student Jett Penner: server.cpp client.cpp

Assignment 3: Router Buffering is due on Friday, March 18 (4:00pm).
Here is a sample solution in C++ courtesy of student Ahmed Abdullah: router.cpp

Assignment 4: Jumping Bozons is due on Friday, April 8 (4:00pm).
Here is a sample solution in C++ courtesy of student Rajpreet Gill: bozon.cpp

Important Reminders

Assignments are to be done individually. You can use sample code provided by your instructor or TAs, and you can discuss solution approaches and debugging problems with your 441 colleagues, but the code that you submit for marking must be your own.

Please keep the following general requirements in mind:

Assignment solutions are to be submitted electronically via D2L to your assigned TA for grading, on or before the stated deadline. Late submissions will be penalized 4 marks per day or portion thereof. A sample solution for each assignment will be posted approximately one week after the assignment due date.

For the first two assignments, a demo of your code to your TA or instructor will also be required. These demos will take place during designated tutorial sessions with your TA, or in the lab, or during office hours, or via Zoom, as pre-arranged with your TA and/or instructor.

Lab Info

The computer laboratory facilities for CPSC 441 are housed in the CPSC Computer Labs, located on the 1st floor of Math Sciences. Remote access to CPSC computers is possible via putty or ssh. The most popular compute servers there are csx, csx1, csx3, csa1, csa2, and csa3. The main Linux servers are accessible via linux.cpsc.ucalgary.ca, while individual Linux desktop machines are reachable via linuxlab.cpsc.ucalgary.ca

We will be using Linux as the default operating system environment for the programming assignments. If you have access to Linux on your own machine, you are welcome to use it, but please ensure that your solutions work in the Linux environment that the TAs will be using for grading.