CPSC 223 Programming Assignments
Submissions
Assignments are due at 11:59pm on the date listed unless otherwise noted. Submissions must be done from your Zoo account and grades will be determined by how submissions behave on the Zoo machines. See below for instructions for using thesubmit
system.
Each submission must also have a makefile and a log file (see below for log file requirements).
Late Policy
There is an automatic two-hour grace period for each programming assignment. Beyond that, late submissions with no Dean's excuse will incur a 5-point penalty for each 12-hour period after the assignment is due. Submissions will not be accepted more than 120 hours late. Each student's first 50 lateness points for the semester will be forgiven. The only way to get more is with an official note from your Residential College Dean.General Rules for Passing Automated Tests
- The should be no output to standard output or standard error beyond what is specified in the assignment descriptions.
- Programs should exit gracefully. For C/C++ that means, among other things,
no
assert
s or (C++) uncaught exceptions. -
valgrind
should report no errors. - Test what is actually in the submission system using
makeit
andtestit
(see below).
Assignments
Project | Due Date (yyyy-mm-dd) |
Description |
---|---|---|
1 | 2018-09-11 |
Hello, world |
2 | 2018-09-19 |
Link extraction from Wikitext |
3 | 2018-10-03 |
Travelling Salesperson |
4 | 2018-10-24 |
GPS Track Analyzer |
5 | 2018-11-07 |
Language Detection by Digram Frequency |
6 | 2018-11-14 |
Implementing a Map with a Hash Table |
7 | 2018-12-05 |
k-d Trees |
8 | 2018-12-13 at 7:00pm |
Longest Path |
The submit Program
The submit program can be invoked in nine different ways:% /c/cs223/bin/submit 1 Makefile tokenize.c unique.c time.logsubmits the named source files as your solution to Homework #1;
% /c/cs223/bin/check 2lists the files that you have submitted for Homework #2;
% /c/cs223/bin/unsubmit 3 error.submit bogus.solutiondeletes the named files that you had submitted previously for Homework #3 (i.e., withdraws them from submission, which is useful if you accidentally submit the wrong file);
% /c/cs223/bin/makeit 4 tokenize uniqueruns "make" on the files that you submitted previously for Homework #4;
% /c/cs223/bin/testit 5 NameOfExecutableruns the public test cases on the files that you submitted previously for Homework #5;
% /c/cs223/bin/protect 6 tokenize.c time.logprotects the named files that you submitted previously for Homework #6 (so they cannot be deleted accidentally);
% /c/cs223/bin/unprotect 7 unique.c time.logunprotects the named files that you submitted previously for Homework #7 (so they can be deleted); and
% /c/cs223/bin/diffit 8 unique.c time.loguses /usr/bin/diff to compare the named source files with the versions that you submitted previously for Homework #8; and
% /c/cs223/bin/retrieve 9 Csquash.cretrieves copies of the named files that you submitted previously for Homework #9 (in case you accidentally delete your own copies).
Log files
Your log file should be a plain text file of the general form (that below is mostly fictitious):ESTIMATE of time to complete assignment: 10 hours Time Time Date Started Spent Work completed ---- ------- ---- -------------- 8/01 10:15pm 0:45 read assignment and played several games to help me understand the rules. 8/02 9:00am 2:20 wrote functions for determining whether a roll is three of a kind, four of a kind, and all the other lower categories 8/04 4:45pm 1:15 wrote code to create the graph for the components 8/05 7:05pm 2:00 discovered and corrected two logical errors; code now passes all tests except where choice is Yahtzee 8/07 11:00am 1:35 finished debugging; program passes all public tests ---- 7:55 TOTAL time spent I discussed my solution with: Petey Salovey, Biddy Martin, and Biff Linnane (and watched four episodes of Futurama). Debugging the graph construction was difficult because the size of the graph made it impossible to check by hand. Using asserts helped tremendously, as did counting the incoming and outgoing edges for each vertex. The other major problem was my use of two different variables in the same function called _score and score. The last bug ended up being using one in place of the other; I now realize the danger of having two variables with names varying only in punctuation -- since they both sound the same when reading the code back in my head it was not obvious when I was using the wrong one.but MUST contain
- your estimate of the time required (made prior to writing any code),
- the total time you actually spent on the assignment,
- the names of all others (but not members of the teaching staff) with whom you discussed the assignment for more than 10 minutes, and
- a brief discussion (100 words MINIMUM) of the major conceptual and coding difficulties that you encountered in developing and debugging the program (and there will always be some).
This log will generally be worth 5-10% of the total grade. To facilitate analysis, the log file MUST be the only file submitted whose name contains the string "log" and the estimate / total MUST be on the only line in that file that contains the string "ESTIMATE" / "TOTAL".