Course Description

Algorithms for constructing , maintaining and manipulating lists, stacks, queues, trees and hash tables. Algorithms for traversing, searching, and balancing trees. Sorting: insertion, shell, heap and quick sorts. Dynamic storage allocation. Analysis of algorithms. (See Learning Goals; Course Information Sheet.)

Course Information

Instructor Contact

Instructor: Elizabeth Patitsas (cs190toronto at

I respond to 190-related email on Monday 2-3pm, Tuesday 2-4pm and Friday 11-4pm. When emailing me, always remember to include "CSC 190" in the subject line!

Please use the Piazza forum for general course questions, you will get a response much faster!

Office hours: Monday 12-1 (Elizabeth in BA 4237), Wednesday 12-1 (Elizabeth in BA 3289), Thursday 6-7 (Marek in BA 4237), and Friday 1-2 (Elizabeth in BA 4237).

Chat hours: I am available on gchat (cs190toronto at during my "email hours" (Monday 2-3, Tuesday 2-4 and Friday 11-4).

Course calendar


Your final grade will be assigned as such:

Note that no late assignments will be accepted!

Collaboration and Academic Integrity

Cheating isn't cool. Don't do it.

Plagiarism -- submitting somebody else's work without attribution -- is considered an academic offense and is taken very seriously. If you're talking to a friend or acquaintance about their solution, write up your solution independently -- and write down that you worked with this friend. We'll never penalize you for citing your sources.

Copying any amount of code from somebody else, and not attributing the source, is plagiarism. If you get a line of code from a friend, add comments to your program around it to indicate what lines you got from your friend, any modifications you may have made, and who the friend is. At the end of the day, what matters is that you can solve the problem and demonstrate that you understand everything in your solution.

I want you to succeed and am here to help if you are having difficulty. Cheating will only harm you in the long run. Even aside from the consequences of getting caught (and we will use software that compares programs for evidence of similar code), cheating will still only come back to bite you. This course builds on itself greatly. If you don't understand the concepts in week 1, and only get through it through cheating, you won't understand the concepts in week 2, or 3, or 4... all the way up to the end. You don't want to get caught in that sort of cycle.

For the labs/assignments, we expect you to work in pairs. It is vital that both you and your partner can independently explain all of your joint work. To ensure you understand everything you and your partner write, I highly recommend the pair programming model. In pair programming, one of you, the "driver" types at the keyboard, and the other, the "co-pilot" gives guidance and feedback on what the driver has written. Switch roles regularly. Empirical studies have found pair programming results in better code, and you learn more!