CSC 104: The Why and How of Computing

University of Toronto, Spring 2011


Tim Capes


Lectures are finished for this course

  • Tuesday 9am to 10am, MP103

  • Thursday 9am to 10am, MP103

    Lecturer Office hours:

    By Appointment Only During Exam Period.

  • Tuesday 10am to 11am

  • Thursday 10am to 11am

    My office hours are held in BA2200, the Bahen Help Centre.
    If you can't make these times, please contact me by e-mail for other arrangements.


    No more tutorials in this course Tutorial rooms are by last digit of student number:

  • Student # ends in 0 or 1, Tutorial Room: BA3004, TA: Tong Wang

  • Student # ends in 2 or 3, Tutorial Room: BA3008, TA: Yi Xu

  • Student # ends in 4 or 5, Tutorial Room: BA2165, TA: Amy Hwang

  • Student # ends in 6 or 7, Tutorial Room: BA2175, TA: Yanshuai Cao

  • Student # ends in 8 or 9, Tutorial Room: BAB024, TA: Seyed Amir Hejazi

    This weeks tutorial topic is hard drives (how they work) and UNIX filesystems (creating directories and navigating the unix filesystem). This will be useful for understanding encodings and organizing files for your assignments.

    TA Lab hours:

    There are no more regularly scheduled lab hours. Exam Review hours:

  • April 14th: noon-2PM (Amir)

  • April 19th: 1PM-2PM (Yi)

  • April 21st: Noon-2PM (Amir)

  • April 25th: 3:30PM-6:30PM (Mark)

  • April 27th: 9AM-noon, 1PM-6PM in BA2220/BA2210 (Tong)

    The TA should be set up in a space indicated on the markerboard if they are not currently helping a student. The Lab TA's for the course are: Mark Dobrowolski, Sarah Strong and Tong Wang

    Regularly Scheduled Lab hours are:

    Monday: 2:30-3:30 (Mark)

    Tuesday: 12:30pm-1:30pm (Tong)

    Wednesday: 10:30am-11:30am (Tong)

    Thursday: 3:30pm-4:30pm (Sarah)

    Friday: 1:30-2:30pm (Mark)

    These lab hours are for additional help, you are welcome to attend any number of them in all or part. They are in BA2200/BA2210, if you are having trouble finding the TA, try looking by the whiteboard in BA2210 where they may have something posted.

    There will also be additional lab support near assignment due dates (but not in the last 24 hours before an assignment is due).

    There will be additional A1 office hours on Feb 4th 6pm-7pm and February 7th 12:30pm-1:30pm.

    There are also help center hours from 4pm to 6pm monday to thursday in BA2200.


    The spreadsheet practice problems have been posted in the exercises section.

    Some practice problems for spreadsheets will be posted shortly.

    Exam Review Slides have been posted.

    Assignment 4 is now posted.

    Assignment revisions are in progress, please contact me on Tuesday if your A1 has not been adjusted. All other assignments have adjustments currently posted.

    Midterm 2 will be returned on Tuesday April 5th in Lecture

    Sarah will have extra lab hours for Assignment 4 from noon to 2pm on Wednesday March 30th.

    Assignment 4 handout is now posted.

    Assignment 3 marks are now up. If your mark is not posted please contact me ASAP.

    Gnumeric slides and corrected internet slides will be posted on Thursday. If you are having problems using any set of slides from the website, saving them to your local computer and opening them with acrobat reader works.

    Test information has been posted in the tests section.

    There will be two additional lab hours on Wednesday for A3. These hours are at 12:30-1:30 and 3:00-4:00 in the usual location.

    Assignment 2 marks are now back up.

    Assignment 2 marks have currently been unreleased. The TA is making the one change mentioned in class to the marks and this requires relocking the marks.

    Assignment 2 marks have been released. You can log in at to view your grade.

    Slides for problem solving and user interface have been posted. There was a typo in the user interface linked that has been corrected it should now work.

    Assignment 3 was handed out in class on Tuesday, a copy of the assignment sheet is posted on the web.

    Midterms will be returned in class on Tuesday. A2 marks will be up by Thursday.

    Midterm Information Update: I have decided to merge the coding and object sections as there is a lot of interaction between them, all of the coding questions are related to these objects. There will be 2 coding questions (1 related to pictures, 1 related to sound) and 2 theory questions. The theory questions have a lesser weight.

    Midterm Location Information . As mentioned in lecture the midterm is located in the normal room MP103 . Some students have been asking questions about this so hopefully this post settles any confusion

    Extra Office Hours

    There will be extra lab hours 11:30-12:30, 3:30-4:30 on Monday, and 12:30-1:30, 3:30-4:30 on Wednesday.

    I will have extra office hours 12:00-1:00 and 2:00-3:30 on Monday. I will also be in the lab across the hall from 1:00-2:00 as my normal office hour room is booked.

    Midterm Information:

  • Past midterms are very different and are not a good study guide due to changes in the course.

  • The midterm will have three sections

  • Coding: You may have to match lines of code to programs in order to make programs carry out specific tasks.

  • Objects: You may have to answer questions about the objects we work with in Jython, mainly pictures, samples, pixels and sounds.

  • Theory: You may be asked questions on number representation (binary, two's complement, base 10) and possibly conversions between them. You may also be asked about programming concepts we have covered so far for instance hierarchal design. These questions are likely to have a practical component rather than just be a definition.

    Assignment 2 FAQ is now up. MarkUs instructions are there.

    Assignment 2 is now posted, it will use MarkUs for handing in. This will allow the TA's to give you more feedback, and also allows for easier web-based assignment hand-in which was requested by you! Full instructions will be posted shortly.

    If you did not complete A1 please e-mail me at I would like to set up an appointment to discuss the difficulties you had with it. If you completed A1 and would like a similar discussion you can e-mail me to make an appointment (now or after recieving your mark). A1 is currently being marked and I will be discussing any issues in class on Tuesday, once I have more data on how people did and what sort of difficulties were encountered. Meeting with you to discuss your issues, will tell me a lot more than what people did and didn't hand in, so please come talk to me if you had difficulty with the assignment. In addition, I will be providing more information about the remainder of the course, and information about what will be covered in Test 1.

    There will be a mid-term review done in class (Tuesday the 15th). This is an opportunity for you to present anonymous feedback about the course so far (quality of lectures, level of difficulty, workload, etc). You will be able to fill in comments as well as the mentioned information. I'm hoping this will provide an opportunity to address any potential concerns as soon as possible before it becomes more serious. If you have any thoughts about the course so far considering thinking about how to put them down in writing so that you can take advantage of this opportunity to provide feedback.

    Left and Right shifts covered in tutorial are not required knowledge and will not be needed for any assignments or tests. You will need to be able to understand binary and two's complemenet at a level where you can convert it to base 10.

    CDF has been updated to the most recent version of JES. The sound tools should be working now, and indices should start counting from zero rather than one.

    All assignments have been given an extension from 10AM to 1:30PM on the day they are due. Many students approached me about having class from 9-1 so I've added 30 minutes to the initial extension.

    Assignment Submission Instructions Posted

    I will be hosting additional office hours from 10am-2pm on Friday February 4th in BA2200. There are no help center hours from 4-6 on Fridays (just monday to thursday).

    A1 Questions/Typos have been updated, additional office hours for A1 have been posted!

    Mark's Office hour was cancelled at the last minute on Friday January 28th. My apologies any issues this caused. If you need additional help feel free to contact me by e-mail.

    Assignment #1 is now up on the course webpage. It was briefly posted with a broken link this is now fixed.

    There are corrections made to the tutorial listings on this webpage. Two of the rooms were wrong, the corrected rooms are now listed in bold. If you missed tutorial as a result of this, you can cover the material in office hours, lab hours or by appointment.

    The March 21st test date on the course information handout is in error, it will be on March 22nd!. A revised information sheet has been posted.

    There were no tutorials during the first week of class.

    First lecture was Tuesday January 11th at 9AM in MP103.


    Assignment Four Handout

    Assignment Three Handout

    Assignment 3 FAQ

    Assignment 3 is Due on March 17th at 1:30 PM sharp. Submissions are locked at this time so give yourself enough of a time window to submit your files without problems.

    User Interfaces will be covered in lecture on Tuesday March the 8th.

    Assignment Two Handout

    Assignment 2 FAQ

    For A2 Q1, where a number of digits is not specified any reasonable choice is acceptable (don't use say 15 digits more than necessary).

    For A2 Q2, smallest is the most negative.

    For A2 Q3, sounds do end up crossing from positive to negative (or vice-versa) without actually having an exact value of zero. This means the picture you see when you look at a sound may seem to have many more zeros than you actually count. Don't worry about this.

    For A2 Q4, to clarify on this assignment question as I indicated I would in lecture. There are not two parts for the question, the second paragraph explains what is specifically required for the implementation of the first part. You can use 3 words, in any order. Two of these words can be any media sources words of your choice. One of these words must be the word united which you much cut from preamble10.wav. The mediaSources are available at Media Computation Site . You can find them by scrolling down to the Python portion of the site and clicking on the link.

    For A2 in general , one issue is the slowing down or speeding up of sounds. You won't be penalized for either ignoring this issue (letting the sounds speed up or slow down), or for implementing a correct by using the two variable version of makeEmptySound (which includes the sample rate).

    For Handing in A2 . You will be using MarkUs, to submit your assignment. You will log-in using your CDF account at and after logging in you will be able to select A2 and submit your files. There are demo videos and information available on MarkUs at MarkUs Project. The one demo relevant to this course is file submission. If you have any questions, comments or concerns not addressed by these demos please e-mail me

    Ignore the previously posted assignment submission instructions they are out of date

    Assignment Submission: Use the command submit -c csc104h -a Assignment1 filenamehere so for example with the answers file type

    submit -c csc104h -a Assignment1 answers

    This is done from the UNIX Terminal prompt on CDF, make sure you are in the same directory as your files when you submit.

    Your assignment submissions must be your own work. Comply with the rules at the end of the course info sheet

    Assignment One Handout

    There is a typo in question 5ii. When you are asked to darken a picture the word "uses" should not be mentioned. You cannot use the default darken because this won't let you choose to reduce by 25%.

    Be careful about what your functions do and what they act on. If you are asked to return a value, you should have a return statement.

    If your function is supposed to take a pixel ensure it takes a pixel and not a picture as input!

    There was some confusion about the word "Program". By a program I mean a function along with any helper functions you write for it. If this confuses you just think of it as a function.

    There are a few typos in the assignment namely: .by should be .py in file #4 of the submitted files, and "image" in Q4 should actually be "pixel".

    Question 2c and 3a are the basically the same question with different wording. You are encouraged to treat this as one 9 mark question instead of a 4 mark question and a 5 mark question, if you understand the distinction between them either solution is acceptable.

    If you think you have found a potential problem with the assignment or are confused about any question please e-mail me!


    Past midterms are different and not a good study guide due to changes in the course.

    The 2nd midterm will be on the following topics:

  • Problem Solving

  • User Interfaces

  • The Internet

  • Spreadsheets (Gnumeric)

    It will be written in class on Tuesday of next week. I am not giving out information about the format of the midterm. The midterm will be similar in length to the past midterm. There will be no Jython programming on the midterm, although you may be asked to make comparisons to code for some of the above topics.

    The tests will happen in Lecture on the dates listed in the course information sheet.


  • Spreadsheet Exam Practice

  • Exercise from first lecture- Course Selection

  • Exercise from second lecture - Lab Familiarization as a pdf

  • Exercise from second lecture - Lab Familiarization as plain text

    A common problem students have been having is that the UNIX system does not display anything when it types a hidden password. It may appear that your keyboard is not working, but it in fact is. This comes up when you are creating a new password

    Lectures on Picture Manipulations

    Several comments about the slides: Firstly, these are not designed specifically for printing, and it is not my intent that you print these out for this course. Secondly, these are unmodified lecture slides and should be supported by your notes from class and by reading the textbook, they are in no way a substitute for attending lecture or for reading course material. I've tried to make them somewhat printer friendly by removing extra pages intended solely for animations as I know some of you will print these out anyways. Note that the date on the slides is the last date on which they were editted, not necessarily the date of the lecture:

  • Slides from the first lecture

  • Slides for chapter 1 of text, lecture 2 of class

  • Slides for chapter 2 of text, lectures 3 & 4 of class

  • Slides for chapter 3 of the text, lectures 5 & 6 of class

  • Slides for chapter 4 of the text, lectures 6(briefly),7 and 8 of class

    The title of these slides refers to Mark Guzdial's Georgia Tech course which taught the same material. Some changes have been made these are the slides for CSC104 as well.

    Some slides from Lecture 8, including advice on how to approach programming problems

    A useful sample function covered in class

    Slides for chapter 5 of text, 3rd and 4th last lectures of class

    Lectures on Sound Manipulation

    Slides for chapter 6 of the text, The first chapter on sound

    Slides for chapter 7 of the text, more involved sound manipulations

    A question and answer session with a student who had difficulties with A1 led to this guide which I'm posting for your use

    A useful demo done in lecture

    Topics Lectures

    Slides for the problem solving lecture

    Slides for the user interface lecture

    Slides for the internet lecture

    Slides for the first spreadsheets lecture

    Slides for the second spreadsheets lecture

    Slides for third spreadsheets lecture and topics for rest of course

    Slides for the history of computer science and computation lecture

    Slides for exam review

    Demo Videos:

  • Demo #1: Working with the JES Interface

  • Demo #2: Picking and Displaying a Picture

  • Demo #3: Playing Sounds

    Some useful links and information