In solving this assignment you are allowed to work in teams of no more than two students. All the collaborators must be named in the README file and must be currently registered in the course. Feel free to supply as many email addresses as you need in the README file (I will send my feedback to all of them). Please submit once per team from the account of one of the team members and please do not resubmit from a different account.
Your program must build using reasonably recent versions of GNU make GCC. Anything that does not compile using these tools will be marked as a non-working program. However, a working program does not automatically qualify you for full marks. Bad or missing documentation (sensible comments in the code are part of a good documentation) can incur a penalty as large as 40%. Obfuscated programming can further reduce your mark.
Pay special attention to how you test your program. Incorrect implementations (aka bugs) identified as such may or may not subtract marks, depending on the extent of the problem. Bugs that would have been caught by a complete test suite but have not been identified by you will subtract marks no matter their extent.
Be aware that identical or nearly identical submissions by two (or more) students/teams (as the case misght be) will receive (all of them) an automatic grade of 0 tokens. Further action according to the departmental and university guidelines for academic dishonesty may be pursued.
Each submission must contain the following:
:-))
shall be considered academic dishonesty and will result in an
automatic mark of 0 tokens for the given assignment and possibly
further action according to the relevant departmental and
university guidelines.
make at the shell prompt in the root directory of your
submission.
The documentation can be included in the README file (see below) if its size does not justify a separate document.
Any document must be submitted in an open (non-proprietary)
format. In particular, Microsoft Word or Wordperfect files are
not acceptable. The preferred format is plain text,
but others are fine, including but not limited to HTML,
Postscript, and TEX (LATEX included). Good ol' hardcopies are
also accepted. :-) Anything submitted as hardcopy should
contain on top of the first page the name of all the
collaborators.
submit csc414 dir
where dir is the directory you want to submit. You can specify it by either a relative or an absolute path. Also note the capitalization of ``csc414,'' which must be observed.
submit program
does not say otherwise.
Longer answer: Late submissions will incur a penalty of 20% per
day. Under no circumstance will a submission be accepted after
solutions have been made public. Solutions may be posted as soon
as three days after the assignment due date. If the submit
program says that submissions are disabled, then your work will
not be accepted.
~/csc101/assignment1, and that the current
working directory is ~/csc101. You should then type one of
the following commands:
submit csc414 ~/csc101/assignment1
submit csc414 assignment1
submit csc414 ./assignment1
Type man submit for more details.
When you test your program, your first priority is to test the behaviour of your code when the input is correct. Ideally, you should take into consideration all the possible inputs. This is usually impossible, but at least I want to see from you a genuine effort in this direction.
In order to test the program on correct input, you should identify to the best of your ability classes of input, i.e., categories of input for which your program should behave in a different manner. Once these classes are identified, you could pick one (or more) sample inputs from each class and feed them to the program.
Of course, the reaction of your program to erroneous input should be considered as well, but that should be your secondary goal during testing. Unless otherwise stated in the handout, just a notice of unexpected results for incorrect input will do (whereas testing correct input may require debugging). One notable exception is buffer overflows, which should be as much as possible avoided.
I am not asking you to do a perfect testing suite, I just ask for a honest effort on the matter. I also ask for a brief explanation of why is your test suite complete, just to make sure that you knew what you were doing.
Poor test suites or poor explanations will be penalized, especially when your program exhibits an erroneous behaviour that would have been caught by a reasonable set of tests.