CSC148H - Introduction to Computer Science
Fall 2009


Course Information

General Information

Course information sheet.
Instructor: Sean Henderson
Email: sh [at sign] cs [dot] toronto [dot] edu (please put CSC148 in the subject to avoid unwanted filtration)
Office Hours: M1-3, BA2200
Description: Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion. This course assumes programming experience in a language such as Python, C++, or Java, as provided by CSC108H1.
Bulletin Board: The course bulletin board is located here. This will be used for announcements. You are also free to ask questions about course material or assignments here (although if your question would reveal your solution to an assignment, you should ask the instructor during office hours or send an email).

Choosing CSC148

Students should take CSC148 if they have completed CSC108, or have good object oriented programming skills in Python, C++, Java, or something similiar. If you are new to programming, you should take CSC108. If you have a strong programming background but have not done any object oriented programming, you may want to consider taking CSC150, which will cover the material of CSC148 and selected material from CSC108. If you are unsure about this choice, feel free to contact the instructor.

CSC148 Ramp Up Session

We will be holding two ramp up sessions for those who are taking CSC148 without having taken CSC108. These will be held on Sept. 12 and Sept. 19, in BA3175 from 11am - 5pm. These two sessions will be identical. If you would like to attend, send an e-mail to Jonathan Taylor (jonathan [dot] taylor [at] utoronto [dot] ca) with your name, CDF login, and which session you would like to attend (so we have an estimate of attendance). Please put "CSC148 Ramp Up" as the subject of your e-mail.

Lectures

Lecture Code Notes
Lecture 1 cellphone.py
contact.py
except.py
 
Lecture 2 stack.py
queue.py
base.py
balance.py
Read sections 2.3 and 2.4 in the textbook.
Lecture 3 node.py
linkedlist.py
Read section 7.2 in the textbook. Note that you may _not_ submit linkedlist.py for A1.
Lecture 4   Notes on asymptotic notation. Read section 4.2 in the text book.
Lecture 5 recursion.py
maze.py
maze.in
Read chapter 3 in the textbook.
Lecture 6   Read chapter 5 in the textbook.
Lecture 7 bst.py A Java applet to visualize Binary Search Trees: applet
Lecture 8 bst.py bst.py updated to include removal.
Lecture 9 heap.py  
Lecture 10 sorts.py The first five sorting algorithms; insertion, bubble, selection, heap and merge. Read section 4.4 in the textbook.


Assignments

Assignments will be posted here. They are to be completed individually (unless otherwise stated). Late assignments will not be accepted. To have an assignment remarked, submit a written request specifying what you think was marked incorrectly within 2 weeks of the date the assignment was returned.
Assignment 1
Assignment 2 Part 3 was updated October 30. See the assignment and bulletin board for details.
Assignment 3


Midterm

The midterm was written on Oct. 21. Here are the solutions.

Remarking

To request a piece of work be remarked, fill out this form and hand it in to the instructor (as well as the piece of work to be remarked, in the case of the midterm). Note that requests of the form "this answer deserves more marks" will generally be ignored. The same marking guidelines were applied to everyone. Remember that the deadline to have something remarked is two weeks after it was returned; in the case of the midterm and assignment 1, that is November 11.

Labs

There will be 8 lab sessions throughout the course, each worth 1.25% of your final mark. A lab will consist of working with a partner under the supervision of a TA to complete some programming exercise(s). Full marks will be given for showing up on time and making good progress towards completing the exercise(s). Locations will be posted here, as well as exercises.
Lab SectionLast NamesTATimeRoom
T0101A to ZGabriel ChowT1-3BA3175
T0201 A to C. Lee Gabriel ChowF9-11BA3175
T0201H. Lee to ZRenqiang MinF9-11BA3195
Please only show up to the section you are enrolled in.
Labs are cancelled the week of November 9. The final two labs will be the weeks of the 16th and 23r.
Lab
Lab 1
Lab 2
Lab 3
Lab 4
Lab 5
Lab 6
Lab 7


Links

Python

Download Python.
A Pythong tutorial.
Python style guide: PEP-0008 (Python Style Guide) and PEP-0257 (Python Docstring Conventions).
The IDE used in lecture is Wing 101 (free to download).