Back to TA Page

Mobius strip

Assignment 3

Chin's Assignment 3 webpage
Chin's Assignment 3 Q+A

Chin's solution: HTML version | Lisp version
My solution: HTML version | Lisp version

This assignment is out of 10 points. The following is how the grading breaks down.

Coding Practices (40%)

Documentation: 20%

  • author and (date or version or class+assignment)
  • description of program as a whole
  • description of each function/subroutine, including possible/required parameters and result returned (and any side effects)
  • brief comments on complicated lines/blocks code
  • in short, help others quickly find their way through your code

Formatting and good practices: 15%

  • use obvious/relevant names for variables
  • consistently indent blocks of code
  • keep lines short (less than 80 characters/screen width)
  • break up long chunks of code within a single subprogram into related sections by adding an extra line of white space between them (just like how you break up long passages of text into paragraphs)
  • break up your program into smaller, modular subroutines or functions when it makes sense to do so
  • in short, make your code itself easy to read

Usability: 5%

  • check spelling and formating of messages to the screen
  • make error messages informative
  • include adequate feedback to users of your program
  • catch errors whenever possible and fail gracefully
  • in short, make your program easy to use (as long as it doesn't conflict with assignment specifications)

Assignment Requirements (60%)

Functional-style Programming: 10%

  • No assignments, variables, loops, or side-effects.

Returns output in specified format: 15%

  • Returns a list of (task-name person-name) pairs if possible.
  • Returns NIL if no tasks given to assign.
  • Returns FAIL if tasks are impossible to assign.

Solutions are correct: 30%

  • Returned assignments are correct.

Miscellaneous: 5%

  • My gestalt impression: odds and ends, little bonuses and minor omissions, rewards for good clear code, minor penalties for major convolutions, other things that don't clearly fit in the above but still make a difference. (If you're missing a few, undocumented .1's, they probably came from here. Default value: 0.4)


Documenatation and good practices counted more on this one than on assignment 2. though it's still only about 30%.

Whenever you have more than one subprogram in a file, you should add a line or two at the top about the program as a while. (Program documentation.) When someone opens your file, they should be able, at quick glance, see what this file does, who wrote it, and when/why. (The point of all documentation is to help some else who doesn't know what you've done or why. Or to help you, when you can no longer remember.)

Because there were fewer components to this assignment, each piece counted for more. There were a few 10's on this one, but also a number of much lower scores too. In future, I'll try not to weight getting the right answer so heavily. Sometimes, students were very close but didn't get it. For example, a few people were checking for NIL or () when they should have been looking for 'FAIL. But this meant that their program's solutions were incorrect.

On the other hand, you should know your code doesn't return the correct output because you test it on a couple of different input cases before you submit it. Right? :)

Oh, and try to keep your code lines about 80 to 100 characters wide. Longer than that, and they wrap on other people's systems, making your code even harder to read. This is especially problematic with Lisp, where matching open and closing parentheses is already difficult.