CS 1FC3 T2 2007
Assignments

All assignments will be handed in using WebCT. Your MUSS userid is your userid for WebCT as well.

I definitely recommend learning vim (which I use all the time) or emacs for editing most kinds of files. Of course, you can use textpad too, but you will be less efficient if you do that. It takes a bit of time to learn, but the long-term rewards are definitely worth it!

You may use plain text, Word or html for your answers.

For each assignment link below, you will get a list of userids (sorted in "numerical" order), each of which is a link to your personalized assignment. If you do not find your userid listed (probably because you registered for the course late, email me [the instructor] and I will fix that).

  1. First steps in Logic.
  2. Logic, Sets, Functions.
  3. Big O, Algorithms.
  4. Sequences, Sums, Induction, Recursion, Recurrences
  5. Recurrences, Counting, Trees, Graphs

Bonus Assignments

Bonus 1

The task is to reproduce what was done to generate Assignment 1. More specifically, the task is to write a (command-line) program which will take as input a file containing student ids, and will produce as output an index file (as valid html) and a personalized (randomized) assignment for each input userid, in the form of another (valid) html file. You should model the questions on those of assignment 1 as well as similar questions in section 1.1 of the course textbook. You are free to invent questions in the same style.

Note that while some questions are chosen from a finite list of choices, others are truly randomly generated, for examples those asking about writing out a truth table for a particular logic expression. These latter style of questions are to be emphasized.

For extra marks, you should reproduce another aspect of the current generator (which you cannot see): the generator also generates (again as valid html), the answers to the questions. Hint: it is frequently easiest to first think of the style of question, then the answer, and last how to generate such a question; in other words, work backwards from the answer.

For even more marks: do assignments 2, 3, 4 and/or 5 as well. If you are planning to deal with assignments 3-5, you may hand in those parts at a latter date (TBD).

Any programming language may be used for this bonus assignment. However, certain languages are better suited for this task (like Maple, Python and Ruby) while others will make your life unecessarily difficult (C, C++). Haskell is well-suited as well, but is more challenging (thus worth more).

Due date: January 31rst. To be "handed in" via email to the instructor, as a .zip or .tar.gz file containing source code, and precise build instructions, but not object files or executables.

The more reusable (ie for next year, etc) a submission is, the more marks will be given. Some marks will also be awarded for creativity. This can be worth anywhere between 0 and 30 final marks, although I expect that 3-5 marks would be the more likely outcome of an "average" submission. Of course, that usually translates to one full grade-point bump, which is well worth it.

Grading

Bonus assignments are graded in a completely different way than regular assignments. Often, there is no (absolute) right or wrong answer for these. Also, the grade is not a percentage, but marks. Thus the bonus will be graded according to how well it achieves the stated aims, which is fairly qualitative.


Back to main page