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.
Assignments
Here are the actual CPSC 441 assignments for the Fall 2021 semester:
Assignment 0: Client-Server Testing
is due on Friday, September 17 (11:59pm).
This is an ungraded warm-up assignment meant to introduce you
to socket programming in C or C++.
Here is a
sample solution for the test client.
Assignment 1: Web Censorship Proxy
is due on Friday, October 1 (11:59pm).
Here is Professor Williamson's ugly
sample solution in C.
Assignment 2: Transport Protocols
is due on Friday, October 22 (11:59pm).
Here is a sample solution in C++ from Dr. Keshvadi:
Client.cpp
Indirection.cpp
Echo.cpp
Translate.cpp
Currency.cpp
Vote.cpp
Driver.cpp
Assignment 3: Traceroute Analysis
is due on Friday, November 19 (11:59pm).
Here is a sample solution from Dr. Williamson:
summary table
UofC traceroutes
home traceroutes
routing.c
map data
CAN routes
Assignment 4: RFID Scanning
is due on Friday, December 3 (11:59pm).
Here is a sample solution from Dr. Williamson:
scanner.c
results table
answers
observations
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:
- For each assignment, cite any code that you did not specifically write for that assignment. Cite all external sources used, any code provided to you, as well as any code that you wrote yourself for another course or assignment.
- You may discuss the assignments with other students in the class but all code that you write must be your own work. DO NOT share any code, DO NOT ask others to provide you with code, and DO NOT show code that you have created for assignments to other students.
- Any discussions with your peers that helped you in completing your assignment must also be cited.
- Plagiarism of code from Internet Web sites or from other students will not be tolerated. See the departmental policies on academic misconduct.
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 professor.
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 also possible via putty or ssh.
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!!