Arts & Science Calendar 1998-99: Table of Contents: Programs and Courses
[Calendar: Contents | Calendar: Search | Programs & Courses |  Queries & Comments]


On this page: Introduction | Faculty Members | Programs | Courses
See also: Course Summer Timetable | Course Winter Timetable | Secondary School Information | More on Department


What is Computer Science?

Despite the name, Computer Science is not really a "science of computers" at all. Computers are quite remarkable electronic devices, but even more remarkable is what they can be made to do: simulate the flow of air over a wing, manage communication over the Internet, control the actions of a robot, synthesize realistic images, play grandmaster-level chess, and on and on. Indeed the application of computers in activities like these has affected most areas of modern life. What these tasks have in common has little to do with the physics or electronics of computers; what matters is that they can be formulated as some sort of computation. This is the real subject matter of Computer Science: computation, and what can or cannot be done computatively.

In trying to make sense of what we can get a computer to do, a wide variety of topics come up. There are, however, two recurring themes. The first is the issue of scale: how big a system can we specify without getting lost in the design, or how big a task can a computer handle within reasonable bounds of time, memory and accuracy. A large part of Computer Science deals with these questions in one form or another. In the area of programming language and methodology, for example, we look for notations for describing computations, and programming methodologies that facilitate the production of manageable and efficient software. In the theory of computation area, we study resource requirements in time and memory of many basic computational tasks.

The second theme concerns the scope of computation. Computers were originally conceived as purely numerical calculators, but today, we tend to view them much more broadly. Part of Computer Science is concerned with understanding just how far computational ideas can be applied. In the area of artificial intelligence, for example, we ask how much of the intelligent behaviour of people can be expressed in computational terms. In the area of human/computer interaction, we ask what sorts of normal day-to-day activities of people might be supported and augmented using computers.

Many of our programs combine another field with computer science, such as Information Systems, Economics, Mathematics, Physics or Statistics. The programs in Software Engineering and Human-Computer Interaction focus on developing areas of computing.

The equipment and software available to students are up-to-date and accessible. On the St. George campus, microcomputers are used at the introductory level, and a network of workstations serves upper-level courses. In addition, some higher-level courses are based on laboratories.

Some Computer Science courses are offered in the evening, to allow part-time students to pursue our programs. Introductory courses and some higher-level courses are offered in the summer.

The Professional Experience Year Program (PEY) and the Japan Internship Program are available to eligible, full time students. Please refer to Page 22 for more information. In Computer Science, students are to have completed the writing requirement before undertaking a Professional Experience Year.

Enrolment is restricted in all CSC programs. Consult the Timetable and the Department for details of how to apply.

Admission to restricted programs depends on performance in the required 100-level courses (listed in program descriptions) and on the cumulative GPA. The minimum mark in CSC 148H is 65%, and in first-year calculus is 60%. The minimum GPA is calculated annually. It is never lower than 1.70, and for 1998 will not be higher than 2.80.

Undergraduate Secretary: Dr. J.N. Clarke, Sandford Fleming Building

Student Counsellor: D. George, Sandford Fleming Building, Room 2304D (978-6360)

Faculty Members

Professors Emeriti
C.C. Gotlieb, MA, Ph D, D Math, D Eng, FRSC A.B. Lehman, Ph D
R.C. Holt, Ph D K.C. Smith, MA Sc, Ph D
J.N.P. Hume, MA, Ph D, FRSC

Professor and Acting Chair of the Department
W.H. Enright, M Sc, Ph D (S)

Professor and Associate Chair
J.K. Tsotsos, M Sc, Ph D

Assistant to the Chair and Undergraduate Secretary

J.N. Clarke, M Sc, Ph D (V)

University Professor
S.A. Cook, AM, Ph D, FRSC (T)

R.M. Baecker, M Sc, Ph D H. Levesque, M Sc, Ph D
A.B. Borodin, M Sc, Ph D, FRSC R.A. Mathon, M Sc, Ph D (E)
P.I.P. Boulton, MA Sc, Ph D E. Mendelsohn M Sc, Ph D (S)
D.G. Corneil, MA, Ph D A.O. Mendelzon, MSE, MA, Ph D (S)
C.C. Dyer, M Sc, Ph D (S) J. Mylopoulos, M Sc, Ph D
F.E. Fich, M Math, Ph D C.W. Rackoff, SM, Ph D (E)
E. Fiume, M Sc, Ph D R. Reiter, MA, Ph D
M.S. Fox, Ph D K.C. Sevcik, Sc M, Ph D
V. Hadzilacos, M Sc, Ph D (S) M. Stumm, MS (Math), Ph D
E.C.R. Hehner, M Sc, Ph D D. Terzopoulos, Ph D
G. Hinton, Ph D A.I.F. Urquhart, MA, Ph D
G. Hirst, M Sc, Ph D (S) Z. Vranesic, MA Sc, Ph D
K.R. Jackson, M Sc, Ph D D.B. Wortman, M Sc, Ph D
A.D. Jepson, B Sc, Ph D (E) S.G. Zaky, MA Sc, Ph D

Associate Professors
W.A.S. Buxton, M Sc G. Gulak, M Sc, Ph D
M. Carter, M Math, Ph D M. Mantei, Ph D
C. Christara, MS, Ph D E.V. Swenson, MS, Ph D (U)
J.N. Danahy, BLA, URP S. Zhou, M Sc, Ph D
G.S. Graham, M Sc, MA, Ph D (E)

Assistant Professors
T.S. Abdelrahman, M Sc, Ph D M. Molloy, M Math, Ph D (S)
A. Bonner, M Sc, Ph D (E) R. Neal, B Sc, Ph D
M. Chechik, MS, Ph D A.J. Stewart, M Sc, Ph D (E)
A. Clement, M Sc, Ph D M. van de Panne, MA Sc
C. Lee, Ph D
Senior Tutor
D. Horton, M Sc J. Sills, BA, B Ed (E)
M. Craig, M Sc



Consult Student Counsellor, Department of Computer Science.

Specialist program (Hon.B.Sc.): S16881 (12.5 full courses or their equivalent, including at least one 400-series course)

Enrolment in the Specialist Program is limited. Admission requires 65% in CSC 148H, 60% in MAT 137Y/157Y, and a minimum CGPA. Consult the Timetable and the Department for details.
First Year: CSC 148H; MAT 137Y/157Y; STA 107H

First or Second Year: CSC 238H/MAT 246Y, CSC 258H, 270H; MAT (223H, 224H)/240H; writing requirement (See Note 1 to Specialist program)
Second Year: CSC 209H, 228H; MAT 237Y/257Y
Second or Third Year: STA 250H/257H
Third Year: CSC 324H, 364H, 378H; MAT 301H/302H/315H/334H/344H
Third or Fourth Year:
1. CSC 438H/448H/465H/478H
2. CSC 350H, 351H
3. One half-course from Group A, and one half-course from either Group A or Group B:
Group A: CSC 408H, 418H, 428H, 434H, 458H, 468H, 485H, 486H, 487H, 488H
Group B: CSC 340H, 354H, 372H, 384H, 446H, 454H, 456H, ECE 385H

1. Writing requirement: Students in any Specialist program sponsored by the Department of Computer Science (including Combined Specialist programs) must complete one credit requiring substantial written work in English. The courses accepted for this purpose are listed below. Students in the Major program in Computer Science must take one-half credit from the same list. Departments offering these courses have agreed to accept our students, but will not give you special preference in admission. You must satisfy the prerequisite and other requirements listed in this Calendar. Make sure to check that the course you want to take is offered in the year you want it, and to ballot, enrol, etc. as required by the Arts and Science Registration Handbook and Timetable. ANT 100Y, 204Y; CLA 160Y, any 200- or 300-level except 201H; EAS 102Y;

ENG - any 100- or 200-level except 269Y; GER 235Y, 251Y;

HIS - any 100- or 200-level; HPS - all courses; HUM 101Y, 199Y;

INI 115Y, 202Y, 203Y, 204Y, 224Y, 225Y, 235Y, 311Y; ITA 240Y, 245Y, 340Y;

JAL 328Y; JUP 250Y;

NEW 150Y, 160Y, higher-level courses in the "Humanism" grouping;

NMC 170Y, 185Y, 278Y, higher-level courses in the "History" grouping;

PHL/PHI 100Y, 101Y, 102Y, any 200- or 300-level except 245H, 246H, 247H, 344H, 345H, 346H, 347H, 349H, 356H; POL 100Y, 102Y, 103Y, 104Y, 108Y, any 200-level except 242Y;

RLG 100Y, 101Y, any 200-level; UNI 130Y, 201H, 202H, 310Y; VIC 110Y, 120Y, 140Y; WLD 100Y.

Courses not accepted to satisfy the writing requirement include SCI 199Y, SSC 199Y, and the "Research Opportunity Program" courses numbered 299Y in any department.
2. Students are strongly encouraged to include a sequence of courses in a subject area in which computers can be usefully applied, and are advised to arrange their program so as to complete the requirements of the Major Program by the end of Third Year.
3. It is recommended that students take PHY 140Y.

Major program (B.Sc.): M16881 (7.5 full courses or their equivalent)

Enrolment in the Major Program is limited. Admission requires 65% in CSC 148H, 60% in MAT 137Y/157Y and a minimum CGPA. Consult the Timetable and the Department for details.
First Year: CSC 148H; MAT 137Y/157Y
First or Second Year: CSC 209H/228H/260H, 258H, 270H; MAT (223H, 224H/STA 107H/257H)/MAT 240H; writing requirement (see Note 1 to Specialist program).
Higher Years: Six half-courses from the following groups, of which at least two half-courses must be from Group C and at least two from Group D:

Group C: CSC 324H, 340H, 354H, 372H, 384H, 408H, 418H, 428H, 434H, 454H, 458H, 468H, 485H, 486H, 487H, 488H, ECE 385H

Group D: CSC 238H/MAT 246Y, CSC 336H, 350H, 351H, 364H, 378H, 438H, 446H, 448H, 456H, 465H, 478H (you may not take both of CSC 336H and CSC 350H/351H)

Group E: CSC 300H, 318H

NOTE: MAT 246Y counts as only one half-course from the six required.

Minor program Minor program: R16881 (4 full courses or their equivalent)

Enrolment in the Minor Program is limited. Admission requires 60% in CSC 148H, and a minimum CGPA of 2.00.
First Year: CSC 148H, MAT 133Y/135Y/137Y/157Y
First or Second Year: CSC 228H/260H/270H, 238H/MAT 246Y, CSC 258H
Higher Years:
1. One of: CSC 324H/340H/354H/384H/418H/428H/434H/454H/458H/468H/485H/ECE 385H
2. One of: CSC 336H/350H/351H/364H/378H


NOTE: This program has been discontinued, and students who complete CSC 148H later than May 1998 will not be accepted into it. Those now enroled may complete it.


Consult the Undergraduate Secretary, Department of Economics or Student Counsellor, Department of Computer Science.

Enrolment in this Program is limited. Admission requires 70% in ECO 100Y, 65% in CSC 148H, 60% in MAT 137Y/157Y, and a minimum CGPA. The requirements of the two departments, Computer Science and Economics, must both be met. Consult the Timetable and the Departments for details. Specialist program: S01081 (16.5 full courses or their equivalent, including at least one 400-series course)
First Year: CSC 148H; ECO 100Y; MAT 137Y/157Y
Higher Years:
1. Writing requirement (See Note 1 to Specialist program in Computer Science)
2. CSC 228H, 238H/MAT 246Y, CSC 258H, 270H, 324H, 378H, 336H/350H
3. ECO 206Y, 208Y, 325H, 326H/432Y, 327Y/357Y, 416H/418H
4. APM 236H/261H, MAT (223H, 224H)/240H, 235Y/237Y/257Y
5. ECO 227Y/STA (250H, 257H)
6. One and a half courses from the following groups, of which at least one half-course must be from each of Groups A and B

Group A: CSC 434H, 458H
Group B: ECO 310Y, 314H, 328Y, 333Y, 334Y, 336Y, 348H
Group C: APM 361H/366H/371H; CSC 340H, 351H, 354H, 408H, 454H; ECE 385H; STA 302H, 322H, 347H, 437H, 457H


Consult Student Counsellor, Department of Computer Science or Professor S.A. Cook, Department of Computer Science.

Enrolment in this Program is limited. Admission requirements are the same as for the Specialist program in Computer Science. Consult the Timetable and the Department of Computer Science for details.

Specialist program: S21751 (15 full courses or their equivalent, including at least one 400-series course)
First Year: CSC 148H; MAT 157Y, 240H; STA 107H
First or Second Year: CSC 258H, 270H; writing requirement (See Note 1 to Specialist program in Computer Science)
Second Year: CSC 228H; MAT 247H, 257Y, 267H
Third Year: CSC 324H, 364H, 378H
Third or Fourth year:
1. MAT 347Y, 357Y; STA 250H/257H/352Y
2. One of CSC 438H, 448H, 465H, 478H
3. CSC 350H, 351H
4. One of CSC 408H, 418H, 428H, 434H, 458H, 468H, 484H, 485H, 488H
5. MAT 447H, 457Y
6. One of APM 461H, MAT 344H, 363H, 364H, 467H

1. It is recommended that PHY 140Y be taken.
2. Students in this Program may request admission to courses requiring CSC 238H as a prerequisite, without having taken CSC 238H.


Consult Student Counsellor, Department of Computer Science, or Associate Chair (Undergraduate Studies), Department of Physics.

Enrolment in this Program is limited. Admission requirements are the same as for the Specialist program in Computer Science. Consult the Timetable and the Department of Computer Science for details.

NOTE: Students in this Program must consult either Department during the spring of each year, to ensure that they choose courses appropriate to their intended careers. Specialist program: S17551 (17 full courses or their equivalent, including at least one 400-series course)
First Year: CSC 148H; MAT 137Y/157Y, 223H/240H; PHY 140Y

First or Second Year: CSC 238H/MAT 246Y, CSC 270H; writing requirement (see Note 1 to Specialist program in Computer Science)
Second Year: CSC228H; MAT 237Y/257Y, 244H/267H; PHY 225H, 251H, 252H, 255H, 256H
Third Year: APM 346H; CSC 324H, 350H, 378H; MAT 334H; PHY 351H, 352H, 355H
Third or Fourth Year:
1. CSC 351H, 364H
2. PHY 457H/459H/460H
3. CSC 408H/418H/428H/434H/458H/468H/485H/486H/487H/488H
4. 1.5 courses from the 300/400-level lab courses as described in the Notes to the Physics Specialist program


Consult Student Counsellor, Department of

Computer Science, or Undergraduate Secretary, Department of Statistics.

Enrolment in this Program is limited. Admission requirements are the same as for the Specialist program in Computer Science. Consult the Timetable and the Department of Computer Science for details. Specialist program: S10071 (16 full courses or their equivalent, including at least one 400-series course)

This program includes all the requirements of the Computer Science Specialist Program (with STA 250H and 257H replacing STA 107H, 250H/257H and taken in second year) and:

Third or Fourth Year:
1. STA 302H, 332H, 347H
2. Four of STA 322H, 348H, 422H, 437H, 438H, 442H, 457H


Consult Student Counsellor, Department of Computer Science.

Enrolment in this Program is limited. Admission requires 65% in CSC 148H, 60% in MAT 133Y/135Y/137Y/157Y, a minimum CGPA, and submission of a résumé. The required GPA may be raised to limit enrolment. Consult the Timetable and the Department of Computer Science for details.

Specialist program: S17741 (15 full courses or their equivalent, including at least one 400-series course)
First Year:
1. CSC 148H
2. MAT 133Y/135Y/137Y/157Y
3. SOC 101Y

First or Second Year: PSY 100Y

Second Year:
1. CSC 228H, 238H/MAT 246Y, CSC 258H, 270H
2. MAT 223H/240H; SOC 200Y
3. Writing requirement (see Note 1 to Specialist program in Computer Science)

Third Year:
1. CSC 300H, 318H, 324H, 340H
2. STA (220H, 221H)/(107H, 250H/257H)/PSY (201H, 202H)/SOC 300Y
3. PSY (270H, 271H)/JUP 250Y

Third or Fourth Year:
1. CSC 364H/378H; 428H
2. Two of CSC 408H, 418H, 448H, 454H, 468H, 485H, 486H, 487H, 494H
3. WDW 260Y

1. Students in this program choosing to graduate after three years may be certified in the Major program in Computer Science.
2. Students in this program should consult the Department of Computer Science at least annually to discuss their choice of courses, especially if they plan on graduate study.
3. Choosing MAT 133Y instead of MAT 135Y/137Y/157Y will make it harder to change to another Specialist program or to prepare for graduate work in Computer Science.
4. It is recommended that you take a physical science course such as PHY 138Y/140Y.
5. It is strongly recommended that you take at least one half-course in Human Factors or Ergonomics offered by the Department of Mechanical and Industrial Engineering. For advice on course choice consult the Department of Computer Science.


Consult Student Counsellor, Department of Computer Science.

Enrolment in this Program is limited. Admission requires 65% in CSC 148H, 60% in MAT 137Y/157Y, and a minimum CGPA. Consult the Timetable and the Department of Computer Science for details. Specialist program: S10371 (14.5 full courses or their equivalent, including at least one 400-series course)
First Year:
1. CSC 148H; MAT 137Y/157Y; MGT 120H
2. One 100-series full course in ECO/HIS/PHI/PHL/POL/PSY/SOC

First or Second Year:
1. CSC 238H/MAT 246Y, CSC 258H, 270H
2. STA 107H/(220H, 221H)
3. Writing requirement (see Note 1 to Specialist program in Computer Science. The writing requirement may be satisfied by some of the choices in item 2 under "First Year".)

Second Year or Third Year:
1. CSC 209H, 228H, 324H, 336H, 340H, 364H, 378H
2. MAT 223H/240H
3. STA 250H/257H

Third or Fourth Year:

MGT 262H/363H/WDW 260Y
Forth Year:
1. CSC 318H/428H; 408H, 434H; 454H/MGT 374H
2. Three of CSC 354H, 372H, 384H, ECE 385H, CSC 418H, 458H, 465H, 468H, 485H/486H/487H, 488H

1. Students in this program choosing to graduate after three years may be certified in the Major Program in Computer Science.
2. If you do not take STA 107H, you must take STA 257H, to satisfy course prerequisites and to complete the requirements for the Major. STA 257H is also required as prerequisite for MGT 374H.


Consult Student Counsellor, Department of Computer Science.

Enrolment in this Program is limited. Admission requires 65% in CSC 148H, 60% in MAT 137Y/157Y, and a minimum CGPA. Consult the Timetable and the Department of Computer Science for details.

Specialist program: S10391 (12.5 full courses or their equivalent, including at least one 400-series course)
First Year: CSC 148H; MAT 137Y/157Y; STA 107H

First or Second Year: CSC 238H/MAT246Y, CSC 258H,270H; writing requirement (See Note 1 to Specialist program in Computer Science.)

Second Year or Third Year: CSC 209H, 228H, 318H/428H, 324H, 340H; MAT 223H/240H; STA 250H/257H

Third or Fourth Year:
1. CSC 336H, 364H, 378H, 408H
2. Two of CSC 354H, 372H, 384H, ECE 385H, CSC 454H, 465H
3. Three of CSC 418H, 434H, 458H, 468H, 488H

1. Students in this program choosing to graduate after three years may be certified in the Major Program in Computer Science.
2. Students in this program are strongly encouraged to consider participating in the "PEY" program.


— See University College Programs


(see Section 4 for Key to Course Descriptions)

For Distribution Requirement purposes, all CSC courses are classified as SCIENCE courses.

First Year Seminar 52T

Undergraduate seminar that focuses on specific ideas, questions, phenomena or controversies, taught by a regular Faculty member deeply engaged in the discipline. Open only to newly admitted first year students. It may serve as a breadth requirement course; see page $$.

NOTE No late registration is permitted in any CSC course after the first two weeks of classes. Students may change from CSC 148H to CSC 108H until October 14th (fall term) or February 3rd (spring term). Enrolment in some CSC courses above 100-level is restricted. Consult the Timetable and the Department Handbook for details.

The Why and How of Computing 26L, 13T

Computer parts and their interconnection. Software: operating systems, files, interfaces. Hardware: storage media, memory, data representation, I/O devices. History of computing. Problem solving with computers: algorithms and basic programming concepts. Science and computer science; graphics, artificial intelligence. Common computer applications: databases, simulations. Implications for society: computers and work, office automation, computer security. (Students work with various applications and software, but the aim is to discuss general concepts of computer applications, not to serve as a tutorial for specific packages.)
Exclusion: SMC104H; VIC104H; grade 12/OAC computer studies or data processing.

NOTE: This course may not be taken after or concurrently with any other computing course.

This course is intended primarily for students in the Humanities and Social Sciences.

Introduction to Computer Programming 26L, 13T

Structure of computers; the computing environment. Programming in an object-oriented language such as Java. Program structure in an object-oriented language: classes, objects, methods, fields. Internal structure of methods: elementary data types, statements, control flow. Arrays; searching, sorting and complexity; user interfaces and event-driven programming.
Exclusion: CSC139H, 148H, 149H, 150H.

NOTE: You may not take this course after or concurrently with CSC148H, but you may take CSC148H after CSC108H.
Prerequisite: Grade 12 Mathematics

Introduction to Computer Science 26L, 13T

Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming in a language such as Java. Specifications. Analyzing the correctness and efficiency of programs using mathematical reasoning. Recursion. Recurrence relations for analysing the efficiency of recursive code. This course assumes programming experience in an object-oriented language such as C++ or Java. Students without this background should take CSC108H before attempting 148H. Consult the Computer Science Undergraduate Office for help in assessing your readiness.
Exclusion: CSC139H, 149H, 150H
Prerequisite: Two OACs from Calculus, Algebra & Geometry, Finite Mathematics
Recommended preparation: Programming experience/CSC108H

NOTE To enrol in any CSC course at the 200-level or higher, you must have a cumulative GPA of at least 2.00 or be enroled in a program sponsored by the Department of Computer Science.

Software Tools and Systems Programming 26L, 13T

Software development techniques, typically in the UNIX environment. Particular emphasis on what happens in the system when programs run. Core topics: software utilities (e.g. pipes, filters) shell programming, system calls, signals, file processing, introduction to concurrency (e.g. synchronization, mutual exclusion, race conditions, producer-consumer problem), processes. Additional topics may include: scripting languages, Internet programming languages, network programming (e.g. sockets).
Exclusion: After taking any 400-level CSC/ECE course, you may not take CSC209H without departmental permission in writing
Prerequisite: CSC270H

File Structures and Data Management 26L, 13T

An introduction to techniques for storing, accessing and managing long-term data in computer systems. Hardware and software aspects of data processing: processors, storage devices, communications, file I/O control. Techniques for organizing and managing files: serial files, direct files, indexed files, multikey files, integrated files, file systems. Introduction to data base management systems with emphasis on relational data base systems.
Prerequisite: CSC270H

Discrete Mathematics for Computer Science 26L, 13T

A rigorous treatment of certain aspects of discrete mathematics with applications to Computer Science. Emphasis on the basic properties and fundamental algorithms concerning integers (including induction, Euclidean algorithm, modular arithmetic), and on logic (including propositional and predicate calculus and simple formal theories). Application to topics such as program correctness, formal program verification, algorithms from graph theory, and elementary set theory.
Exclusion: MAT246Y, 309H
Prerequisite: CSC148H

Computer Organization 26L, 9P, 10T

Computer structures, machine languages, instruction execution, addressing techniques, and digital representation of data. Computer system organization, memory storage devices, and microprogramming. Block diagram circuit realizations of memory, control and arithmetic functions. There are a number of laboratory periods in which students conduct experiments with digital logic circuits.
Exclusion: CSC257H as given before 1985
Prerequisite: CSC148H

Introduction to Scientific, Symbolic, and Graphical Computation 26L, 13T

Problems in transforming continuous mathematical models to discrete computational models. Inadequacy of naive computer solutions, and techniques to remedy inadequacies. Symbolic computation, plotting, 3-D graphics, and conventional programming languages. Intended for students from computer science, sciences and mathematics: for computer scientists, introduction to design and implementation of robust algorithms; for scientists, techniques in transforming scientific problems into computational solutions; for mathematicians, insight into differences between mathematical models and computational solutions.
Exclusion: CSC160H as taught in Spring 1992; after taking CSC270H and any 300-/400-level CSC course, you may not take CSC260H without departmental permission in writing.
Prerequisite: CSC108H/computing experience, as from a good high school programming course
Co-requisite: MAT135Y/137Y/157Y, 223H/240H

Fundamental Data Structures and Techniques 26L, 13T

Standard programming methods, with an introduction to C and C++. Use of classes to represent abstract data types. Graph representation and graph algorithms. Simulation: data structures and program organization for event-driven models. Representation of floating-point numbers; introduction to numerical methods. Optimization using dynamic programming. Programming assignments stress both the proper use of abstract data types (lists, stacks, trees, heaps) and approaches to writing larger, more complex programs.
Prerequisite: CSC148H
Co-requisite: MAT133Y/135Y/137Y/157Y

Research Opportunity Program

Credit course for supervised participation in faculty research project. See Research Opportunity Program for details.

Computers and Society 26L, 13T

Privacy and Freedom of Information; recent Canadian legislation and reports. Computers and work; employment levels, quality of working life. Electronic fund transfer systems; transborder data flows. Computers and bureaucratization. Computers in the home; public awareness about computers. Robotics. Professionalism and the ethics of computers. The course is designed not only for science students, but also those in social sciences or humanities.
Exclusion: PSCD03H (Scarborough College)
Prerequisite: Any half-course on computing

The Design of Interactive Computational Media 26L, 13T

User-centred design of interactive systems; methodologies, principles, and metaphors; task analysis. Interdisciplinary design; the role of graphic design, industrial design, and the behavioural sciences. Interactive hardware and software; concepts from computer graphics. Typography, layout, colour, sound, video, gesture, and usability enhancements. Classes of interactive graphical media; direct manipulation systems, extensible systems, rapid prototyping tools. Students work on projects in interdisciplinary teams. Enrolment limited, but non-computer scientists welcome.
Prerequisite: Any CSC half-course

Principles of Programming Languages 26L, 13T

Alternative paradigms for programming, illustrated by particular programming languages. Students already familiar with the procedural approach of languages such as Turing or C will learn about functional programming (illustrated by Lisp or Scheme) and logic programming (illustrated by Prolog). Additional topics in principles of programming languages.
Exclusion: CSC248H
Prerequisite: CSC238H/MAT246Y, CSC148H

Numerical Methods 26L, 13T

The study of computational methods for solving problems in linear algebra, non-linear equations, approximation, integration, and ordinary differential equations. The aim is to give students both a basic understanding of floating-point arithmetic and the methods used to solve numerical problems as well as a familiarity with the types of subroutines found in typical software packages.
Exclusion: ACT323H, 335H, CSC350H, 351H
Prerequisite: CSC260H/270H, MAT133Y(70%)/135Y/137Y/157Y, 223H/240H

Information Systems Analysis and Design 26L, 13T

Theory, tools and techniques of information systems analysis and design. Topics include: theory of systems and organizations; structured analysis and design; user interface design.
Prerequisite: CSC228H

Numerical Algebra and Optimization 26L, 13T

Floating-point arithmetic. The efficiency and stability of solution techniques for systems of linear equations and least squares problems, including LU- and QR-based methods. Eigenvalue and eigenvector calculations. Algorithms for systems of non-linear equations and optimization problems, including linear programming.
Exclusion: CSC336H, ACT323H, 335H
Prerequisite: CSC260H/270H, MAT223H/240H, 237Y/257Y

Numerical Approximation, Integration and Ordinary Differential Equations 26L, 13T

Analysis of methods for approximation, integration and the solution of ordinary differential equations. Emphasis on the convergence and stability properties of the algorithms, rather than on their implementation.
Exclusion: ACT323H, 335H, CSC336H
Prerequisite: CSC350H

Discrete-Event Simulation and Modelling 26L, 13T

Simulation and mathematical analysis of models of queuing systems. Concentration on dynamic, stochastic, discrete-event systems. Simulation topics: selecting input probability distributions, generating random numbers and random variates, output data analysis for one or more system configurations, variance reduction techniques. Analysis topics: queuing characteristics, transient and steady-state behaviour, performance measures, the M/M/1 queue in detail, some non-Markovian queues.
Prerequisite: CSC260H/270H, STA250H/255H/257H

Computability and Complexity 26L, 13T

Measuring algorithm performance. Techniques of efficient algorithm design: divide and conquer, greedy method, dynamic programming, graph traversal, change of representation. Introduction to complexity theory: models of computation, P, NP, polynomial time reducibility, NP-completeness. Introduction to the theory of computation: Church's thesis, computable and noncomputable functions, recursive and recursively enumerable sets, universality, many-one reducibility.
Prerequisite: CSC238H/(MAT246Y/247H plus some knowledge of programming)

Microprocessor Software 26L, 13T, 39P

Development of reliable efficient software for controlling and monitoring an environment. Concurrent programming techniques, such as interrupt handling, buffer management, polling and time outs. Projects use microprocessors to control equipment (such as a robot arm) and to read sensors. Design, implementation and testing of software using high level software, such as Turing or C.
Prerequisite: ECE385H

Data Structures and Algorithm Analysis 26L, 13T

Abstract data types such as priority queues and dictionaries. Advanced data structures for main memory resident information, such as binomial heaps, leftist trees, self-adjusting lists and balanced search trees. Algorithm analysis: worst case, average case, and amortized complexity. Introduction to lower bounds. Emphasis is given to problem solving and a theoretical treatment of the data structures.
Prerequisite: CSC270H; CSC238H/MAT246Y/247H, STA107H/257H

Introduction to Artificial Intelligence (formerly CSC484H) 26L, 13T

The nature of intelligence and the Turing test; the symbol system hypothesis; representation and logic; rule-based systems; search; planning; understanding natural language; computer vision; neural networks.
Exclusion: CSC484H
Prerequisite: CSC324H

Microprocessor Systems 26L, 39P

A hardware-oriented course dealing with microprocessor systems. Microprocessor components, memory devices, input/output techniques, bus structure, peripheral device controllers, hardware system and programming considerations. Laboratory experiments provide "hands-on" experience.
Prerequisite: CSC258H

Software Engineering 26L, 3T

The structure and unique characteristics of large software systems. Concepts and techniques in the design and implementation of large software systems. Requirements, definition, and specification. Software modularity and programming languages for system implementation. Debugging, testing and software quality assurance. Software project management. Formal methods in software engineering. A course project is used to illustrate software engineering techniques.
Prerequisite: CSC340H, 378H
Recommended preparation: proficiency in C; some of CSC209H/300H/318H

Computer Graphics 26L, 13T

Identification and characterization of the objects manipulated in computer graphics, the operations possible on these objects, efficient algorithms to perform these operations, and interfaces to transform one type of object to another. Display devices, display data structures and procedures, graphical input, object modelling, transformations, illumination models, primary and secondary light effects; graphics packages and systems. Students, individually or in teams, implement graphical algorithms or entire graphics systems.
Prerequisite: CSC336H/350H/351H/364H/378H, proficiency in C, MAT223H/240H

Human-Computer Interaction 26L, 13T

Understanding human behaviour as it applies to user interfaces: work activity analysis, observational techniques, questionnaire administration and unobtrusive measures. Operating parameters of the human cognitive system, task analysis and cognitive modelling techniques and their application to designing interfaces. Interface representations and prototyping tools. Cognitive walkthroughs, usability studies and verbal protocol analysis. Case studies of specific user interfaces.
Prerequisite: CSC318H/324H/372H/378H
Recommended preparation: A course in PSY, CSC318H

Data Management Systems 26L, 13T

Concepts, approaches, and techniques in data base management systems (DBMS): data and information management; logical models of data bases: relational, network, and hierarchical DBMS's; operational requirements; implementation considerations; DBMS architecture; data base design.
Prerequisite: CSC228H, 378H
Recommended preparation: proficiency in C

Computability and Logic 26L, 13T

Computable functions, Church's thesis, unsolvable problems, recursively enumerable sets. Predicate calculus, including the completeness, compactness, and Lowenheim-Skolem theorems. Formal theories and the Gödel Incompleteness Theorem.
Exclusion: MAT309H, PHL344H
Prerequisite: CSC364H/MAT247H

Computational Methods for Partial Differential Equations 26L, 13T

Finite difference methods for hyperbolic and parabolic equations; consistency, convergence, and stability. Finite element methods for 2-point boundary value problems and elliptic equations. Special problems of interest.

Prerequisites: CSC351H/(336H (75%))/equivalent mathematical background; MAT237Y/257Y; APM346H/351Y or (MAT244H/267H and exposure to PDE's)

Formal Languages and Automata 39L

Regular, deterministic, context free, context sensitive, and recursively enumerable languages via generative grammars and corresponding automata (finite state machines, push down machines, and Turing machines). Topics include complexity bounds for recognition, language decision problems and operations on languages.
Prerequisite: CSC364H/MAT247H

The Business of Software 26L, 13T

Overview of the software industry, and principles of operation for successful software enterprises. Software business definition and planning; market and product planning; management of innovation, research and software development; software marketing and sales management; software manufacturing and support; financial management of high-technology ventures; human resource management and development in high-technology industries. (Ordinarily offered in alternate years)
Prerequisite: Five CSC half-courses at the 200-level or higher
Recommended preparation: MGT120H

High-Performance Scientific Computing 26L, 13T

Computationally-intensive applications in science and engineering are implemented on the fastest computers available, today composed of many processors operating in parallel. Parallel computer architectures; implementation of numerical algorithms on parallel architectures. Topics from: performance evaluation; scientific visualization; numerical methods; applications from science and engineering. For students in computer science, applied mathematics, science, engineering.
Prerequisite: CSC350H/(336H (75%))/equivalent mathematical background

Computer Networks 26L, 13T

Computer communication network design and operation. Representation of information on physical channels; error detection and recovery; local area networks; deadlock and congestion avoidance; internetworking and gateways; network naming and addressing; remote procedures. Emphasis on fundamental principles rather than case studies, but with examples from real networks.
Prerequisite: CSC258H, 354H/364H/372H/378H/ECE385H, STA250H/255H/257H/(80% in STA220H/ECO220Y)

Programming Methodology 26L, 13T

The use of logic as an aid to programming. Formal semantics of programming languages: imperative programs, functional programs, parallel processes, communicating processes. Partial and total correctness. Refinement theorems: by steps, by parts, by cases. Semantics of recursion and the least-fixed-point construction; monotonicity, continuity. Semantics of data types; data refinement.
Prerequisite: CSC238H/MAT309H
Recommended preparation: CSC364H

Operating Systems 26L, 13T

Principles of operating systems. The operating system as a control program and as a resource allocator. The concept of a process is central: synchronization, mutual exclusion, deadlock. Additional topics include memory management, file systems, process scheduling, and protection. Some treatment of multiprocessor issues, such as threads and scheduling. Case studies from systems such as Unix and Mach. Experimentation with a simple operating system using a concurrent programming language.
Prerequisite: CSC258H, 209H/knowledge of concurrent programming

Computer Algebra 26L, 13T

Algebraic theory that underlies symbolic and algebraic manipulation by computer. Chinese Remainder and interpolation theory, fast algorithms for computations with integers, polynomials and power series. Newton and Hensel iteration, polynomial and integer gcd algorithms, factorization of polynomials, the Fast Fourier transform, prime number tests, public-key cryptosystems. The Maple computer algebra system.
Prerequisite: MAT301H/(247H with preparation in ring theory)
Recommended preparation: CSC364H

Computational Linguistics 26L, 13T

Computational linguistics and the understanding and generation of natural language by computer. Syntactic processing: transformational grammar, ATNs. Semantics and semantic interpretation. Pragmatics: speech acts, pronouns, definite descriptions, discourse context.
Prerequisite: CSC324H or experience in Lisp or Prolog
Recommended preparation: Students are urged to consult the instructor before enrolling. Suggested background includes substantial computing experience and a course in AI, such as CSC384H, or some aspect of linguistics. Students in linguistics programs should consult the instructor.

Knowledge/Representation and Reasoning 26L, 13T

Representing knowledge symbolically in a form suitable for automated reasoning, and associated reasoning methods: first-order logic, entailment, the resolution method, Horn clauses, procedural representations, production systems, description logics, inheritance networks, defaults and probabilities, tractable reasoning, abductive explanation, the representation of action, planning.
Prerequisite: CSC384H
Co-requisite: CSC438H/MAT309H/PHL344H

Computational Vision 26L, 13T

Introduction to vision, visual processes, and image understanding. Brief biological motivation for computational vision. Camera system geometry and image acquisition, basic visual processes for recognition of edges, regions, lines, surfaces. Processing colour, stereo images, and motion in image sequences. Active vision methods such as visual attention and interpretation-guided imaging system geometry changes. Object recognition. Applications of visual systems.
Prerequisite: CSC384H, MAT235Y/237Y/257Y

Compilers and Interpreters 26L, 13T

Compiler organization, compiler writing tools, use of regular expressions, finite automata and context-free grammars, scanning and parsing, runtime organization, semantic analysis, implementing the runtime model, storage allocation, code generation.
Prerequisite: CSC324H, 378H
Recommended preparation: proficiency in C

Computer Science Project TBA

This half-course involves a significant project in any area of Computer Science. The project may be undertaken individually or in small groups. The course is offered by arrangement with a Computer Science faculty member.
Prerequisite: Three 300-level Computer Science half-courses, a GPA of 2.50, and permission of the Undergraduate Secretary

Top of page [Calendar: Contents |  Calendar Search | Programs & Courses |

We welcome your comments and enquiries.
Revised: April 6, 1998

All contents copyright ©, 1998. University of Toronto. All rights reserved.