CSC 104, Winter 2012: Course topics

Part I: Introduction to computing machinery.

Notes on problem-solving; computation as data flow; the idea of an algorithmic machine; hardware versus software; parts of a computer; algorithms.

Timetable: the first two weeks of the term.

Some material used:

Final exam coverage: All concepts (problem-solving, algorithms, issue of precision). No rote memorization (e.g. Polya's problem-solving phases, details of problems examined, Brookshear's definition of what constitutes an "algorithm", ASCII character values, etc) -- questions about these items would generally be accompanied by a summary of the principles or definitions in question.

Types of possible exam questions:


Part II: Modern computing.

Secondary storage (files on disk); hierarchical filesystems; operating systems; data communications and the internet.

Timetable: approximately January 19, 24, and 26.

References:

Final exam coverage: all of the above.

Types of possible exam questions:


Part III: Data representation; numeric expressions.

Timetable: Basically February, and March 1 and 6. (With some other Python stuff mixed in.)

Final exam coverage: all of the above, including HTML and spreadsheets.

Types of possible exam questions:


Part IV: History of computing machinery.

Timetable: approximately March 8 and March 13.

Some material used:

Most of the photos I displayed

Final exam coverage: none.


Part V: Application: Time-keeping.

Time-keeping and time calculations.

Timetable: approximately March 13, 15, and 20.

[Example python code written in class in this unit]

Final exam coverage: there might be a small question about the time calculations. You do not need to know the leap-year formula. Time-keeping is not on the exam.


Part VI: Computer programming.

A gentle introduction to computer programming.
A highly-guided small computer programming project (lab 5). The "software life cycle".

Schedule:
To some extent we've been gently introducing computer programming all along; but we'll get into it more seriously during the above time-keeping discussion, and then continuing in greater depth for March 20, 22, and 27, with a discussion of the Bresenham line algorithm (for lab 5) on March 27.

Bresenham line algorithm as discussed on March 27, and as used in lab 5

Binary search presentation shown in class

Example python code written in class in this unit:

Also see the mortgage calculation examples (some of which are from unit III)

Final exam coverage:
Everything except for

Example types of possible exam problems:


Part VII: Computers and society.

Computer ethics; impact of computers on society; computers and responsibility; "social engineering".

Schedule: approximately March 29, April 3, and April 5. We will only have time to cover a little of the above-listed topics.

An introduction to the ideas about software freedom. Remember that a large number of the software packages you use on a regular basis are in fact "free" in this sense. Also note that there are free substitutes available for just about all large software packages, including operating systems as well as "office" software.

The bit I read in class about Susan Thunder was from the book Cyberpunk: Outlaws and Hackers on the Computer Frontier, Katie Hafner and John Markoff, Touchstone, 1991. The thing which makes this book unusual amongst other similar books is that the content is actually technically correct and historically accurate. But it's primarily a non-technical book and I think you should find it quite readable.

Final exam coverage: none.


[main course page]