calendar.gif (14985 bytes)
Calendar Home Calendar Contents Contact Us Arts and Science Home

CSC Computer Science Courses


CSC104H1
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.


CSC108H1
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.


CSC148H1
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, as provided by CSC108H. Students who already have this background may consult the Computer Science Undergraduate Office for advice about skipping CSC108H.
Exclusion: CSC139H, 149H, 150H
Prerequisite: CSC108H and two OACs from Calculus, Algebra & Geometry, Finite Mathematics


CSC209H1
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; CGPA 2.0


CSC228H1
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; CGPA 2.0


CSC238H1
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; CGPA 2.0
Recommended preparation: MAT137Y


CSC258H1
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; CGPA 2.0


CSC260H1
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; CGPA 2.0
Co-requisite: MAT135Y/137Y/157Y, 223H/240H


CSC270H1
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; CGPA 2.0
Co-requisite: MAT133Y/135Y/137Y/157Y


CSC299Y1
Research Opportunity Program

Credit course for supervised participation in faculty research project. See page 42 for details.


CSC300H1
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; CGPA 2.0


CSC318H1
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; CGPA 2.0


CSC324H1
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; CGPA 2.0


CSC336H1
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; CGPA 2.0


CSC340H1
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; CGPA 2.0


CSC350H1
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; CGPA 2.0


CSC351H1
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; CGPA 2.0


CSC354H1
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; CGPA 2.0


CSC364H1
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); CGPA 2.0


CSC372H1
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: CSC209H, ECE385H; CGPA 2.0


CSC378H1
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; CGPA 2.0


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

A broad introduction to the sub-disciplines of AI. Core topics: search methods, game playing and rule-based systems. Overview of: natural language understanding, knowledge representation, reasoning, planning, vision, robotics, learning and neural networks. Assignments provide practical experience, both theory and programming, of the core topics. LISP or Prolog programming is required for at least one assignment.
Exclusion: CSC484H
Prerequisite: CSC324H; CGPA 2.0


CSC401H1
Natural Language Computing 26L, 13T

Introduction to techniques involving natural language and speech in applications such as information retrieval, extraction, and filtering; intelligent Web searching; spelling and grammar checking; speech recognition and synthesis; and multi-lingual systems including machine translation. N-grams, POS-tagging, semantic distance metrics, indexing, on-line lexicons and thesauri, markup languages, collections of on-line documents, corpus analysis. PERL and other software.
Prerequisite: CSC228H, STA220H/250H/257H; CGPA 2.0
Recommended preparation: CSC340H


CSC408H1
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; CGPA 2.0
Recommended preparation: proficiency in C; some of CSC209H/300H/318H


CSC418H1
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; CGPA 2.0


CSC428H1
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; CGPA 2.0
Recommended preparation: A course in PSY, CSC318H


CSC434H1
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; CGPA 2.0
Recommended preparation: proficiency in C


CSC438H1
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; CGPA 2.0


CSC446H1
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); CGPA 2.0


CSC448H1
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; CGPA 2.0


CSC454H1
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; CGPA 2.0
Recommended preparation: MGT120H


CSC456H1
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; CGPA 2.0


CSC458H1
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); CGPA 2.0


CSC465H1
Formal Methods of Program Design 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; CGPA 2.0
Recommended preparation: CSC364H


CSC468H1
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; CGPA 2.0


CSC478H1
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); CGPA 2.0
Recommended preparation: CSC364H


CSC485H1
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; CGPA 2.0
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.


CSC486H1
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; CGPA 2.0
Co-requisite: CSC438H/MAT309H/PHL344H


CSC487H1
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; CGPA 2.0


CSC488H1
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; CGPA 2.0
Recommended preparation: proficiency in C


CSC494H1/495H1
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 CGPA of 2.50, and permission of the Undergraduate Secretary


Calendar Home ~ Calendar Contents~ Contact Us ~ Arts and Science Home

Copyright © 1999, University of Toronto