Homework Assignments

Submission instructions


All exercise and project submissions (and submissions for some of the labs) will be done electronically, using the MarkUs system. You can logon to MarkUs using your CDF login and password.

To submit as a group, one of you needs to "invite" the others to be partners, and then the other student(s) need to accept the invitation. To invite one or more partners, navigate to the appropriate Assignment page, find "Group Information", and click on "Invite". You will be prompted for the other students' CDF user names; enter them. To accept an invitation, find "Group Information" on the Assignment page, find the invitation listed there, and click on "Join". Only one student must invite the others: if different students send separate invitations, then neither will be able to accept the other's invitation. So make sure to agree beforehand on who will send the invitation! Also, remember that, when working in a group, only one person must submit solutions.

To submit your work (either alone or as a group), navigate to the appropriate Assignment page, then click on the "Submissions" tab near the top. Click "Add a New File" and either type a file name or use the "Browse" button to choose one. Then click "Submit". You can submit a new version of any file at any time (though the lateness penalty applies if you submit after the deadline) — look in the "Replace" column. For the purposes of determining the lateness penalty, the submission time is considered to be the time of your latest complete submission. This means that, even if you only submit one small, "unimportant" file late, your entire submission will be considered late.

Once you have submitted, click on the file's name to check that you have submitted the correct version.

MarkUs vs. Internet Explorer

There are known problems using MarkUs with Internet Explorer (which the MarkUs developers have been working on for a while but without success). What this means is that it is possible you will experience problems if you try to submit your homework using IE. Fortunately, there is an easy fix: just switch to a different browser — Chrome and Firefox are known to work fine. (Alternatively, some students have reported success by turning on "Compatibility View" in IE. This is located inside the address bar, at the top of the browser window.)


All of your exercises (except for Exercise 1) and your project code must adhere to the standard style guide for Python, known as "PEP8". The following scripts can be used to do some automated checking of the style of your code.

You can run pep8.py directly from the command line by giving it the name of the file to check (the options '--show-source' and '--show-pep8' are particularly useful). With pep8_gui.py, you will be presented with a dialog box to choose the file on which you wish to run pep8.py.


For each exercise, we will provide a set of unittest test cases that shows how your code was marked. Simply place these files in the same folder as your solution and then run them to see the results of our test cases.

  1. Exercise 1 (due before noon on Friday 18 January).
  2. Exercise 2 (due before noon on Friday 25 January).
  3. Exercise 3 (due before noon on Friday 1 February).
  4. Exercise 4 (due before noon on Friday 1 March).
  5. Exercise 5 (due before noon on Friday 8 March)
    Starter code: node.py.
  6. Exercise 6 (due before noon on Friday 22 March)
    Starter code: bst_iter.py.

Rules and guidelines


The course project is to be completed in groups of 2–3 students.

You are strongly encouraged to work out the solutions together, rather than try to split up the work so that each person is "responsible" for only part of the final submission.

Here is why. Remember that the point of group assignments is to give you a chance to work on programming tasks together, so that you each learn more than by doing it yourself. Studies have shown that stronger and weaker students both learn more when working in a group: as long as they are allowed to try problems on their own first, weaker students benefit from the explanations provided by stronger students, and stronger students benefit from having to think of ways to explain the material to weaker students, which helps cement their own understanding — everybody wins!

Remember also that splitting up the work may apparently save time, but this is not true: since everyone will be expected to understand how to design and write all of the project code for the final exam (which is worth much more than the project), you will each have to go back and review your solution anyway. More importantly, as you well know, there is a big difference between reading someone else's solution and working out a solution for yourself: you learn much more by "solving" than by "reading".

I think it's a small effort to make for a big payoff in terms of your learning experience, but it is your responsibility to make that effort. I'm not going to set up any artificial "rules" to try and enforce this behaviour — that would just be annoying and somewhat demeaning to everyone.

Independently of your choice, keep in mind that you are personally responsible for ensuring that we receive a complete assignment submission bearing your name — no matter which member of your group looks after the submission. This also means that we cannot give special consideration to students who choose to work alone — this is a choice you are free to make, but you must accept the consequences of your choice.

If you would like to work with others but you don't know anybody who could be in your group, simply post a "request for partners" message on the appropriate section of the course forum. Also, make an effort to speak with your classmates during lectures and tutorials — you may find that there are many others in the same situation as yours.

Remember to put the name, student number, and CDF/UTOR email address of each group member at the top of each file in your submission. Only one of the group members should submit a solution for the entire group