All written assignments must be put in my mailbox (in the CS mail room - CSB727) before the time the assignment is due.
All programming assignments should be submitted to me via my TURN_IN script:
CS244 Undergrads type at prompt: /u/cs244/TURN_IN <dir> where <dir> is the directory containing your code
CS444 Grads type at prompt: /u/cs444/TURN_IN <dir> where <dir> is the directory containing your code
For those who really cannot call my TURN_IN script, you may zip your files and email them to me.
In all cases, you *must* include a file named README in <dir>, or else your submission will fail.
For each programming assignment, your submission *must* include the following files:
yourCSid_src.lisp: the source file containing all the code necessary for your solutions to the assignment;
yourCSid_test.lisp: the test file containing your test strategies and test cases to demonstrate the correctness of your code;
README: the writeup for the assignment.
Generally, source code accounts for about 55%; your test file, writeup, and coding style account for about 45% of the total mark of an assignment. Below are specific requirements for your files.
Please include the following in your writeup:
the names of all your program and data files, with short descriptions of contents, if this is not evident from the names
the names and types of arguments for functions I have to call to test your program;
general description of the algorithm, including your design choices such as storing data in a hash table vs a list;
the input and output data format;
known bugs you did not have time to fix;
answers to any questions asked in the assignment;
(if applicable to you) which provided solutions (which version, which author, and which previous phase) you have used in your current phase.
Comment your code thoroughly.
At the beginning of each function, provide a intuitive statement of its purpose, the meaning and kind of value of each of the parameters (with an example if the value has some special form), and the output or effect of the function.
If anything is unclear in the body of a function, explain what is going on. This ranges from places where you are taking cars of cdrs of cars, to places where your recursive solution hinges on the fact that some recursive call has already taken care of the special case that the user might wonder about. When in doubt, comment.
You should follow the usual good programming style, giving the functions and variables meaningful names and avoiding obscure programming constructs.
The test file is worth about half as many marks as the code.
Include test cases for each problem, and make your test file
(*_test.lisp) executable in Allegro Common Lisp. Below is the
template to use for your test file.
( defun test(problem)
(cond ((= problem 11)
(print "problem 1(a)")
;;test case description or testing strategy
(print "lst is (a b c), result
is")
(print (my-copy '(a (b c))) )
;;more prints for test cases and test case
descriptions
)
((= problem
12)
(print
"problem 1(b)")
;;test case description or testing strategy
(print "lst is (a b c),
result is")
(print (my-reverse '(a b c)))
;;more prints for test cases and test case
descriptions
)
((= problem
2)
(print
"problem 2")
;;test case description or testing strategy
(print "s is x, lst is ((f x) y (((x
z) () x))), result is")
(print (countOccur 'x '((f x) y (((x z) () x)))))
;;more prints for test cases
and test case descriptions
)
;; Analogously for testing more homework problems.
)
)
Make sure you discuss your test cases in the test file. You can use the form of a comment for every test case or write a commented paragraph before each function describing your test strategy for the function. If there aren't any comments about the test cases, the test file would become useless because I might not understand what you were trying to test.
I should be able to tell, after reading your testing document, how well you understood the problem.
Make sure to test all boundary cases (e.g., empty list). If you don't, I will, and your program will probably fail.
If you wish to appeal your mark on an assignment, you must do so by email within 3 days of receiving your mark. No appeals will be accepted after this period. In addition, when presenting your appeal request, you must submit a statement of why you contest your mark and which questions you'd like me to re-evaluate. Appeals will not be accepted without your statement.