CPSC 441: Computer Communications

Professor Carey Williamson

Winter 2014

Assignments

CPSC 441 will have four assignments. In aggregate, the assignments count 32% toward your final grade in CPSC 441. Each assignment will be graded on a percentage scale. All assignments will be equally weighted (32 marks each, with each contributing 8% toward your final grade), even though they might not be of equal difficulty. Some assignments may have extra bonus credit for optional 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; analysis of peer-to-peer media streaming systems; doing Redundant Traffic Elimination (RTE) on TCP byte streams; analyzing TCP network traffic traces; assessing buffer management strategies in router architectures; characterizing Internet routing paths; and simulation modeling of Medium Access Control (MAC) protocols. The actual assignments will be released here early in the semester.

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. Plagiarism of code from Internet Web sites or from other students will not be tolerated.

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

For a few of the assignments, a demo of your code to your TA or instructor will also be required. These demos will take place in the lab, or during designated tutorial sessions.

The list of assignments for this semester appears below:

Assignment 1: Web Proxy is due Tuesday, February 4 at 11:59pm. Here is a sample solution courtesy of CPSC 441 student James Robertson: README proxy.c Makefile

Assignment 2: TCP Wrangling is due Tuesday, March 4 at 11:59pm. Here is a UDP-based sample solution courtesy of CPSC 441 student Julia Tang: pullserver.c pullclient.c README and a TCP-based sample solution courtesy of CPSC 441 student Cameron Hawthorne: server.c peer.c README

Assignment 3: Network Routing is due Thursday, March 27 at 11:59pm. Here is a sample solution courtesy of CPSC 441 student Sara: dwarfRouter.c, observations, MGP results. She won a pizza for showing that Thorin collects 206 gold coins by traversing the obvious path 'TONIDEJIHCBAFGHMLKPQRMNSTYXSRWVQLGB'. Her supplementary documention also helped clarify how to tell a Dwarf from a Hobbit.

Assignment 4: MAC Protocols is due Thursday, April 10 at 11:59pm. Here is a sample solution courtesy of CPSC 441 student Fadi Botros: budgie.c, writeup.

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 selected CPSC computers might also be possible.

We will be using Linux as the default operating system environment for the programming assignments in this course. The programming assignments will be done in C or C++.

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!!