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:
- What's wrong with this algorithm?
- Write an algorithm to do some every-day task.
- Questions about basic computer usage learned during this time and basic
parts of a computer as examined during this time.
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:
- Secondary storage and hierarchical filesystems:
- Roughly what I wrote on the chalkboard or overhead display is in secstorage.html
- It's not about filesystems, but some discussion of hierarchical
organization and "tree" terminology in general can be found in the text
and figure on page 374 of Brookshear and figures 8.2 and 8.3
(page 352 and figure 8.3 in the ninth edition;
page 321 and figure 8.2 in the previous edition).
A "plain file" is a leaf-node of the filesystem tree; internal
nodes are directories; and we also talk about the "root directory"
of a filesystem.
- Operating systems:
- Brookshear 3.1 through 3.3, but that's more
in-depth than we're discussing in this course
- Data communications:
- Brookshear chapter 4, especially 4.1 and 4.2
- The web
Final exam coverage: all of the above.
Types of possible exam questions:
- something general about the connection of computers on the internet
- questions about hierarchical filesystems; relative and absolute file
path names
- questions similar to part 1 of assignment two, but more specific
Part III: Data representation; numeric expressions.
Timetable: Basically February, and March 1 and 6.
(With some other Python stuff mixed in.)
- basic numeric expressions, using the 'print' statement in Python
- comma-separated multiple 'print' items in Python
- Giving names to numeric expressions, and to sequences of statements
- String expressions (just a bit)
- Spreadsheet programs:
- Boolean expressions, and 'if' formulas in a spreadsheet program.
- See collected expression syntax
- Basic data representation: bits and bytes; base two numbers; converting
to and from base two; a few notes about representing other kinds of data
- "Markup languages": Some basic HTML.
See collected HTML tag list
- See Brookshear sections 1.4 and 1.5, and ASCII chart on page 597
- various small bits of python code written in
class for part III (not too exciting, but in case you transcribed
something wrong and can't get it to run)
- At some point I did something similar to a loop to validate input
Final exam coverage: all of the above, including HTML and spreadsheets.
Types of possible exam questions:
- some simple manipulation of binary numbers
- write some formulas for a spreadsheet, possibly involving 'if's
('if's also relate to Part VI below, of course)
- write HTML code for a web page or part of one
- other questions about binary numbers, the ASCII character code, or other
data representation matters.
Part IV: History of computing machinery.
Timetable: approximately March 8 and March 13.
Some material used:
- Section 0.2 of Brookshear
- Some of the computer history material and some of the photographs
are from Michael Williams, A History of Computing Technology.
But much of it is just stuff I've accumulated over the years from a very wide
range of sources.
Photographs can often be found on the web these days, especially via
http://images.google.com.
- There is some interesting historical material comprising chapter 1 of
the book from which I learned the IBM 1130 assembly language,
Elements of IBM 1130 Programming by Wilson Price, Rinehart Press,
1968; it's in the U of T library system.
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
- the "software life cycle" is not on the final exam
- you do not need to know how to write your own procedures for the final
exam
- the mortgage calculations are just an example; you need to know the
Python programming ideas they presented (other than procedures), but not the
mortgage formula/algorithm itself.
Example types of possible exam problems:
- write short python programs or short bits of python programs
- read and answer questions about short python programs or bits of python
programs
- questions about how this-or-that programming construct works
- answer questions about the binary search algorithm, the insertion
sort algorithm, or the Bresenham line algorithm;
or perform a bit of one of these algorithms by hand
- a more-difficult programming problem, harder than those on
assignment two but easier than lab 5.
(This is "the A+ question", which not all students are expected to be able to
answer. That is to say, answering this question distinguishes the 'A+'
students from the 'A' students.)
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]