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:
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
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
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
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]
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)
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.
[main course page]