CSC Computer Science CoursesCSC104H1 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.) CSC108H1 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. Practical (P) sections consist of supervised work in the computing
laboratory. These sections are offered when facilities are available, and attendance is
required. CSC148H1 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. Practical (P) sections
consist of supervised work in the computing laboratory. These sections are offered when
facilities are available, and attendance is required. CSC209H1 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). CSC228H1 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. CSC238H1 A rigorous treatment of certain aspects of discrete mathematics, with applications to
Computer Science. Topics include mathematical induction, program correctness, recurrences,
divide-and-conquer algorithms, finite state machines, and an introduction to the
propositional and predicate calculus. CSC258H1 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. CSC260H1 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. CSC270H1 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. CSC299Y1 Research Opportunity Program CSC300H1 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. CSC310H1 Measuring information. The source coding theorem. Data compression using ad hoc methods
and dictionary-based methods. Probabilistic source models, and their use via Huffman and
arithmetic coding. Noisy channels and the channel coding theorem. Error correcting codes,
and their decoding by algebraic and probabilistic methods. CSC318H1 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; CSC324H1 Major topics in the development of modern programming languages. Syntax specification,
type systems, type interface, exception handling, information hiding, structural
recursion, run-time storage management, and programming paradigms. Two non-procedural
programming paradigms: functional programming (illustrated by languages such as Lisp,
Scheme, ML or Haskell) and logic programming (illustrated by languages such as Prolog, XSB
or Coral). CSC336H1 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. CSC340H1 Theory, tools and techniques of information systems analysis and design. Topics
include: theory of systems and organizations; structured analysis and design; user
interface design. CSC350H1 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. CSC351H1 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. CSC354H1 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. CSC364H1 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: Churchs
thesis, computable and noncomputable functions, recursive and recursively enumerable sets,
universality, many-one reducibility. CSC372H1 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. CSC378H1 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. CSC384H1 (formerly CSC484H) 26L, 13T CSC398H0/399Y0 An instructor-supervised group project in an off-campus setting. See page 42 for details. CSC401H1 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. CSC407H1 An introduction to the software design process and specific software design methods,
including structured and object oriented design. This course examines the global structure
of software systems, including representations of design/architecture, design state
assessment, design quality assurance, and design verification. The course does not have a
major project but may have some design exercises. CSC408H1 The structure and unique characteristics of large software systems. The software
process and software project management including project planning, risk management,
staffing and organizational issues. Review of requirements analysis and specification.
Software development techniques, version control, configuration management, system
construction tools. Software system testing and quality assurance. Software maintenance
and product delivery strategies. A course project is used to illustrate software
engineering techniques. CSC411H1 An introduction to methods for automated learning of relationships on the basis of
empirical data. Classification and regression using nearest neighbour methods, decision
trees, linear models, and neural networks. Clustering algorithms. Problems of overfitting
and of assessing accuracy. Problems with handling large databases. CSC412H1 Representing uncertain knowledge using probability and other formalisms. Qualitative
and quantitative specification of probability distributions using graphical models.
Algorithms for inference with graphical models. Statistical approaches and algorithms for
learning models from experience. Application of these models in other areas of artificial
intelligence and to problems such as medical diagnosis. CSC418H1 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. CSC428H1 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. CSC434H1 Concepts, approaches, and techniques in data base management systems (DBMS): data and
information management; logical models of data bases: relational, network, and
hierarchical DBMSs; operational requirements; implementation considerations; DBMS
architecture; data base design. CSC438H1 Computable functions, Churchs thesis, unsolvable problems, recursively enumerable
sets. Predicate calculus, including the completeness, compactness, and Lowenheim-Skolem
theorems. Formal theories and the Gödel Incompleteness Theorem. CSC446H1 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. CSC448H1 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. CSC454H1 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) CSC456H1 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. CSC457H1 Introduction to complex problem-solving in the pure and applied sciences using
numerical methods and high performance computing. Several case studies from current active
areas in scientific research are examined as applications of methods in the reduction and
analysis of experimental data, numerical simulation of physical phenomena and computer
visualization. Emphasis is placed on the optimization and parallelization of algorithms in
computationally intensive problems. CSC458H1 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. CSC465H1 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. CSC468H1 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. CSC478H1 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. CSC485H1 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. CSC486H1 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. CSC487H1 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. CSC488H1 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. CSC494H1/495H1 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. |
Calendar Home ~ Calendar Contents~
Contact Us ~ Arts and Science Home
Copyright © 2000, University of Toronto