Lab exercises

Sample solutions will be posted here as the semester progresses

Note that labs will start the week of Jan. 13-17.

Lab exercises are worth a total of 25% of your grade.
You must pass the labs to pass the course.

The lab sessions will be used to explain/start the lab exercise, and each lab is due immediately before the start of your next registered lab session (i.e. you have exactly 7 days from the start of your lab session to the time when it is due).

  • your best 8 of 10 labs (plus bonus lab) are worth a total of 25% of your final grade
  • deadlines for labs 7 through 10 + bonus are as follows:
    - lab 7: due Wednesday March 25th at 11:59:59pm
    - lab 8: due Wednesday April 2nd at 11:59:59pm
    - lab 9: due Wednesday April 9th at 11:59:59pm
    - lab 10: due Wednesday April 16th at 11:59:59pm
    - bonus lab: due Wednesday April 16th at 11:59:59pm

The original plan (through March 15th) was: All 10 lab exercises will count, worth 2.5% each.
A bonus lab is also available, worth an extra 2.5% of your lab grade, due Thursday April 9th at 5pm. (Absolutely no late submissions will be accepted for the bonus assignment.)

The preliminary plan is to hold a total of 10 labs: 5 primarily in lisp, the rest in C and C++.

Submissions up to 24 hours late will be penalized 10%, submissions 24-48 hours late will be penalized 25%, submissions 48-72 hours late will be penalized 40%. No submissions will be accepted more than 72 hours late. (Unless accompanied by suitable approved documentation for emergencies, injuries etc.)

You must pass the labs to pass the course.

Labs will be distributed and submitted using git, with the process to be discussed in lectures and labs in weeks 1 and 2.

(There is a Git Submit FAQ in the department tutorials.)

Notes on code quality and following specifications

Most of the programs, scripts, or functions you submit as part of your lab exercises will (in part) be tested through a collection of other scripts and programs.

To be compatible with these scripts and programs, you must use the filenames, function names, function profiles, and I/O specifications given in the labs. Failure to do so will result in substantial penalties on your lab exercises.

While there are not official code standards for the course, this is an upper level course and as such it is expected that all code submissions will be of high quality - i.e. the code compiles without errors or warnings, does not crash when run, uses sensible and informative prompts and error messages, is well laid out, uses sensible identifiers, has reasonable commenting for complex steps, etc. Marks will be deducted for poor quality code even if the functional behaviour is correct.

All labs must be completed strictly as individual exercises.

Lab schedule

If your git fork/clone fails, and all you see is a single README file (e.g. if you forgot to fork, or made a mistake in the fork command but did the clone anyway), you can try the following fix:
  1. Remove the local directory, e.g.
    rm -r assign1
  2. Move the mistakenly forked central repository to the trash repository, e.g.
    ssh csci D trash csci330/$USER/assign1
  3. Go back to your fork/clone and try again

If you would like to see what you have put in the trash,
ssh csci D list-trash
If you would like to get something out of the trash, use the name/date of the file to restore as seen in the listing above, e.g.
ssh csci D restore csci330/$USER/assign1/2016-02-10_14:00:00