[to DCS Home Page] [10 Kings College Road, SF 
3302; Toronto, Ontario, Canada]

[DCS Homepage] [Research] [Graduate Studies] [Undergraduate Studies] [Search]

COMPUTER SCIENCE COURSES

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

In addition to this information you may want to see the list of the instructor prepared course pages, or the University timetables. SCI199Y
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 cou rse, see the Calendar

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.

CSC104H
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 softw are, 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.

CSC108H
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, state ments, 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

CSC148H
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 us ing 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 CSC108 H 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.

CSC209H
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, in troduction 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

CSC228H
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 managin g 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

CSC238H
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 o n 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

CSC258H
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

CSC260H
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 language s. 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

CSC270H
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

CSC299Y
Research Opportunity Program

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

CSC300H
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 hom e; 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

CSC318H
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 interdiscipl inary teams. Enrolment limited, but non-computer scientists welcome.
Prerequisite: Any CSC half-course

CSC324H
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

CSC336H
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 t he 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

CSC340H
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

CSC350H
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-linea r equations and optimization problems, including linear programming.
Exclusion: CSC336H, ACT323H, 335H
Prerequisite: CSC260H/270H, MAT223H/240H, 237Y/257Y

CSC351H
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

CSC354H
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 an alysis 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

CSC364H
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 ti me 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)

CSC372H
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 a s a robot arm) and to read sensors. Design, implementation and testing of software using high level software, such as Turing or C.
Prerequisite: ECE385H

CSC378H
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

CSC384H
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

ECE385H
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 pro vide "hands-on" experience.
Prerequisite: CSC258H

CSC408H
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 syste m 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

CSC418H
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 ent ire graphics systems.
Prerequisite: CSC336H/350H/351H/364H/378H, proficiency in C, MAT223H/240H

CSC428H
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 mod elling 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

CSC434H
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 arch itecture; data base design.
Prerequisite: CSC228H, 378H
Recommended preparation: proficiency in C

CSC438H
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

CSC446H
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)

CSC448H
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 reco gnition, language decision problems and operations on languages.
Prerequisite: CSC364H/MAT247H

CSC454H
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

CSC456H
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 pa rallel 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

CSC458H
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)

CSC465H
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 case s. Semantics of recursion and the least-fixed-point construction; monotonicity, continuity. Semantics of data types; data refinement.
Prerequisite: CSC238H/MAT309H
Recommended preparation: CSC364H

CSC468H
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, proc ess 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

CSC478H
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 integ er 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

CSC485H
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, disco urse 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.

CSC486H
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, in heritance networks, defaults and probabilities, tractable reasoning, abductive explanation, the representation of action, planning.
Prerequisite: CSC384H
Co-requisite: CSC438H/MAT309H/PHL344H

CSC487H
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

CSC488H
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

CSC494H/495H
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