CSC COMPUTER SCIENCEOn this page: Introduction  Faculty Members  Programs  CoursesSee also: Course Summer Timetable  Course Winter Timetable  Secondary School Information  More on Department IntroductionWhat 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 grandmasterlevel 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 daytoday 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 HumanComputer Interaction focus on developing areas of computing. The equipment and software available to students are uptodate and accessible. On the St. George campus, microcomputers are used at the introductory level, and a network of workstations serves upperlevel courses. In addition, some higherlevel courses are based on laboratories. Some Computer Science courses are offered in the evening, to allow parttime students to pursue our programs. Introductory courses and some higherlevel 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 100level courses (listed in program descriptions) and on the cumulative GPA. The minimum mark in CSC 148H is 65%, and in firstyear 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 (9786360) Faculty Members
COMPUTER SCIENCE PROGRAMSCOMPUTER SCIENCE (B.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 400series 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 or Second Year: CSC 238H/MAT 246Y, CSC 258H, 270H; MAT (223H, 224H)/240H; writing requirement (See Note 1 to Specialist program)
NOTES:
ENG  any 100 or 200level except 269Y; GER 235Y, 251Y; HIS  any 100 or 200level; 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, higherlevel courses in the "Humanism" grouping; NMC 170Y, 185Y, 278Y, higherlevel courses in the "History" grouping; PHL/PHI 100Y, 101Y, 102Y, any 200 or 300level except 245H, 246H, 247H, 344H, 345H, 346H, 347H, 349H, 356H; POL 100Y, 102Y, 103Y, 104Y, 108Y, any 200level except 242Y; RLG 100Y, 101Y, any 200level; 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.
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.
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 halfcourse 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.
COMPUTER SCIENCE and APPLIED MATHEMATICS (Hon.B.Sc.)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. COMPUTER SCIENCE AND ECONOMICS (Hon.B.Sc.)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 400series course)
Group A: CSC 434H, 458H
COMPUTER SCIENCE AND MATHEMATICS (Hon.B.Sc.)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 400series course)
NOTES:
COMPUTER SCIENCE AND PHYSICS (Hon.B.Sc.)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 400series course)
First or Second Year: CSC 238H/MAT 246Y, CSC 270H; writing requirement (see Note 1 to Specialist program in Computer Science)
COMPUTER SCIENCE AND STATISTICS (Hon.B.Sc.)Consult Student Counsellor, Department ofComputer 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 400series 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:
HUMANCOMPUTER INTERACTION (Hon.B.Sc.)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 400series course)
First or Second Year: PSY 100Y Second Year:
Third Year:
Third or Fourth Year:
NOTES:
INFORMATION SYSTEMS (Hon.B.Sc.)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 400series course)
First or Second Year:
Second Year or Third Year:
Third or Fourth Year: MGT 262H/363H/WDW 260Y
NOTES:
SOFTWARE ENGINEERING (Hon.B.Sc.)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 400series course)
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:
NOTES:
COGNITIVE SCIENCE & ARTIFICIAL INTELLIGENCE— See University College ProgramsCOMPUTER SCIENCE COURSES(see Section 4 for Key to Course Descriptions)For Distribution Requirement purposes, all CSC courses are classified as SCIENCE courses.
SCI199Y 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 100level is restricted. Consult the Timetable and the Department Handbook for details.
CSC104H 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.)
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.
CSC108H Structure of computers; the computing environment. Programming in an objectoriented language such as Java. Program structure in an objectoriented language: classes, objects, methods, fields. Internal structure of methods: elementary data types, statements, control flow. Arrays; searching, sorting and complexity; user interfaces and eventdriven programming.
NOTE: You may not take this course after or concurrently with CSC148H, but you may take CSC148H after CSC108H.
CSC148H Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and informationhiding. Objectoriented 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 objectoriented 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.
NOTE To enrol in any CSC course at the 200level 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.
CSC209H 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, producerconsumer problem), processes. Additional topics may include: scripting languages, Internet programming languages, network programming (e.g. sockets).
CSC228H An introduction to techniques for storing, accessing and managing longterm 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.
CSC238H 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.
CSC258H 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.
CSC260H Problems in transforming continuous mathematical models to discrete computational models. Inadequacy of naive computer solutions, and techniques to remedy inadequacies. Symbolic computation, plotting, 3D 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.
CSC270H 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 eventdriven models. Representation of floatingpoint 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.
CSC299Y Credit course for supervised participation in faculty research project. See Research Opportunity Program for details.
CSC300H 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.
CSC318H Usercentred 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 noncomputer scientists welcome.
CSC324H 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.
CSC336H The study of computational methods for solving problems in linear algebra, nonlinear equations, approximation, integration, and ordinary differential equations. The aim is to give students both a basic understanding of floatingpoint arithmetic and the methods used to solve numerical problems as well as a familiarity with the types of subroutines found in typical software packages.
CSC340H Theory, tools and techniques of information systems analysis and design. Topics include: theory of systems and organizations; structured analysis and design; user interface design.
CSC350H Floatingpoint arithmetic. The efficiency and stability of solution techniques for systems of linear equations and least squares problems, including LU and QRbased methods. Eigenvalue and eigenvector calculations. Algorithms for systems of nonlinear equations and optimization problems, including linear programming.
CSC351H 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.
CSC354H Simulation and mathematical analysis of models of queuing systems. Concentration on dynamic, stochastic, discreteevent 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 steadystate behaviour, performance measures, the M/M/1 queue in detail, some nonMarkovian queues.
CSC364H 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, NPcompleteness. Introduction to the theory of computation: Church's thesis, computable and noncomputable functions, recursive and recursively enumerable sets, universality, manyone reducibility.
CSC372H 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.
CSC378H Abstract data types such as priority queues and dictionaries. Advanced data structures for main memory resident information, such as binomial heaps, leftist trees, selfadjusting 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.
CSC384H The nature of intelligence and the Turing test; the symbol system hypothesis; representation and logic; rulebased systems; search; planning; understanding natural language; computer vision; neural networks.
ECE385H A hardwareoriented 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 "handson" experience.
CSC408H 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.
CSC418H 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.
CSC428H 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.
CSC434H 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.
CSC438H Computable functions, Church's thesis, unsolvable problems, recursively enumerable sets. Predicate calculus, including the completeness, compactness, and LowenheimSkolem theorems. Formal theories and the Gödel Incompleteness Theorem.
CSC446H Finite difference methods for hyperbolic and parabolic equations; consistency, convergence, and stability. Finite element methods for 2point 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)
CSC448H 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.
CSC454H 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 hightechnology ventures; human resource management and development in hightechnology industries. (Ordinarily offered in alternate years)
CSC456H Computationallyintensive 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.
CSC458H 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.
CSC465H 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 leastfixedpoint construction; monotonicity, continuity. Semantics of data types; data refinement.
CSC468H 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.
CSC478H 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, publickey cryptosystems. The Maple computer algebra system.
CSC485H 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.
CSC486H Representing knowledge symbolically in a form suitable for automated reasoning, and associated reasoning methods: firstorder 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.
CSC487H 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 interpretationguided imaging system geometry changes. Object recognition. Applications of visual systems.
CSC488H Compiler organization, compiler writing tools, use of regular expressions, finite automata and contextfree grammars, scanning and parsing, runtime organization, semantic analysis, implementing the runtime model, storage allocation, code generation.
CSC494H/495H This halfcourse 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.
All contents copyright ©, 1998. University of Toronto. All rights reserved.
