General Information

Faculty Info


The texts for this course are all available online. Some are also in tree-derived material form:

These two books offer very different perspectives on programs and computer science. The first is about an abstract powerful model of computation, the second about the software design process.


This class meets Mondays, Tuesdays, Wednesdays and Fridays from 2:00pm until 2:50pm in the West Sheridan Classroom 250. The Tuesday session will typically be a discussion/help/review session.

The tentative sequence of topics and readings is here. Expect additions and changes.


Your grade will be based on:


I do not take attendance. Either class meetings are valuable to you, or they're not. But in any case, you are responsible for all material discussed and announced in class. I do not answer any requests to repeat material given in class. If you miss a class, contact other students who were there and get their notes.

Make-up exams

If you need to miss an exam and schedule a makeup exam, you must (1) have a really good reason, and (2) request the makeup at one week in advance, unless a real emergency such as a death in the family or a trip to the emergency room occurs.

Cheating vs brainstorming vs pair programming

There is a major and clear difference between working together and sharing code. Sharing code is cheating and cheating is subject to failure in the course or worse.

You are encouraged to work together on homework if you are having problems. However, you must indicate clearly in your homework that you worked with someone else. Also, the code you write must not be copied. So, you may work with other people, but the code must be written by you. Cheating is not acceptable. That includes taking someone's code, renaming variables and procedures, reordering lines, etc.

Valid HTML 4.01 Strict