CSC Computer Science Courses SCI199Y1 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 distribution requirement course; see page 44. NOTE 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.) CSC107H1 Self-paced Introduction to Computer Programming 13L
Through independent study, students learn the material at their own pace. 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. CSC108H1 Introduction to Computer Programming 39L, 12T, 12P 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. Practical (P) sections consist of supervised work in the computing laboratory.
These sections are offered when facilities are available, and attendance is required. CSC148H1 Introduction to Computer Science 26L, 13T, 12P 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. CSC150H1 Accelerated Introduction to Computer Science 39L, 13T, 12P An accelerated course covering all the material of CSC148H and also object-oriented topics (classes, objects,
methods and fields, and program design). Suitable for students with a solid programming
background in Turing, C, Pascal or a similar language, who are willing to accept a heavier
workload than in CSC108H and CSC148H. NOTE 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, network programming (e.g. sockets). 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. CSC230H1 Logical Specifications 26L, 13T Logic and its use as a declarative language in computer
science. Syntax and semantics of propositional and predicate calculus. Proving entailment
and non-entailment rigorously. Formal derivations. Applications, including information
systems, program verification, artificial intelligence, software engineering.
Computational tools, including Prolog. Other logics. CSC238H1 Discrete Mathematics for Computer Science 26L, 13T 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 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. 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. 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. CSC299Y1 Research Opportunity Program Credit course for supervised participation in faculty research project. See page 44 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. CSC309H1 Programming on the Web 26L, 13T An introduction to software development on the web. Concepts
underlying the development of programs that operate on the web; survey of technological
alternatives; greater depth on some technologies. Operational concepts of the internet and
the web, static client content, dynamic client content, dynamically served content,
n-tiered architectures, web development processes, and security on the web. Assignments
involve increasingly more complex web-based programs. Guest lecturers from leading
e-commerce firms will describe the architecture and operation of their web sites. 26L, 13T CSC310H1 Information Theory 26L, 13T 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 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; CSC324H1 Principles of Programming Languages 26L, 13T 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 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. 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. 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. 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. 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. CSC364H1 Computational Complexity and Computability 26L, 13T General techniques for efficient algorithm design: greedy
algorithms, dynamic programming; other topics may include network flow, linear
programming, randomized algorithms. Introduction to complexity theory: models of
computation, the classes Pand NP, polynomial time reducibility, NP-completeness, provably
hard problems. Introduction to the theory of computability: Church's thesis, computable
and noncomputable functions, reductions, the analogies between complexity and
computability theory. 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. 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. CSC384H1 Introduction to Artificial Intelligence (formerly CSC484H) 26L,
13T ECE385H1 Microprocessor Systems 26L, 39P A hardware-oriented course dealing with microprocessor
systems. Microprocessor components, memory devices, input/output techniques, bus
structure, peripheral device controllers, hardware system and programming considerations.
Laboratory experiments provide "hands-on" experience. CSC398H0/399Y0 Independent Experiential Study Project An instructor-supervised group project in an off-campus setting. See page 44 for details. 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. CSC407H1 Software Architecture and Design 26L, 13T An introduction to the development of the system-level
architectures and class-level object-oriented designs for software systems. Special
emphasis on the study of architecture and design patterns: the core of solutions to
commonly occurring design problems. Representations of design/architecture (with emphasis
on the use of UML as a class-level design notation), architectural assessment, product
lines, architecture extraction, and re-factoring. There is no major project, but there is
a series of smaller design and architecture exercises requiring some programming. A
knowledge of UML as used for requirements analysis and a working knowledge of both the C++
and Java languages is assumed. CSC408H1 Software Engineering 26L, 13T 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 Machine Learning and Data Mining 26L, 13T 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 Uncertainty and Learning in Artificial Intelligence 26L, 13T 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 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. 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. 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. 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 Godel Incompleteness Theorem. 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. 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. 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) 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. CSC457H1 Case Studies in Scientific Computation 26L, 13T 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 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. CSC465H1 Formal Methods in Software 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. 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. CSC485H1 Computational Linguistics 26L, 13T Computational linguistics and the understanding of language
by computer. Augmented context-free grammars, chart parsing, parsing in Prolog. Semantics
and semantic interpretation. Ambiguity resolution techniques. Statistical parsing and
learning methods for lexical, syntactic and semantic knowledge. Discourse structure and
reference resolution. 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. 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. 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. ECE489H1 Optimizing Compilers 26L, 39P Theoretical and practical aspects of building modern
optimizing compilers. Topics: intermediate representations, basic blocks and flow graphs,
data flow analysis, partial evaluation and redundancy elimination, loop optimizations,
register allocation, instruction scheduling, interprocedural analysis, and memory
hierarchy optimizations. Students implement significant optimizations within the framework
of a modern research compiler. (This course is a cross-listing of ECE 540H, Faculty of Applied Science and Engineering.) CSC494H1/495H1 Computer Science Project TBA |
Calendar Home ~ Calendar Contents~
Contact Us ~ Arts and Science Home |