CPSC 474/574 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.
Some assignments may be written using any language available on the Zoo, and some must be written in Python 3.5. Each submission must also have a makefile (regardless of language) 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 or Program Director.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.
- Test what is actually in the submission system using
makeit
andtestit
(see below; but note that Java is not compatible withtestit
at this time). - For this class, if the specification says input will be in a certain form or certain assumptions may be made, then unless there are specific error cases described in the problem description, you may make those assumptions and additionally, assume that input will be in the indicated form; your program will not be tested on out-of-spec inputs unless explicitly indicated. (Although you are certainly encouraged to follow good software engineering practice and make sure your program behaves gracefully and outputs useful error messages in such circumstances.)
- Because the programming language you use for some of the projects is not pre-determined, you will have to submit a makefile that builds your program from source (if necessary) and creates an executable script that runs your program, passing command-line arguments from the script to your program. Make sure you submit your makefile and that contains a rule to create an executable script with the correct name.
Assignments
Project | Due Date (yyyy-mm-dd) |
Description |
---|---|---|
1 | 2018-09-20 | Grundy numbers |
2 | 2018-10-04 | NFL Strategy |
3 | 2018-10-25 | Search |
4 | 2018-11-08 | Monte Carlo Tree Search |
5 | 2018-11-29 | Q-Learning for NFL Strategy |
6 | 2018-12-13 at 7:00pm |
Neural Network for Yahtzee |
The submit Program
The submit program can be invoked in nine different ways:% /c/cs474/bin/submit 1 Makefile tokenize.c unique.c time.logsubmits the named source files as your solution to Homework #1;
% /c/cs474/bin/check 2lists the files that you have submitted for Homework #2;
% /c/cs474/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/cs474/bin/makeit 4 tokenize uniqueruns "make" on the files that you submitted previously for Homework #4;
% /c/cs474/bin/testit 5 NameOfExecutableruns the public test cases on the files that you submitted previously for Homework #5;
% /c/cs474/bin/protect 6 tokenize.c time.logprotects the named files that you submitted previously for Homework #6 (so they cannot be deleted accidentally);
% /c/cs474/bin/unprotect 7 unique.c time.logunprotects the named files that you submitted previously for Homework #7 (so they can be deleted); and
% /c/cs474/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/cs474/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".