Computer Science and Computer Engineering Courses


Navigation

Undergraduate Computer Science courses
    100-level courses
    200-level courses
    300-level courses
    400-level courses
    Deleted courses
Graduate Computer Science courses

Undergraduate Computer Engineering courses
    100-level courses
    200-level courses
    300-level courses
    400-level courses
    500-level courses
Graduate Computer Engineering courses

Undergraduate Computer Science courses


100-level courses


CSC104H1    The Why and How of Computing[24L/12T]

An introduction to computing for non-computer scientists. History of computing machinery; representation of data and their interaction with operations; hardware, software, operating systems; problem solving and algorithms; social issues in computing; a gentle introduction to programming. This course is an introduction to becoming actively engaged with computing, not a tutorial on using particular computer applications.

Note: you may not take this course concurrently with any CSC course, but you may take CSC108H1/CSC148H1/CSC150H1 after CSC104H1.

Exclusion: SMC104H1 (as taught before 1990); VIC104H1 (as taught before 1990); any CSC course.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC108H1    Introduction to Computer Programming[36L/12T/12P]

Structure of computers; the computing environment. Programming in a language such as Python. Program structure: elementary data types,statements, control flow, functions, classes, objects, methods, fields. Lists; 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.

Note: You may not take this course after or concurrently with CSC148H1, but you may take CSC148H1 after CSC108H1.

Exclusion: CSC107H1, CSC120H1, CSC139H1, CSC148H1, CSC149H1, CSC150H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC120H1    Computer Science for the Sciences[24L/12P]

An introduction to computer science for students in other sciences, with an emphasis on gaining practical skills. Introduction to programming; web programming; database design; software tools; examples and exercises taken from the sciences. At the end of this course you will be able to develop computer tools for scientific applications, such as the structuring and analysis of experimental data. Practical (P) sections consist of supervised work in the computer laboratory. No programming experience is necessary. Students who wish to do more can progress directly to CSC150H1.

Exclusion: any CSC course.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC148H1    Introduction to Computer Science[24L/12T/12P]

Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion. This course assumes programming experience in a language such as Python, C++, or Java, as provided by CSC108H1. Students who already have this background may consult the Computer Science Undergraduate Office for advice about skipping CSC108H1. Practical (P) sections consist of supervised work in the computing laboratory. These sections are offered when facilities are available, and attendance is required.

Note: Students may go to their college to drop down from CSC148H1 to CSC108H1. See above for the drop down deadline.

Prerequisite: CSC108H1; MHF4U(advanced functions)/MCV4U(calculus and vectors)
Exclusion: CSC139H1, CSC149H1, CSC150H1; you may not take this course after taking more than two CSC courses at the 200-level or higher.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC150H1    Accelerated Introduction to Computer Science[36L/12T/12P]

An accelerated course covering object-oriented topics from CSC108H1 (classes, objects, methods and fields, and program design), as well as all the material of CSC148H1. Suitable for students with a solid programming background in Turing, C, Scheme, or a similar language, who are willing to accept a heavier workload than in CSC108H1 and CSC148H1.

Note: Students may go to their college to drop down from CSC150H1 to CSC108H1. See above for the drop down deadline.

Prerequisite: MHF4U(advanced functions)/MCV4U(calculus and vectors). Students should thoroughly understand arrays, searching, sorting, functions/procedures/subprograms, arguments and parameters, and modular design.
Exclusion: CSC107H1, CSC108H1, CSC139H1, CSC148H1, CSC149H1; you may not take this course after taking more than two CSC courses at the 200-level or higher.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC165H1    Mathematical Expression and Reasoning for Computer Science[36L/24T]

Introduction to abstraction and rigour. Informal introduction to logical notation and reasoning. Understanding, using and developing precise expressions of mathematical ideas, including definitions and theorems. Structuring proofs to improve presentation and comprehension. General problem-solving techniques. Diagonalization, the Halting Problem, and some reductions. Unified approaches to programming and theoretical problems.

Prerequisite: MHF4U (advanced functions)/MCV4U (calculus and vectors)
Corequisite: CSC108H1/CSC148H1/CSC150H1
Exclusion: CSC236H1, CSC238H1, CSC240H1; MAT102H5 (University of Toronto Mississauga); You may not take this course after taking more than two CSC courses at the 200-level or higher
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

200-level courses


CSC200Y1    Economic and Social Networks: Models and Applications[48L/24T]

The course will provide an informal, but rigourous treatment of a variety of topics, introducing students to the relevant background in graph theory, social network formation, incentives and game theory, and providing exposure to the relevant mathematical and computational tools required to analyze relevant phenomenon. Topics may include: structural analysis of social networks, matching markets, trading networks, web search, information cascades, prediction markets, and online advertising, among others.

Prerequisite: one OAC/U math
Distribution Requirement Status: This is a Science course
Breadth Requirement: Society and its Institutions (3) + The Physical and Mathematical Universes (5)

CSC207H1    Software Design[24L/12T]

An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, build management, unit testing, refactoring, design patterns, advanced IDE usage, regular expressions, markup languages, parsing using finite state machines, and reflection.  Representation of floating-point numbers and introduction to numerical computation.

Prerequisite: CSC148H1/CSC150H1; CGPA 1.5/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC209H1    Software Tools and Systems Programming[24L/12T]

Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the operating system when programs are executed. Core topics: creating and using software tools, pipes and filters, file processing, shell programming, processes, system calls, signals, basic network programming.

Prerequisite: CSC207H1/enrolment in Bioinformatics and Computational Biology (BCB) subject POSt; CGPA 1.5/enrolment in a CSC subject POSt.
Exclusion: CSC372H1, CSC408H1, CSC369H1, CSC468H1, CSC469H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC236H1    Introduction to the Theory of Computation[24L/12T]

The application of logic and proof techniques to Computer Science. Mathematical induction; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions (including the Master Theorem); introduction to automata and formal languages.

Prerequisite: CSC148H1/CSC150H1, CSC165H1/(CSC148H1 as given before Fall 2003); CGPA 1.5/enrolment in a CSC subject POSt.
Exclusion: CSC238H1, CSC240H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC240H1    Enriched Introduction to the Theory of Computation[24L/12T]

The rigorous application of logic and proof techniques to Computer Science. Propositional and predicate logic; mathematical induction and other basic proof techniques; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions (including the Master Theorem); introduction to automata and formal languages. This course covers the same topics as CSC236H1, together with selected material from CSC165H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs and theoretical analysis. Certain topics briefly mentioned in CSC165H1 or CSC236H1 may be covered in more detail in this course, and some additional topics may also be covered.

Note: Students may go to their college to drop down from CSC240H1 to CSC165H1 (or to CSC236H1 if you have already passed CSC165H1). See above for the drop down deadline.

Prerequisite: OAC Calculus and one of Algebra & Geometry or Finite Mathematics OR U Advanced Functions and Introductory Calculus, and one of U Geometry and Discrete Mathematics or U Mathematics of Data Management, with high grades; CGPA 1.5/enrolment in a CSC subject POSt
Corequisite: CSC148H1/CSC150H1
Exclusion: CSC236H1, CSC238H1.
Recommended Preparation: first term of MAT137Y1/MAT157Y1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC258H1    Computer Organization[24L/12T/13P]

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.

Prerequisite: CSC148H1/CSC150H1, CSC165H1/CSC240H1/(CSC148H1 as given before Fall 2003); CGPA 1.5/enrolment in a CSC subject POSt.
Exclusion: CSC257H1 as given before 1985.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC260H1    Introduction to Scientific, Symbolic, and Graphical Computation[24L/12T]

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.

Prerequisite: CSC108H1/computing experience, as from a good high school programming course; CGPA 1.5/enrolment in a CSC subject POSt.
Corequisite: (MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT223H1/MAT240H1
Exclusion: CSC160H1 as taught in Spring 1992; after taking CSC270H1/CSC263H1/CSC265H1 and any 300-/400-level CSC course, you may not take CSC260H1 without Departmental permission in writing.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC263H1    Data Structures and Analysis[24L/12T]

Algorithm analysis: worst-case, average-case, and amortized complexity. Expected worst-case complexity, randomized quicksort and selection.  Standard abstract data types, such as graphs, dictionaries, priority queues, and disjoint sets. A variety of data structures for implementing these abstract data types, such as balanced search trees, hashing, heaps, and disjoint forests. Design and comparison of data structures. Introduction to lower bounds.

Prerequisite: CSC207H1, CSC236H1/CSC238H1/CSC240H1; STA247H1/STA255H1/STA257H1; CGPA 1.5/enrolment in a CSC subject POSt.
Exclusion: CSC265H1, CSC378H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC265H1    Enriched Data Structures and Analysis[24L/12T]

This course covers the same topics as CSC263H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs, theoretical analysis, and creative problem-solving. Certain topics briefly mentioned in CSC263H1 may be covered in more detail in this course, and some additional topics may also be covered. Students without the exact course prerequisites but with a strong mathematical background are encouraged to consult the Department about the possibility of taking this course.

Note: Students may go to their college to drop down from CSC265H1 to CSC263H1. See above for the drop down deadline.

Prerequisite: CSC240H1 or an A- in CSC236H1; CGPA 1.5/enrolment in a CSC subject POSt.
Corequisite: STA247H1/STA255H1/STA257H1.
Exclusion: CSC263H1, CSC378H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC290H1    Communication Skills for Computer Scientists[36L]

Targeted instruction and significant practice in the communications required for careers in computer science. The curriculum covers written, oral, and interpersonal communication. Students will hand in short pieces of writing each week, will make oral presentations several times in the semester, and will work together in simulated project meetings and other realistic scenarios of pair and small group interaction.

Prerequisite: enrolment in a CSC subject POSt in year 2, 3, or 4.
Distribution Requirement Status: This is a Science course
Breadth Requirement: None

300-level courses


CSC300H1    Computers and Society[24L/12T]

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.

Prerequisite: Any half-course on computing; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: PSCD03H (University of Toronto Scarborough)
Distribution Requirement Status: This is a Science course
Breadth Requirement: Society and its Institutions (3)

CSC301H1    Introduction to Software Engineering[24L/12T]

An introduction to agile development methods appropriate for medium-sized teams and rapidly-moving projects. Basic software development infrastructure; requirements elicitation and tracking; estimation and prioritization; teamwork skills; basic UML; design patterns and refactoring; security, discussion of ethical issues, and professional responsibility.

Prerequisite: CSC209H1, CSC263H1/CSC265H1/CSC378H1; CGPA 3.0/enrolment in a CSC subject POSt
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC302H1    Engineering Large Software Systems[24L/12T]

An introduction to the theory and practice of large-scale software system design, development, and deployment. Project management; advanced UML; reverse engineering; requirements inspection; verification and validation; software architecture; performance modeling and analysis.

Prerequisite: CSC301H1; CGPA 3.0/enrolment in a CSC subject POSt
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC309H1    Programming on the Web[24L/12T]

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.

Prerequisite: CSC209H1, CSC343H1/CSC228H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC310H1    Information Theory[24L/12T]

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.

Prerequisite: CSC148H1/CSC150H1/CSC260H1; STA247H1/STA255H1/STA257H1/STA107H1; (MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT223H1/MAT240H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC318H1    The Design of Interactive Computational Media[24L/12T]

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 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: CSC300H1 provides useful background for work in CSC318H1, so if you plan to take CSC300H1 then you should do it before CSC318H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: None

CSC320H1    Introduction to Visual Computing[24L/12P]

A unified introduction to image synthesis and image analysis aimed at students with an interest in computer graphics, computer vision or the visual arts. Focus on three major topics: (1) visual computing principles - computational and mathematical methods for creating, capturing, analyzing and manipulating digital photographs (raster algorithms, image acquisition, basic image processing, image warping, anti-aliasing); (2) digital special effects - applying these principles to create special effects found in movies and commercials; (3) visual programming - using C/C++ and OpenGL to create graphical user interfaces for synthesizing and manipulating photographs.

Prerequisite: CSC209H1/(CSC207H1,proficiency in C or C++); (MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT223H1/MAT240H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: None

CSC321H1    Introduction to Neural Networks and Machine Learning[24L/12P]

The first half of the course is about supervised learning for regression and classification problems and will include the perceptron learning procedure, backpropagation, and methods for ensuring good generalisation to new data. The second half of the course is about unsupervised learning methods that discover hidden causes and will include K-means, the EM algorithm, Boltzmann machines, and deep belief nets.

Prerequisite: (MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT223H1/MAT240H1; STA247H1/STA255H1/STA257H1; CGPA 3.0/enrolment in a CSC subject POSt
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC324H1    Principles of Programming Languages[24L/12T]

Programming principles common in modern languages; details of commonly used paradigms. The structure and meaning of code. Scope, control flow, datatypes and parameter passing. Two non-procedural, non-object-oriented programming paradigms: functional programming (illustrated by languages such as Lisp/Scheme, ML or Haskell) and logic programming (typically illustrated in Prolog).

Prerequisite: CSC207H1, CSC236H1/CSC238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC248H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC330H1    Logical Specifications[24L/12T]

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. Satisfiability. Applications, including information systems, program verification, artificial intelligence, software engineering. Computational tools, including Prolog. Other logics.

Prerequisite: CSC236H1/CSC238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC230H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC336H1    Numerical Methods[24L/12T]

The study of computational methods for solving problems in linear algebra, non-linear equations, approximation, and integration. The aim is to give students a basic understanding of both floating-point arithmetic and the implementation of algorithms used to solve numerical problems, as well as a familiarity with current numerical computing environments.

Prerequisite: CSC148H1/CSC150H1; MAT133Y1(70%)/(MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT223H1/MAT240H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC350H1, CSC351H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC343H1    Introduction to Databases[24L/12T]

Introduction to database management systems. The relational data model. Relational algebra. Querying and updating databases: the query language SQL. Application programming with SQL. Integrity constraints, normal forms, and database design. Elements of database system technology: query processing, transaction management.

Prerequisite: CSC165H1/CSC240H1/(MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1; CSC207H1; CGPA 3.0/enrolment in a CSC subject POSt. Prerequisite for Engineering students only: ECE345H1/CSC190H1/CSC192H1
Exclusion: CSC434H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC350H1    Numerical Algebra and Optimization[24L/12T]

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.

Prerequisite: CSC148H1/CSC150H1; MAT223H1/MAT240H1, MAT235Y1/MAT237Y1/MAT257Y1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC336H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC351H1    Numerical Approximation, Integration and Ordinary Differential Equations[24L/12T]

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.

Prerequisite: CSC350H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC336H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC358H1    Principles of Computer Networks[24L/12T]

Introduction to computer networks with an emphasis on fundamental principles. Basic understanding of computer networks and network protocols. Topics include network hardware and software, routing, addressing, congestion control, reliable data transfer, performance analysis, local area networks, and TCP/IP.

Prerequisite: CSC209H1, CSC258H1, CSC263H1/ CSC265H1/CSC378H1, STA247H1/STA255H1/STA257H1/ECO227Y1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC369H1    Operating Systems[24L/12T]

Principles of operating systems. The operating system as a control program and as a resource allocator. The concept of a process and concurrency problems: synchronization, mutual exclusion, deadlock. Additional topics include memory management, file systems, process scheduling, threads, and protection.

Prerequisite: CSC258H1, CSC209H1, CSC207H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC468H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC372H1    Microprocessor Software[24L/12T/36P]

Development of embedded software for control and monitoring. Techniques for efficient running of multiple real-time, critical multiple processes and for device control. Methods of working on small systems, such as microcontroller-based systems. Projects use microprocessors to control equipment with feedback from sensors. Design, implementation and testing of software using a language such as C.

Prerequisite: CSC209H1; CSC258H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC373H1    Algorithm Design, Analysis & Complexity[36L/12T]

Standard algorithm design techniques: divide-and-conquer, greedy strategies, dynamic programming, linear programming, randomization, network flows, approximation algorithms.  Brief introduction to NP-completeness: polynomial time reductions, examples of various NP-complete problems, self-reducibility. Students will be expected to show good design principles and adequate skills at reasoning about the correctness and complexity of algorithms.

Note: Although the courses CSC373H1 and CSC363H1 can be taken in any order, we recommend that CSC373H1 be taken first.

Prerequisite: CSC263H1/CSC265H1/CSC378H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC375H1, CSC364H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC375H1    Enriched Algorithm Design, Analysis, and Complexity[24L/12T]

This course covers the same topics as CSC373H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs, theoretical analysis, and creative problem-solving. Certain topics briefly mentioned in CSC373H1 may be covered in more detail in this course, and some additional topics may also be covered. Students without the exact course prerequisites but with a strong mathematical background are encouraged to consult the Department about the possibility of taking this course.

NOTE: Students may go to their college to drop down from CSC375H1 to CSC373H1. See above for the drop down deadline.

Prerequisite: CSC265H1 or an A-in CSC263H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC373H1, CSC364H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC384H1    Introduction to Artificial Intelligence[24L/12T]

Theories and algorithms that capture (or approximate) some of the core elements of computational intelligence. Topics include: search; logical representations and reasoning, classical automated planning, representing and reasoning with uncertainty, learning, decision making (planning) under uncertainty. Assignments provide practical experience, both theory and programming, of the core topics.

Prerequisite: CSC324H1; STA247H1/STA255H1/STA257H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC484H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

ECE385H1    Microprocessor Systems[24L/36P]

A hardware-oriented course dealing with microprocessor and embedded systems. Microprocessor structures, memory and cache structures, input/output techniques, peripheral device control, hardware system and programming considerations. Laboratory experiments provide "hands-on" experience.

Prerequisite: CSC258H1; CSC209H1/proficiency in C; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

400-level courses


CSC401H1/CSC2511H1    Natural Language Computing[24L/12T]

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: CSC207H1/CSC209H1/CSC228H1; STA247H1/STA255H1/STA257H1; CGPA 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: MAT223H1/MAT240H1 is strongly recommended.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computational Linguistics (4)

CSC404H1    Introduction to Video Game Design[24L/12T]

Concepts and techniques for the design and development of electronic games. History, social issues and story elements. The business of game development and game promotion. Software engineering, artificial intelligence and graphics elements. Level and model design. Audio elements. Practical assignments leading to team implementation of a complete game.

Prerequisite: One of CSC301H1, CSC318H1, CSC384H1, CSC418H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: Creative and Cultural Representations (1)

CSC410H1(/CSC2125H1)    Software Testing and Verification[24L/12T]

Concepts and state of the art techniques in quality assessment for software engineering; quality attributes; formal specifications and their analysis; testing, verification and validation.

Prerequisite: CSC207H1, CSC236H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended Preparation: CSC330H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC411H1    Machine Learning and Data Mining[24L/12T]

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.

Prerequisite: CSC263H1/CSC265H1; (MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, STA247H1/STA255H1/STA257H1, STA248H1/STA250H1/STA261H1; CGPA 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: CSC336H1/CSC350H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC412H1/CSC2506H1    Probabilistic Learning and Reasoning[24L/12T]

An introduction to probability as a means of representing and reasoning with uncertain knowledge. Qualitative and quantitative specification of probability distributions using probabilistic graphical models. Algorithms for inference and probabilistic reasoning with graphical models. Statistical approaches and algorithms for learning probability models from empirical data. Applications of these models in artificial intelligence and machine learning.

Prerequisite: CSC411H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Machine Learning (12)

CSC418H1/CSC2504H1    Computer Graphics[24L/12T]

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: CSC336H1/CSC350H1/CSC351H1/CSC363H1/CSC364H1/CSC365H1/CSC373H1/CSC375H1/CSC378H1/CSC463H1, (MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, CSC209H1/proficiency in C or C++ ; CGPA 3.0/enrolment in a CSC subject POSt. Prerequisite for Engineering students only: ECE345H1 or ECE352H1
Recommended Preparation: MAT237Y1, MAT244H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Graphics (5)

CSC420H1    Introduction to Image Understanding[24L/12P]

Introduction to basic concepts in computer vision. Extraction of image features at multiple scales. Robust estimation of model parameters. Multiview geometry and reconstruction. Image motion estimation and tracking. Object recognition. Topics in scene understanding as time permits.

Prerequisite: CSC260H1/CSC263H1/CSC265H1,(MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT223H1/MAT240H1; CGPA 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: CSC320H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC428H1/CSC2514H1    Human-Computer Interaction[24L/12T]

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: CSC318H1; STA247H1/STA255H1/STA257H1,(STA248H1/STA250H1/STA261H1)/(PSY201H1, PSY202H1)/(SOC202H1, SOC300H1); CSC209H1/proficiency C++ or Java; CGPA 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: A course in PSY; CSC209H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Human-Computer Interaction (10)

CSC438H1/CSC2404H1    Computability and Logic[24L/12T]

Computable functions, Churchs thesis, unsolvable problems, recursively enumerable sets. Predicate calculus, including the completeness, compactness, and Lowenheim-Skolem theorems. Formal theories and the Gdel Incompleteness Theorem.

Prerequisite: (CSC363H1/CSC463H1)/CSC364H1/CSC365H1/CSC373H1/CSC375H1/MAT247H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: MAT309H1; PHL344H1.
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Complexity and Cryptography (2)

CSC443H1    Database System Technology[24L/12T]

Implementation of database management systems. Storage management, indexing, query processing, concurrency control, transaction management. Database systems on parallel and distributed architectures. Modern database applications: data mining, data warehousing, OLAP, data on the web. Object-oriented and object-relational databases.

Prerequisite: CSC343H1/CSC434H1, CSC369H1/CSC468H1, CSC364H1/CSC373H1/CSC375H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC446H1/CSC2310H1    Computational Methods for Partial Differential Equations[24L/12T]

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.

Prerequisite: CSC351H1/(CSC336H1 (75%))/equivalent mathematical background; MAT237Y1/MAT257Y1; APM346H1/APM351Y1/(MAT244H1/MAT267H1 and exposure to PDEs); CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Scientific Computation and Numerical Analysis (13)

CSC448H1/CSC2405H1    Formal Languages and Automata[24L/12T]

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: CSC236H1/CSC238H1/CSC240H1, CSC363H1/CSC364H1/CSC365H1/CSC463H1/MAT247H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Complexity and Cryptography (2)

CSC454H1/CSC2527H1    The Business of Software[24L/12T]

The software and internet industries; principles of operation for successful software enterprises; innovation and entrepreneurship; software business definition and planning; business models, market and product planning; product development, marketing, sales, and and support; financial management and financing of high-technology ventures; management, leadership, and partnerships. Students will all write business plans in teams.

Prerequisite: Five CSC half-courses at the 200-level or higher; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Human-Computer Interaction (10)

CSC456H1/CSC2306H1    High-Performance Scientific Computing[24L/12T]

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: CSC350H1/(CSC336H1 (75%))/equivalent mathematical background; CSC209H1/proficiency in C, C++ or Fortran; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Scientific Computation and Numerical Analysis (13)

CSC458H1/CSC2209H1    Computer Networking Systems[24L/12T]

Computer networks with an emphasis on systems programming of real networks and applications. An overview of networking basics; layering, packet switching fundamentals, socket programming, protocols, congestion control, routing, network security, wireless networks, multimedia, web 2.0, and online social networks.

Prerequisite: CSC209H1, CSC258H1, CSC263H1/CSC265H1/CSC378H1, STA247H1/STA255H1/STA257H1/ECO227Y1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Building Software and Hardware Artifacts (3)
Research Area: Computer Systems and Networks (6)

CSC463H1    Computational Complexity and Computability[24L/12P]

Introduction to the theory of computability: Turing machines and other models of computation, Church’s thesis, computable and noncomputable functions, recursive and recursively enumerable sets, many-one reductions. Introduction to complexity theory: P, NP, polynomial time reducibility, NP-completeness, self-reducibility, space complexity (L, NL, PSPACE and completeness for those classes), hierarchy theorems and provably intractable problems.

Prerequisite: CSC236H1/CSC238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt
Exclusion: CSC363H1, CSC364H1, CSC365H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC465H1/CSC2104H1    Formal Methods in Software Design[24L/12T]

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: CSC236H1/CSC238H1/CSC240H1/MAT309H1; CGPA 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: (CSC363H1/CSC463H1)/CSC364H1/CSC365H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Software Engineering (14)

CSC469H1/CSC2208H1    Operating Systems Design and Implementation[24L/12T]

An in-depth exploration of the major components of operating systems with an emphasis on the techniques, algorithms, and structures used to implement these components in modern systems. Project-based study of process management, scheduling, memory management, file systems, and networking is used to build insight into the intricacies of a large concurrent system.

Prerequisite: CSC369H1; CGPA 3.0/enrolment in a CSC subject POSt.
Exclusion: CSC468H1.
Distribution Requirement Status: This is a Science course Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Building Software and Hardware Artifacts (3)
Research Area: Computer Systems and Networks (6)

CSC485H1/CSC2501H1    Computational Linguistics[24L/12T]

Computational linguistics and the understanding of language by computer. Possible topics include: augmented context-free grammars; chart parsing, ,statistical parsing; semantics and semantic interpretation; ambiguity resolution techniques; discourse structure and reference resolution. Emphasis on statistical learning methods for lexical, syntactic and semantic knowledge.

Prerequisite: STA247H1/STA255H1/STA257H1 or familiarity with basic probability theory; CSC209H1 or proficiency in C++, Java, or Python; CGPA 3.0/enrolment in a CSC subject POSt. Suggested preparation: CSC324H1/CSC330H1/CSC384H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Computational Linguistics (4)

CSC486H1/CSC2502H1    Knowledge Representation and Reasoning[24L/12T]

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: CSC384H1, (CSC363H1/CSC463H1)/CSC365H1/CSC373H1/CSC375H1; CGPA 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: CSC330H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Knowledge Representation (11)

CSC488H1/CSC2107H1    Compilers and Interpreters[24L/12T]

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: CSC258H1, CSC324H1, CSC263H1/CSC265H1/CSC378H1; CGPA 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: Proficiency in C such as from CSC209H1.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)
Methodology: Building Software and Hardware Artifacts (3)
Research Area: Software Engineering (14)

ECE489H1    Compilers II[24L/36P]

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 ECE540H1, Faculty of Applied Science and Engineering.)

Prerequisite: CSC236H1/CSC238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt.
Recommended Preparation: ECE385H1, proficiency in C.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC490H1    Capstone Design Project[48L]

This half-course gives students experience solving a substantial problem that may span several areas of Computer Science. Students will define the scope of the problem, develop a solution plan, produce a working implementation, and present their work using written, oral, and (if suitable) video reports. Class time will focus on the project, but may include some lectures. The class will be small and highly interactive. Project themes change each year. At the time of printing, the theme for 2010/11 had not been chosen but see www.cs.utoronto.ca/~CSC490H1 for information about this year’s topic themes and required preparation.

Prerequisite: Permission of the instructor; CGPA 3.0/enrolment in a CSC subject POSt. Consult the 2010-2011 Registration Handbook and Timetable for course enrolment procedures.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC491H1    Capstone Design Project[48L]

This half-course gives students experience solving a substantial problem that may span several areas of Computer Science. Students will define the scope of the problem, develop a solution plan, produce a working implementation, and present their work using written, oral, and (if suitable) video reports. Class time will focus on the project, but may include some lectures. The class will be small and highly interactive. Project themes change each year. At the time of printing, the theme FOR 2010/11 had not been chosen but see www.cs.utoronto.ca/~CSC490H1 for information about this year’s topic themes and required preparation. (Not offered in 2011-2012)

Prerequisite: Permission of the instructor; CGPA 3.0/enrolment in a CSC subject POSt. Consult the 2010-2011 Registration Handbook and Timetable for course enrolment procedures.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC494H1    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 3.00 (2.50 for students in a CSC Program), and permission of the Associate Chair, Undergraduate Studies. Consult the 2011-2012 Registration Handbook and Timetable for course enrolment procedures.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

CSC495H1    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 3.00 (2.50 for students in a CSC Program), and permission of the Associate Chair, Undergraduate Studies. Consult the 2011-2012 Registration Handbook and Timetable for course enrolment procedures.
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Deleted courses


CSC107H1    Self-paced Introduction to Computer Programming [26L/13T]

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. Not offered every year.

Note: You may not take this course after or concurrently with CSC148H1, but you may take CSC148H1 after CSC107H1.

Exclusion: CSC108H1, 139H1, CSC148H1, 149H1, CSC150H1.
Prerequisite: Grade 12 U/OAC mathematics.
Distribution Requirement Status: This is a Science course

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: CSC148H1; CGPA 2.0
Distribution Requirement Status: This is a Science course

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.

Prerequisite: CSC107H1/108H1 and two OACs from Calculus, Algebra & Geometry, Finite Mathematics, CGPA 2.5/enrolment in a CSC subject POSt
Distribution Requirement Status: This is a Science course

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.

Exclusion: MAT246Y1/MAT309H1
Prerequisite: CSC148H1; CGPA 2.0
Recommended preparation: MAT137Y1
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

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: CSC148H1; CGPA 2.0
Corequisite: MAT133Y1/MAT135Y1/MAT137Y1/MAT157Y1
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

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: CSC228H1; CGPA 2.0
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

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: CSC260H1/CSC270H1, STA250H1/STA255H1/STA257H1; CGPA 2.0
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

CSC363H1    Computational Complexity and Computability [26L/13T]

Introduction to the theory of computability: Turing machines, Church's thesis, computable and noncomputable functions, recursive and recursively enumerable sets, reducibility. Introduction to complexity theory: models of computation, P, NP, polynomial time reducibility, NP-completeness, heuristics and approximation algorithms, lower bounds on the complexity of problems.

Exclusion: CSC364H1, CSC365H1
Prerequisite: CSC236H1/CSC238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

CSC364H1    Computational Complexity and Computability [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: CSC238H1/(MAT246Y1/MAT247H1 plus some knowledge of programming); CGPA 2.0
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

CSC365H1    Enriched Computational Complexity and Computability [26L/13T]

This course covers the same topics as CSC363H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs, theoretical analysis, and creative problem-solving. Certain topics briefly mentioned in CSC363H1 may be covered in more detail in this course, and some additional topics may also be covered.

Footnote: Permission will typically be given only to students with an A or A+ in CSC236H1/238H1. Those with CSC240H1 do not require permission.

Exclusion: CSC363H1, CSC364H1
Prerequisite: CSC240H1/(CSC236H1/CSC238H1 with permission of the instructor - see footnote)/(CSC148H1 with permission of the instructor and strong mathematical background, such as with a specialist in Mathematics); CGPA 3.0/enrolment in a CSC subject POSt.
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

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: CSC270H1, CSC238H1/MAT246Y1/MAT247H1, STA107H1/STA257H1; CGPA 2.0
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

CSC407H1/CSC2103H1    Software Architecture and Design [26L/13T]

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.

Prerequisite: CSC340H1, CSC378H1
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)
Methodology: Building Software and Hardware Artifacts (3)
Research Area: Software Engineering (14)

CSC408H1/CSC2105H1    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.

Prerequisite: CSC340H1, CSC378H1; CGPA 2.0
Recommended preparation: proficiency in C; some of CSC209H1/CSC300H1/CSC318H1/CSC407H1
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)
Methodology: Building Software and Hardware Artifacts (3)
Research Area: Software Engineering (14)

CSC434H1/CSC2509H1    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: CSC228H1, CSC378H1; CGPA 2.0
Recommended preparation: proficiency in C
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)
Methodology: Building Software and Hardware Artifacts (3)
Research Area: Software Engineering (14)

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.

Prerequisite: CSC350H1 and CSC351H1, or equivalent experience
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

CSC468H1/CSC2204H1    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: CSC258H1, CSC209H1/(knowledge of concurrent programming); CGPA 2.0
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)

CSC478H1/CSC2412H1    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: MAT301H1/(MAT247H1 with preparation in ring theory); CGPA 2.0
Recommended preparation: CSC364H1
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Algorithms and Discrete Math (1)

CSC487H1/CSC2503H1    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: CSC384H1, MAT235Y1/MAT237Y1/MAT257Y1; CGPA 2.0
Recommended preparation: CSC364H1
Distribution Requirement Status: This is a Science course
Requirement: The Physical and Mathematical Universes (5)
Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Vision (7)

Graduate Computer Science courses


CSC2106 Requirements Engineering

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Software Engineering (14)

CSC2108 Automated Verification

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Software Engineering (14)

CSC2125 Topics in Software Engineering

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Software Engineering (14)

CSC2130 Empirical Research Methods in Software Engineering

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Software Engineering (14)

CSC2203 Packet Switch and Network Architectures

MSc/PhD level course (accessible to advanced undergraduates) on high- performance packet switching computer networks. The course introduces the theory and practice of designing packet switches, such as Internet routers, and Ethernet switches. It consists of two parts which will be presented in an interleaved fashion. The first part will develop basic tools from queuing theory, stochastic analysis, and algorithms. the second part of the course will focus on packet switch architectures: the evolution of switches and routers, and practical issues in this area. We will also focus on benefits and challenges of software defined networks, network virtualization, and data center networking.

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Computer Systems and Networks (6)

CSC2206 System Modeling and Analysis

The emphasis of the course is on models for systems with uncertainty. We study the properties of various models and discuss how they can be applied to analyze system performance. Concepts covered include Poisson, renewal, and Markov processes.

Prerequisite: Solid knowledge of basic probability theory.
Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Systems and Networks (6)

CSC2221 Introduction to the Theory of Distributed Computing

We study a number of fundamental problems that arise in distributed systems, such as mutual exclusion, consensus, reliable broadcast and multicast, and the management of replicated data.

Recommended: CSC2204H1 or equivalent.
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Distributed Computing (9)

CSC2226 Topics in Verification

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Software Engineering (14)

CSC2227 Topics in the Design & Implementation of Operating Systems

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Computer Systems and Networks (6)

CSC2228 Topics in Mobile and Pervasive Computing

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Computer Systems and Networks (6)

CSC2229 Topics in Computer Networks

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Computer Systems and Networks (6)

CSC2231 Special Topics in Computer Systems

Previous Offerings:

  Advanced Topics in Mobile and Cloud Computing: The emergence of mobile and cloud computing are two of the most important technological developments of the last few years. By shifting the hardware and staffing costs of managing computational infrastructure to third parties such as Google, Microsoft, or Amazon, cloud computing has made it possible for small organizations and individuals to deploy world-scale services; all they need to pay is the marginal cost of actual resource usage. At the same time, the deployment of 3G and 4G networks, the rapid adoption of feature-rich smartphones, and the growing integration of computation into consumer products such as cars and home appliances, have brought mobile and pervasive computing into the mainstream. This course will provide an overview of research areas in these two fields and their intersection.

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Computer Systems and Networks (6)

CSC2232 Topics in Computer System Performance and Reliability

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Computer Systems and Networks (6)

CSC2302 Numerical Solution of Initial Value Problems for Ordinary Differential Equations

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Scientific Computation and Numerical Analysis (13)

CSC2305 Numerical Methods for Optimization Problems

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Scientific Computation and Numerical Analysis (13)

CSC2307 Numerical Software

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Scientific Computation and Numerical Analysis (13)

CSC2321 Matrix Calculations

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Scientific Computation and Numerical Analysis (13)

CSC2322 Boundary Value Problems for Ordinary Differential Equations

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Scientific Computation and Numerical Analysis (13)

CSC2326 Topics in Numerical Analysis

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Scientific Computation and Numerical Analysis (13)

CSC2401 Introduction to Computational Complexity

Computational Complexity studies the amount of resources (time, memory, random bits, etc) needed to solve computational problems. It is of central importance in Computer Science, having spawned the notion of NP-completeness, modern cryptography, and important algorithms.

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Complexity and Cryptography (2)

CSC2410 Introduction to Graph Theory

This course covers many of the most important aspects of graph theory, including the development and analysis of graph theoretic algorithms. The focus of the course will be on the underlying mathematical theory. Topics include shortest paths, network flows, connectivity, matchings, planar graphs and graph colouring. Additional topics may be covered, depending on the year and instructor.

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Algorithms and Discrete Math (1)

CSC2411 Linear Programming and Combinatorial Optimization

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Algorithms and Discrete Math (1)

CSC2413 Combinatorial Methods and Designs

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Algorithms and Discrete Math (1)

CSC2414 Topics in Applied Discrete Mathematics

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Algorithms and Discrete Math (1)

CSC2415 Advanced Topics in Distributed Computing

Previous Offerings:

  Impossibility Results for Distributed Computing: This course will describe the main techniques for proving lower bounds and uncomputability results in the theory of distributed computing, including indistinguishability, information theory arguments, covering arguments, valency arguments, and simulations. Examples of proofs that apply these techniques to various problems in a variety of different models will be presented. Students will get practice applying these techniques to homework problems and will be expected to present a lower bound from the literature to the class.

Prerequisite: CSC2221 or instructor's permission.
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Distributed Computing (9)

CSC2416 Machine Learning Theory

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Complexity and Cryptography (2)

CSC2417 Algorithms for Genome Sequence Analysis

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Computational Biology (3)

CSC2418 Computational Structural Biology

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Computational Biology (3)

CSC2419 Topics in Cryptography

This course will cover advanced topics in cryptography such as zero knowledge, secure multi-party computation, homomorphic encryption, various advanced notions of encryption such as chosen cipher-text secure encryption and functional encryption, as well as new and emerging notions of privacy such as differential privacy. The set of topics covered in the course is expected to include foundational material as well as questions at the forefront of current cryptographic research.

Prerequisite: CSC2426 Foundations of Cryptography is highly recommended, but not required.
Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Complexity and Cryptography (2)

CSC2420 Algorithm Design, Analysis and Theory

This course is a graduate level introduction to the design and analysis of algorithms. The course is a foundational course, appropriate for students in computer science, computer engineering, and mathematics. We will begin with topics normally discussed in undergraduate courses such as CSC373H1 (Algorithm Design, Analysis & Complexity) or CSC375H1 (Enriched Algorithm Design, Analysis, and Complexity) using some less standard examples and also discussing some precise models for standard algorithmic paradigms such as greedy, local search and dynamic programming algorithms. Other possible topics include: randomized algorithms and Markov chains, LP and SDP relaxations, primal dual algorithms, online primal dual algorithms, multi commodity flows, embedding techniques, data stream algorithms, sub-linear time algorithms, multiplicative weights algorithms, spectral methods; we will discuss applications to areas such as mechanism design, social networks, wireless networks, and information retrieval.

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Algorithms and Discrete Math (1)

CSC2421 Topics in Algorithms

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Algorithms and Discrete Math (1)

CSC2426 Fundamentals of Cryptography

A fundamental goal of cryptography is for two parties who share a secret key to be able to have a secure conversation (or session) over a completely insecure internet. In this course we will: 1) rigorously define the meaning of "secure session"; 2) rigorously define primitives such as pseudo-random generators, secure digital signature schemes and secure hash families, and show how they can be used to achieve secure sessions; 3) rigorously define secure public-key encryption primitives, and show how they can be used to help parties create a shared, secret, session key; 4) present methods (including number-theoretic methods) for constructing all these secure cryptographic primitives from standard computational complexity assumptions (since without such an assumption we are unable to prove any of these primitives secure!). This course contains the basic mathematical background of cryptography, and should be useful and interesting to computer scientists, mathematicians, and electrical engineers.

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Complexity and Cryptography (2)

CSC2427 Topics in Graph Theory

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Algorithms and Discrete Math (1)

CSC2429 Topics in Computational Complexity

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Complexity and Cryptography (2)

CSC2431 Topics in computational Molecular Biology

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Computational Biology (3)

CSC2505 Geometric Representations for Computer Graphics

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Graphics (5)

CSC2508 Advanced Database Management Systems

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Database Systems (8)

CSC2510 Topics in Information Systems

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Database Systems (8)

CSC2512 Advanced Propositional Reasoning

This will be a course on algorithms and techniques for solving various propositional reasoning problems. We will look at the classical problem of satisfiability, including a discussion of modern SAT solvers. Constraint Satisfaction problems (CSPs) and SAT-Modulo Theories are closely related to SAT. They also involve solving satisfiability problems, but problem structure can be expressed (in constraints or in a special theory) and exploited with special purpose inference algorithms. Moving beyond satisfiability we will also look at the following more advanced (and difficult) problems: 1. #SAT, which is the problem of counting the number of satisfying models. Weighted model counting is equivalent to exact probabilistic inference over finite domains. 2. MaxSAT, which is the problem of finding an optimal satisfying model where the optimization criteria is the number of so called "soft-clauses" satisfied. The weighted version of MaxSAT can encode many standard optimization problems including the most probable explanation problem for finite probability spaces. 3. QBF, which is the problem of determining the truth or falsity of a quantified Boolean formula. This is a PSPACE complete problem. The course will involve a mixture of the theoretical (e.g., algorithms and their complexity) and the practical (e.g., modeling, empirical evaluation of algorithms, implementations).

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Knowledge Representation (11)

CSC2515 Introduction to Machine Learning

Basic methods for classification, regression, clustering, time series modeling, and novelty detection. These algorithms will include K-nearest neighbours, naïve Bayes, decision trees, support vector machines, logistic regression, generalized additive models, K-means, mixtures of Gaussians, hidden markov models, principal components analysis, factor analysis and independent components analysis. Methods of fitting models including stochastic gradient and conjugate gradient methods, the Expectation Maximization algorithm and Markov Chain Monte Carlo. The fundamental problem of overfitting and techniques for dealing with it such as capacity control and model averaging. All the basic algorithms will be implemented in Matlab, but prior knowledge of Matlab is not required.

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Machine Learning (12)

CSC2517 Discrete Mathematical Models of Sentence Structure

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Computational Linguistics (4)

CSC2518 Spoken Language Processing

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Computational Linguistics (4)

CSC2519 Natural Language Semantics

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Computational Linguistics (4)

CSC2520 The Computational Lexicon

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computational Linguistics (4)

CSC2521 Topics in Computer Graphics

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Graphics (5)

CSC2522 Advanced Image Synthesis

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Graphics (5)

CSC2523 Object Modeling and Recognition

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Computer Vision (7)

CSC2524 Topics in Interactive Computing

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Human-Computer Interaction (10)

CSC2525 Research Topics in Data Management

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Database Systems (8)

CSC2526 HCI: Topics in Ubiquitous Computing

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Human-Computer Interaction (10)

CSC2528 Advanced Computational Linguistics

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computational Linguistics (4)

CSC2529 Computer Animation

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Graphics (5)

CSC2530 Computer Vision for Advanced Digital Photography

This course takes a unified approach to computer graphics and computer vision. Vision (image analysis) and graphics (image synthesis) are studied formally as mutually converse problems. The course explores physics-based models and associated computational methods for tackling these problems. The emphasis will be on modeling and estimating the shapes and motions of rigid and deformable objects using mathematical physics, variational methods, and numerical simulation with finite-difference, finite-element, and multiscale algorithms. Graphics topics will include the modeling and animation of flexible objects in simulated physical worlds, force driven interaction, and constraint satisfaction methods. Vision topics will include regularization theory, visible-surface representations, active models, and multisensory fusion. Finally, the course will investigate some advanced applications in artificial life, including the modeling of humans and other autonomous agents in virtual worlds.

Prerequisite : CSC2503H1, CSC2504H1, or permission of instructor.
Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Graphics (5)

CSC2531 Advanced Topics in Data Management Systems

The course will be covering topics in database design on modern hardware, including: multicore- and cache-aware database algorithms; non-traditional database engine architectures; hardware acceleration for database operations (e.g. FPGA and GPU); implications of flash and other new storage technologies.

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Database Systems (8)

CSC2532 Dynamical Systems and Artificial Intelligence

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Knowledge Representation (11)

CSC2533 Foundations of Knowledge Representation

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Knowledge Representation (11)

CSC2534 Decision Making Under Uncertainty

This course covers the broad topic of decision making under uncertainty. The course introduces a number of models for one-shot, sequential, and multi-agent decision making widely used in artificial intelligence and computer science, and analyzes computational representations and techniques for their solution. Applications to problems in artificial intelligence, ranging from health-care to auction design, will be used to illustrate these models. Topics may include: introductory decision theory, multiattribute utility, preference elicitation, fully- and partially-observable Markov decision processes, reinforcement learning, introductory game theory, mechanism design, and social choice and voting.

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Interdisciplinary Studies in Computer Science (15)

CSC2535 Advanced Machine Learning

This course will cover many different machine learning algorithms for many different types of model with an emphasis on probabilistic models of high-dimensional data. It will include variational, and sampling-based methods for learning directed graphical models; approximate methods for learning undirected graphical models and other energy-based models; methods for learning deep multi-layer neural networks; methods for learning conditional random fields; Gaussian processes; ways of dealing with missing data; non-linear methods for dimensionality reduction and data visualization. Applications to many different types of data will be described including: image modeling; object recognition; speech recognition; image and document retrieval and topic modeling; modeling the sequential structure of text; modeling motion capture data.

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Machine Learning (12)

CSC2536 Computer Supported Cooperative Work

Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: Human-Computer Interaction (10)

CSC2539 Topics in Computer Vision

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computer Vision (7)

CSC2540 Cognitive Linguistics

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Computational Linguistics (4)

CSC2541 Topics in Machine Learning

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Machine Learning (12)

CSC2542 Topics in Knowledge Representation and Reasoning

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: Knowledge Representation (11)

CSC2543 Research Topics in XML Retrieval

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Database Systems (8)

CSC2544 Web Searching and Mining

Methodology: Building Software and Hardware Artifacts (3)
Research Area: Database Systems (8)

CSC2545 Kernel Methods and Support Vector Machines

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: Machine Learning (12)

CSC2601 Topics in Analysis and Computation in Discrete Models

Methodology: Analysis and Computation in Discrete Models (1)
Research Area: None

CSC2602 Topics in Analysis and Computation in Continuous Models

Methodology: Analysis and Computation in Continuous Models (2)
Research Area: None

CSC2603 Topics In Building Software and Hardware Artifacts

Methodology: Building Software and Hardware Artifacts (3)
Research Area: None

CSC2604 Topics in Human-Centred and Interdisciplinary Computing
Methodology: Human-Centered and Interdisciplinary Computing (4)
Research Area: None

CSC2699 Special Reading Course in Computer Science
Methodology: None
Research Area: None


Undergraduate Computer Engineering courses


100-level courses


ECE101H1 Seminar Course: Introduction to Electrical and Computer Engineering

This is a seminar series that will introduce first year students to the wealth of subjects within the field of Electrical and Computer Engineering. Instructors will be drawn from the various research groups within the Department. This course will be offered on a credit/no-credit basis. Credit will not be given to students who attend fewer than 70% of the seminars. Students who receive no credit for the course must re-take it in their 2F session. Students who have not received credit for this course at the end of their 2F session will not be permitted to register in session 2S.

ECE110H1 Electrical Fundamentals

A simplified overview of the physics of electricity and magnetism: Coulomb’s law, Gauss’ law, Ampere’s law, Faraday’s law. Other topics include: physics of capacitors, resistors and inductors; an introduction to circuit analysis (resistive circuits, nodal and mesh analysis) and network theorems; natural and forced response of RL and RC circuits; sinusoidal steady-state analysis and power in AC circuits.

ECE159H1 Fundamentals of Electric Circuits

Topics include: DC linear circuit elements; DC linear circuit analysis; Kirchhoff’s Laws and superposition; Thevenin and Norton equivalents; nodal analysis; operational amplifier; transient response of linear circuits; sinusoidal steady state analysis; phasors; power in AC circuits; frequency response; and resonance phenomena.

CSC180H1 Introduction to Computer Programming

The first of two courses that introduces students to programming and computational thinking, and prepares them for additional study across a breadth of programming fields. Students will learn to use the Python programming language to design and implement computational solutions to problems drawn from their 1F courses, with specific focus on algorithms, data structures, problem decomposition, and the use of programming paradigms appropriate to the problems being solved. Specifically, this course aims to have students work with and understand profiling and runtime analysis, searching and sorting algorithms, and the use of recursion.

CSC190H1 Computer Algorithms and Data Structures

The second of two courses that introduces students to programming and computational thinking, and prepares them for additional study across a breadth of programming fields. Students will learn to use the C programming language to design and implement computational solutions to problems drawn from their 1S courses, and will explore new programming paradigms, algorithm design techniques, and data structures appropriate to these challenges. Specifically, this course aims to have students work with and understand linked lists, stacks, queues, trees, heaps, hashing, pointers (including function pointers) and arrays, data types and bit operations, and dynamic memory management.

CSC192H1 Computer Programming, Algorithms, Data Structures and Languages

An accelerated and combined version of CSC180H1 and CSC190H1 intended for students who have some previous programming experience (e.g. one year programming in Turing, Pascal, Java, C or similar languages.) Students will focus on problem decomposition and the use of programming paradigms appropriate to the problems being solved. Computational thinking is introduced as a means to solve problems through a focus on algorithm, data, and models of computation. Students will design and implement computational solutions to problems drawn from their 1F courses, and will explore new programming paradigms appropriate to these challenges. More advanced forms of computational thinking suitable for understanding and solving a wider variety of problems are introduced.


200-level courses


ECE212H1 Circuit Analysis

Nodal and loop analysis and network theorems. Natural and forced response of RL, RC, and RLC circuits. Sinusoidal steady-state analysis. Frequency response; resonance phenomena; poles and zeros; applications of the Laplace transform.

ECE216H1 Signals and Systems

Fundamental discrete- and continuous-time signals, definition and properties of systems, linearity and time invariance, convolution, impulse response, differential and difference equations, Fourier analysis, sampling and aliasing, applications in communications.

ECE221H1 Electric and Magnetic Fields

The fundamental laws of electromagnetics are covered, including Coulomb's law, Gauss' law, Poisson's and Laplace's equations, the Biot- Savart law, Ampere's law, Faraday's law, and Maxwell's equations. Vector calculus is applied to determine the relationship between the electric and magnetic fields and their sources (charges and currents). The interaction of the fields with material media will be discussed, including resistance, polarization in dielectrics, magnetization in magnetic materials, properties of magnetic materials and boundary conditions. Other topics include: electric and magnetic forces, the electric potential, capacitance and inductance, electric and magnetic energy, magnetic circuits, and boundary-value problems.

ECE231H1 Introductory Electronics

An introduction to electronic circuits using operational amplifiers, diodes, bipolar junction transistors and field-effect transistors.

ECE241H1 Digital Systems

Digital logic circuit design with substantial hands-on laboratory work. Algebraic and truth table representation of logic functions and variables. Optimizations of combinational logic, using “don’t cares.” Multi-level logic optimization. Transistor-level design of logic gates; propagation delay and timing of gates and circuits. The Verilog hardware description language. Memory in digital circuits, including latches, clocked flip-flops, and Static Random Access Memory. Set-up and hold times of sequential logic. Finite state machines - design and implementation. Binary number representation, hardware addition and multiplication. Tri-state gates, and multiplexors. There is a major lab component using Complex Programmable Logic Devices (CPLDs) and Field-Programmable Gate Arrays (FPGAs) and associated computer-aided design software.

ECE243H1 Computer Organization

Basic computer structure. Design of central processing unit. Hardwired and microprogrammed control. Input-output and the use of interrupts. Arithmetic circuits. Assembly language programming. Main memory organization. Peripherals and interfacing. Microprocessors. System design considerations. The laboratory will consist of experiments involving logic systems and microprocessors. Design activity constitutes a major portion of laboratory work.

ECE244H1 Programming Fundamentals

Provides a foundation in programming using an object-oriented programming language. Topics include: classes and objects, inheritance, exception handling, basic data structures (lists, tree, etc.), big-O complexity analysis, and testing and debugging. The laboratory assignments emphasize the use of object-oriented programming constructs in the design and implementation of reasonably large programs.

ECE253H1 Digital and Computer Systems

Digital system design principles. Logic circuits, logic synthesis. Registers, arithmetic circuits, counters, finite state machines, and programmable logic devices. Verilog hardware description language. Computer structure, machine language instruction execution and sequencing, addressing techniques. Processors, input/output techniques, and memory hierarchy. The laboratory work consists of exercises involving the design of logic circuits, and microprocessor systems. Modern computer-aided design tools and FPGA technology are used. Design aspects constitute a major portion of laboratory work.

Exclusion: ECE341H1 and ECE370H1

ECE259H1 Electromagnetism

The fundamental laws of electromagnetics are covered; including Coulomb's law, Gauss' law, Poisson's and Laplace's equations, the Biot- Savart’s law, Ampere's law, Faraday's law, and Maxwell's equations. Vector calculus is applied to determine the relationship between the electric and magnetic fields and their sources (charges and currents). Field-matter interaction is studied, including polarization in dielectric materials and magnetization in magnetic materials. Circuit elements such as the resistor, capacitor and inductor are introduced from an electromagnetic point of view. Other topics include: electric and magnetic forces, the electric potential, capacitance and inductance, electric and magnetic energy, magnetic circuits, boundary-value problems and transmission-lines.

ECE297H1 Communication and Design

An introduction to electrical and computer engineering design processes illustrated by the design and implementation of software systems. Creative development with appropriate organizational and reporting and recording activities, both oral and written, is emphasized. The general design cycle and pragmatic strategies used in the creation of small designs and larger systems are presented. These methods are implemented in practical lab work done in teams. Oral skills are developed in seminars and team discussions, by learning to handle questions, and by making formal presentations. Written skills are developed in reports related to the lecture and lab activities.


300-level courses


ECE302H1 Probability and Applications

Events, sample space, axioms of probability. Discrete and continuous random variables, distribution and density functions. Bernoulli trials, Binomial, geometric, Poisson, exponential and Gaussian distributions. Expectation, moments, characteristic function, correlation coefficient. Functions of random variables. Random vectors, joint distributions, transformations. Applications will be chosen from communication theory, estimation and hypothesis testing, and other areas of electrical engineering.

Prerequisite: MAT290H1 and MAT291H1 and ECE216H1

Exclusion: STA286H1

ECE311H1 Dynamic Systems and Control

An introduction to dynamic systems and their control. Differential equation models of mechanical, electrical, and electromechanical systems. State variable form. Linearization of nonlinear models and transfer functions. Use of Laplace transform to solve ordinary differential equations. Conversion of models from state variable form to transfer function representation and vice versa. Block diagrams and their manipulation. Time response: transient analysis and performance measures. Properties of feedback control systems. Steady state tracking: the notion of system type. The concept of stability of feedback systems, Routh-Hurwitz stability criterion. Frequency response and stability in the frequency domain. Root locus. Bode and Nyquist plots and their use in feedback control design.

Prerequisite: MAT290H1 and MAT291H1 and ECE216H1

ECE314H1 Fundamentals of Electrical Energy Systems

Introduction to 3-phase systems, single line diagrams and complex power flow. Energy conversion via switch-mode power electronic circuits: DC/DC converters, DC/AC converters. Energy conversions via magnetic devices: Faraday's law for time varying fields, characterization of hysteresis and eddy current losses in magnetic materials, modelling of magnetic circuits, transformer and inductor modelling and design. Introduction to electromechanical energy conversion: Lorentz Force, concepts of energy, co-energy, forces between ferromagnetic materials carrying flux, simple magnetic actuators.

Prerequisite: ECE212H1 and ECE221H1 and ECE231H1

Exclusion: ECE315H1

ECE316H1 Communication Systems

An introductory course in analog and digital communication systems. Analog and digital signals. Signal representation and Fourier transforms; energy and power spectral densities; bandwidth. Distortionless analog communication; amplitude, frequency and phase modulation systems; frequency division multiplexing. Sampling, quantization and pulse code modulation (PCM). Baseband digital communication; intersymbol interference (ISI); Nyquist’s ISI criterion; eye diagrams. Passband digital communications; amplitude-, phase- and frequency-shift keying; signal constellations. Performance analysis of analog modulation schemes in the presence of noise. Performance analysis of PCM in noise.

Prerequisite: (MAT290H1 and ECE216H1) or (MAT389H1 and ECE355H1)

ECE318H1 Fundamentals of Optics

Geometric Optics: Spherical surfaces, lenses and mirrors, optical imaging systems, matrix method, and aberrations. Polarization: Polarizer and polarizations, anisotropic materials, dichroism, birefringence, index ellipsoid, waveplates, optical activity, Faraday effect. Interference: superposition of waves, longitudinal and transverse coherence, Young’s double-slit experiment, Michelson and Fabry-Perot interferometer, thin- films. Diffraction and Fourier Optics: diffraction theory, single and double slits, diffraction gratings, spatial filtering, basic optical signal processing.

(Background preparation in ECE320H1 Fields and Waves, or ECE357H1 Electromagnetic Fields, is strongly recommended.)

Prerequisite: ECE221H1

ECE320H1 Fields and Waves

Voltage and current waves on a general transmission line, reflections from the load and source, transients on the line, and Smith’s chart. Maxwell’s equations, electric and magnetic fields wave equations, boundary conditions, plane wave propagation, reflection and transmission at boundaries, constitutive relations, dispersion, polarization; Poynting vector; waveguides.

Prerequisite: ECE221H1

CSC326H1 Programming Languages

Study of programming styles and paradigms. Included are object- oriented scripting functional and logic-based approaches. Languages that support these programming styles will be introduced. Languages treated include Python, Lisp or Scheme and Prolog.

Exclusion: CSC324H1

ECE330H1 Semiconductor and Device Physics

Wave and quantum mechanics, the Schrodinger equation, quantum wells and density of states. Quantum statistics, solid-state bonding and crystal structure. Electron waves, dispersion relation inside periodic media, Fermi level and energy bands. Physical understanding of semiconductors at equilibrium, intrinsic and extrinsic semiconductors and excess carriers.

Prerequisite: ECE221H1 and ECE231H1. (Backround preparation in ECE320H1 Fields and Waves is strongly recommended).

Exclusion: MSE235H1

ECE331H1 Analog Electronics

Transistor amplifiers, including: differential and multistage amplifiers, integrated circuit biasing techniques, output stage design and IC amplifier building blocks. Frequency response of amplifiers at low, medium and high frequencies. Feedback amplifier analysis. Stability and compensation techniques for amplifiers using negative feedback.

Prerequisite: ECE212H1 and ECE231H1.

ECE334H1 Digital Electronics

Digital design techniques for integrated circuits. The emphasis will be on the design of logic gates at the transistor level. A number of different logic families will be described, but CMOS will be emphasized. Review of: device modeling, IC processing, and Spice simulation, simplified layout rules, inverter noise margins, transient response, and power dissipation, traditional CMOS logic design, transmission gates, RC timing approximations, input-output circuits, latches and flipflops, counters and adders, decoders and muxes, dynamic gates, SRAMs, DRAMs, andEEPROMs.

Prerequisite: ECE241H1 and ECE231H1 or ECE253H1 and ECE360H1

ECE335H1 Introduction to Electronic Devices

Electrical behaviour of semiconductor structures and devices. Metal- semiconductor contacts; pn junctions, diodes, photodetectors, LED’s; bipolar junction transistors, Ebers-Moll and hybrid-pi models; field effect transistors, MOSFET, JFET/MESFET structures and models; thyristors and semiconductor lasers.

Prerequisite: MAT291H1 and ECE221H1 and ECE231H1

Exclusion: MSE235H1

ECE342H1 Computer Hardware

Arithmetic circuits, cubical representation of logic functions, digital system design, timing analysis, design of asynchronous circuits, testing of logic circuits.

Prerequisite: ECE241H1 and ECE243H1

ECE344H1 Operating Systems

Operating system structures, concurrency, synchronization, deadlock, CPU scheduling, memory management, file systems. The laboratory exercises will require implementation of part of an operating system.

Prerequisite: ECE244H1 and ECE243H1

Exclusion: ECE353H1

ECE345H1 Algorithms and Data Structures

Design and analysis of algorithms and data structures that are essential to engineers in every aspect of the computer hardware and software industry. Review of background material (recurrences, asymptotics, summations, trees and graphs). Sorting, search trees and balanced search trees, amortized analysis, hash functions, dynamic programming, greedy algorithms, basic graph algorithms, minimum spanning trees, shortest paths, introduction to NP completeness.

Prerequisite: ECE244H1

ECE349H1 Introduction to Energy Systems

Established and emerging sources of electrical energy: hydroelectric, thermal, wind, and solar. Three-phase AC systems and complex power. Mechanisms for electrical-electrical energy conversion: power electronic systems for DC-DC conversion, single-phase DC-AC and three-phase DC-AC conversion, transformers for single-phase and three-phase AC- AC conversion. Electro-mechanical energy conversion via the synchronous machine. Fundamentals of AC electrical energy networks: frequency regulation, voltage regulation, and protection.

ECE350H1 Semiconductor Electronic Devices

An explanation of the basic operation, design and limitations of semiconductor electronic devices, such as diodes and transistors. The topics covered include: electrons in semiconductors, semiconductors in equilibrium, transport of carriers, p-n diodes, metal-semiconductor contacts, bipolar junction transistors, metal-oxide-semiconductor (MOS) capacitors, and MOS field effect transistors. In addition, optoelectronic devices (e.g. photodiodes, light emitting diodes and lasers), semiconductor heterostructures, nanostructures and transistor scaling will be discussed.

ECE352H1 Computer Organization

A continuation of some of the topics introduced in ECE253F, Digital and Computer Systems. Synchronous and asynchronous sequential circuits, pipelining, integer and floating-point arithmetic, RISC processors.

ECE353H1 Systems Software

Operating system structure, processes, threads, synchronization, CPU scheduling, memory management, file systems, input/output, multiple processor systems, virtualization, protection, and security. The laboratory exercises will require implementation of part of an operating system.

ECE354H1 Electronic Circuits

A course on analog and digital electronic circuits. Topics include single- stage amplifiers, current mirrors, cascode amplifiers and differential pairs. Amplifier frequencey response, feedback and stability are also covered. Digital CMOS logic circuits are introduced.

ECE355H1 Signal Analysis and Communication

An introduction to continuous-time and discrete-time signals and systems. Topics include characterization of linear time-invariant systems, Fourier analysis, linear filtering, sampling of continuous-time signals, and modulation techniques for communication systems.

ECE356H1 Linear Systems and Control

An introduction to dynamic systems and their control. Differential equation models of physical systems using transfer functions and state space models. Linearization. Initial and input response. Stability theory. Principle of feedback. Internal Model Principle. Frequencey response. Nyquist stability. Loop shaping theory. Computer aided design using MATLAB and Simulink.

Prerequisite: ECE355H1

ECE357H1 Electromagnetic Fields

An introduction to transmission line theory: voltage and current waves, characteristic impedance, reflections from the load and source, transients on the line, Smith’s chart, impedance matching. Fundamentals of electromagnetic theory: Maxwell’s equations, Helmholtz’s theorem, time retarded scalar and vector potentials, gauges, boundary conditions, electric and magnetic fields wave equations and their solutions in lossless and lossy medium. Plane wave propagation, reflection and transmission at boundaries. Constitutive relations and dispersion. Radiating dipole and waveguides.

ECE358H1 Foundations of Computing

Fundamentals of algorithm design and computational complexity, including: analysis of algorithms, graph algorithms, greedy algorithms, divide-and-conquer, dynamic programming, network flow, approximation algorithms, the theory of NP-completeness, and various NP-complete problems.

ECE359H1 Energy Conversion

Introduction to power processing, linear regulators, switch-mode power concepts, DC-DC converters, Voltage and current source inverters, coupled magnetic circuit concepts (properties of magnetic materials, Faraday’s Law for time varying fields, characterization and modeling of hysterisis and eddy current losses in magnetic materials, magnetic circuit model, topological dual principle), inductor circuit model, multi-winding transformer circuit model, multiwinding switch mode converters; flyback, forward and push-pull converters. Laboratories cover electrical energy conversion, magnetic devices, complex power flow and introduce appropriate measurement techniques.

ECE360H1 Electronics

An introduction to electronics. Basic electronic circuits: introductory frequency analysis, operational amplifiers, diodes, bipolar junction transistors, field-effect transistors, small-signal analysis, frequency response of single-stage circuits.

ECE361H1 Computer Networks I

Layered network architectures; overview of TCP/IP protocol suite. Introduction to sockets; introduction to application layer protocols. Peer- to-Peer Protocols: ARQ; TCP reliable stream service; flow control. Data Link Controls: Framing; PPP; HDLC. Medium access control and LANs: Aloha; Ethernet; Wireless LANs; Bridges. Packet Switching: Datagram and virtual circuit switching; Shortest path algorithms; Distance vector and link state algorithms.

Prerequisite: STA286H1 or ECE302H1

Corequisite: ECE302H1. (Students must take the co-requisite, ECE302H1 in the same term as ECE361H, OR in a term before taking ECE361H1.)

ECE362H1 Digital Signal Processing

Review of sampling and discrete-time signals in one or more dimensions; linear shift-invariant systems; the Z-transform; the discrete-time Fourier transform; the discrete Fourier transform and computationally efficient implementations (fast Fourier transforms); general orthogonal representations; wavelet bases; discrete-time filters: finite and infinite impulse response filters; fixed-point implementations and finite word- length effects; multidimensional filters and multidimensional signal processing. Illustrative applications are drawn from audio and biomedical signal processing, communication systems, and image and video signal processing.

Exclusion: ECE431H1


400-level courses


ECE410H1 Control Systems

State space analysis of linear systems, the matrix exponential, linearization of nonlinear systems. Structural properties of linear systems: stability, controllability, observability, stabilizability, and detectability. Pole assignment using state feedback, state estimation using observers, full- order and reduced-order observer design, design of feedback compensators using the separation principle, control design for tracking. Control design based on optimization, linear quadratic optimal control, the algebraic Riccati equation. Laboratory experiments include computer- aided design using MATLAB and the control of an inverted pendulum on a cart.

Prerequisite: ECE311H1

Exclusion: ECE557H1

ECE411H1 Real-Time Computer Control

Digital Control analysis and design by state-space methods. Introduction to scheduling of control tasks using fixed-priority protocols. Labs include control design using MATLAB and Simulink, and computer control of the inverted pendulum using a PC with real-time software.

Prerequisite: ECE311H1 or ECE356H1

ECE413H1 Energy Systems and Distributed Generation

Three-phase systems; steady-state transmission line model; symmetrical three-phase faults; power system stability; symmetrical components; unsymmetrical faults and fault current calculation; distribution network; equivalent steady-state model of voltage-sourced converter; distributed energy resources (DR); distributed energy storage; interface between DR and power system.

Prerequisite: ECE314H1 or ECE315H1 or ECE349H1 or ECE359H1

ECE417H1 Digital Communication

Basic concepts of digital communication. Baseband data transmission, intersymbol interference, Nyquist pulse shaping, equalization, line coding, multi-path fading, diversity. Binary and M-ary modulation schemes, synchronization. Signal space concepts, optimum receivers, coherent and noncoherent detectors. Information theory, source encoding, error control coding, block and convolutional codes.

Prerequisite: ECE302H1 and ECE316H1, or STA286H1

ECE419H1 Distributed Systems

Design issues in distributed systems: heterogeneity, security, transparency, concurrency, fault-tolerance; networking principles; request-reply protocol; remote procedure calls; distributed objects; middleware architectures; CORBA; security and authentication protocols; distributed file systems; name services; global states in distributed systems; coordination and agreement; transactions and concurrency control; distributed transactions; replication.

Prerequisite: ECE344H1 or ECE353H1

ECE422H1 Radio and Microwave Wireless Systems

Analysis and design of systems employing radio waves, covering both the underlying electromagnetics and the overall system performance aspects such as signal-to-noise ratios. Transmission/reception phenomena include: electromagnetic wave radiation and polarization; elementary and linear dipoles; directivity, gain, efficiency; integrated, phased-array and aperture antennas; beam-steering; Friis transmission formulas. Propagation phenomena include: diffraction and wave propagation over obstacles; multipath propagation in urban environments; atmospheric and ionospheric effects. Receiver design aspects include: receiver figures of merit, noise in cascaded systems, noise figure, and noise temperature. System examples are: fixed wireless access; mobile and personal communication systems; wireless cellular concepts; satellite communications; radar; radiometric receivers; GPS.

Prerequisite: ECE320H1 or ECE357H1

ECE431H1 Digital Signal Processing

An introductory course in digital filtering and applications. Introduction to real-world signal processing. Review of sampling and quantization of signals. Introduction to the discrete Fourier transform and its properties. The fast Fourier transform. Fourier analysis of signals using the discrete Fourier transform. Structures for discrete-time systems. Design and realization of digital filters: finite and infinite impulse response filters. DSP applications to communications: decimators and interpolators, estimation, equalization. DSP applications to multimedia: DCT and video coding.

ECE442H1 Introduction to Micro- and Nano-Fabrication Technologies

An introduction to the fundamentals of micro- and nano-fabrication processes with emphasis on cleanroom practices. The physical principles of optical lithography, electron-beam lithography, alternative nanolithography techniques, and thin film deposition and metrology methods. The physical and chemical processes of wet and dry etching. Cleanroom concepts and safety protocols. Sequential micro-fabrication processes involved in the manufacture of microelectronic and photonic devices. Imaging and characterization of micro- and nano-structures. Examples of practical existing and emerging micro- and nano-devices. Limited enrollment.

Prerequisite: ECE335H1 or ECE350H1

CSC444H1 Software Engineering I

The software development process. Software requirements and specifications. Software design techniques. Techniques for developing large software systems; CASE tools and software development environments. Software testing, documentation and maintenance.

Prerequisite: ECE344H1 or ECE353H1

ECE445H1 Neural Bioelectricity

Generation, transmission and the significance of bioelectricity in neural networks of the brain. Topics covered include: (i) Basic features of neural systems. (ii) Ionic transport mechanisms in cellular membranes. (iii) Propagation of electricity in neural cables. (iv) Extracellular electric fields. (v) Neural networks, neuroplasticity and biological clocks. (vi) Learning and memory in artificial neural networks. Laboratory experiences nclude: (a) Biological measurements of body surface potentials (EEG and EMG). (b) Experiments on computer models of generation and propagation of neuronal electrical activities. (c) Investigation of learning in artificial neural networks.

ECE446H1 Sensory Communication

Physical acoustics, acoustic measurements, electroacoustic transducers, and physiological acoustics. Speech processing, speech recognition algorithms and signal processing by the auditory system. Engineering aspects of acoustic design. Electrical models of acoustic systems. Noise, noise-induced hearing loss, and noise control. Introduction to vision and other modalities. Musical and psychoacoustics.

ECE448H1 Biocomputation

New technologies in molecular and cellular biology have allowed the collection of unprecedented amounts of biological data ranging from sequences to protein structures to gene expression. The need to synthesize knowledge from this abundant data is driving the convergence of the biological and computer sciences. This course will introduce the fundamental concepts and challenges in molecular biology and the computational and statistical approaches applied to model and address them. Course topics include basic concepts in molecular and structural biology, sequence-based algorithms (such as pairwise and multiple sequence alignment, statistical models), structure-based algorithms (such as energy models, homology modeling, threading), and systems biology algorithms (such as hierarchal and neural network clustering).

ECE450H1 Software Engineering II

A continuation of the material introduced in Software Engineering I, focusing on pragmatic structuring principles and design methodologies. Formal specification and validation of software systems. Object-oriented design and design patterns. Testing, metrics and maintenance of software systems. Reverse engineering. Safety-critical and real-time software systems. Emphasis is given to the design and development of large, complex software systems. A session project is normally required.

Prerequisite: CSC444H1

ECE451H1 VLSI Systems and Design

An introduction to the design, verification and layout of VLSI circuits for complex digital systems. The focus is on CMOS technology, using custom and standard cell-based design flows, and covering both design and computer-aided design techniques. Topics covered include deep sub-micron design, clocking techniques, physical design, sub-system design, power, testing, simulation, placement/routing, synthesis, and test generation. The course has a major project component in which students design and produce a layout for a small microprocessor chip.

ECE454H1 Computer Systems Programming

Fundamental techniques for programming computer systems, with an emphasis on obtaining good performance. Topics covered include: how to measure and understand program and execution and behaviour, how to get the most out of an optimizing compiler, how memory is allocated and managed, and how to exploit caches and the memory hierarchy. Furthermore, current trends in multicore, multithreaded and data parallel hardware, and how to exploit parallelism in their programs will be covered.

ECE461H1 Internetworking

This course will cover the fundamentals of protocols for packet switching networks with emphasis on Internet type of networks including the following topics: the Internetworking concept and architectural model; data link layer (Ethernet and PPP); service interface; Internet addresses; address resolution protocol; Internet protocol (connectionless datagram delivery); routing IP datagrams; Internet control message protocol (error and control messages); subnet and supernet address extensions; ping program; traceroute program; user datagram protocol; reliable stream transport service (TCP); the socket interface; routing (GGP, EGP, IP, OSPF, HELLO); Internet multicasting; domain name system; applications such as HTTP, electronic mail, and SNMP; Internet security and firewall design; Ipv6, RSVP, flows, and ISIP.

Prerequisite: ECE361H1

ECE462H1 Multimedia Systems

Topics in the engineering area of multimedia systems with particular emphasis on the theory, design features, performance, complexity analysis, optimization and application of multimedia engineering technologies. Topics include sound/audio, image and video characterization, compression, source entropy and hybrid coding, transform coding, wavelet-based coding, motion estimation, JPEG coding, digital video coding, MPEG-1/2 coding, content-based processing, and MPEG-7.

ECE463H1 Electric Drives

Electro-mechanical mechanisms for force and torque production in rotating machines. DC machine theory and DC machine dynamics, synchronous machines and their dynamics, stepper motors. Introduction to space vectors and vector control of AC machines. Steady state and variable speed operation of the induction machine via V/f control.

Prerequisite: ECE314H1 or ECE315H1 or ECE349H1 or ECE359H1

ECE464H1 Wireless Communication

The radio medium, radio communication system examples. Link budget: cable losses, propagation loss, antenna gains. Basic concepts of propagation: path loss, multi-path propagation and fading. Raleigh and Rician fading models, Doppler shift, delay spread, coherence time and coherence bandwidth of the channel. Analog modulation schemes and their bandwidths. Digital modulation schemes and their bandwidths and bit rates: BPSK, QPSK, MSK, GMSK. Basic concepts of speech coding. Error correction coding, interleaving, and multiple access frame structure. The physical layer description of the AMPS, IS-54, and GSM cellular systems. The cellular concept: frequency re-use, re-use cluster concept. Channel allocation. Cellular system architecture for AMPS, IS-54, and GSM. Hand-offs and transmitter power control. Cellular traffic, call blocking, concept of Erlangs. Basic ideas in spread spectrum modulation, spreading codes, bit error probability. Orthogonal and non-orthogonal CDMA Basic concepts in CDMA networks.

Prerequisite: ECE302H1 and ECE316H1, or STA286H1

ECE466H1 Computer Networks II

Traffic modeling; network calculus; traffic classification; traffic regulation: shaping, filtering, policing, leaky bucket; queueing systems; scheduling; quality of service: Diffserv and IntServ/RSVP; multi-protocol label switching; call admission control / congestion control; switching; pricing; optical networks.

Prerequisite: ECE361H1

CSC467H1 Compilers and Interpreters

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: ECE352H1

ECE469H1 Optical Communications and Networks

This course provides an introduction to optical communication systems and networks at the system and functional level. Applications range from telecommunication networks (short to long haul) to computing networks (chip-to-chip, on chip communications, optical backplanes). Basic principles of optical transmission and associated components used for transmission of light and optical networks; system design tools for optical links; multi-service system requirements; optical network design tools (routing and wavelength assignment), network management and survivability.

Exclusion: ECE425H1 or ECE467H1

ECE470H1 Robot Modeling and Control

Classification of robot manipulators, kinematic modeling, forward and inverse kinematics, velocity kinematics, path planning, point-to-point trajectory planning, dynamic modeling, Euler-Langrange equations, inverse dynamics, joint control, computed torque control, passivity-based control, feedback linearization.

Prerequisite: ECE311H1 or ECE356H1

Exclusion: AER525H1

ECE472H1 Engineering Economic Analysis & Entrepreneurship

The economic evaluation and justification of engineering projects and investment proposals are discussed. Cost concepts; financial and cost accounting; depreciation; the time value of money and compound interest; inflation; capital budgeting; equity, bond and loan financing; income tax and after-tax cash flow; measures of economic merit in the private sector; sensitivity and risk analysis. Applications: evaluations of competing engineering project proposals; replacement analysis; economic life of assets; lease versus buy decisions; break-even analysis; decision tree analysis. Entrepreneurship and the Canadian business environment will be discussed.

ECE488H1 Entrepreneurship and Business for Engineers

A complete introduction to small business formation, management and wealth creation. Topics include: the nature of the Entrepreneur and the Canadian business environment; business idea search and Business Plan construction; Buying a business, franchising, taking over a family business; Market research and sources of data; Marketing strategies promotion, pricing, advertising, electronic channels and costing; The sales process and management, distribution channels and global marketing; Accounting, financing and analysis, sources of funding, and financial controls; The people dimension: management styles, recruiting and hiring, legal issues in employment and Human Resources; Legal forms of organization and business formation, taxation, intellectual property protection; the e-Business world and how businesses participate; Managing the business: location and equipping the business, suppliers and purchasing, credit, ethical dealing; Exiting the business and succession, selling out. A full Business Plan will be developed by each student and the top submissions will be entered into a Business Plan competition with significant cash prices for the winners. Examples will be drawn from real business situations including practicing entrepreneurs making presentations and class visits during the term. (Identical courses are offered: MSE488H1, MIE488H1, CHE488H1 and CIV488H1.)

Exclusion: APS234 and APS432

ECE496Y1 Design Project

A full year capstone design project course intended to give students an opportunity to apply their technical knowledge and communication skills. Working in teams under the direct supervision of a faculty member, students develop a design project of their choice from an initial concept to a final working prototype. In the first session, a project proposal is submitted early on, followed by a project requirements specification. A design review meeting is then held to review the proposed design. Lectures given during the first session will develop expertise in various areas related to design and technical communication. In the second session, the teams present their work in a number of ways, including an oral presentation, a poster presentation, a final demonstration at the Design Fair, an individual progress report, and a group final report. Course deliverables are evaluated by both the team’s supervisor and one of several course administrators.


500-level courses


ECE510H1 Introduction to Lighting Systems

An introduction to the physics of lighting systems (e.g. plasma physics, radiation spectrum, physics of light-emitting diodes) and the corresponding power electronic driver circuits (ballasts). The operating principles and the science behind different types of lamps are covered. These include incandescent, fluorescent, low and high pressure sodium, mercury, metal halide lamps and LED lighting systems. The designs and technical challenges of the electronic ballasts for each type of lighting source are discussed. Issues related to lighting regulations, layout, delivery, efficiency, control and the economic and environmental assessment of current lighting systems are briefly addressed.

Prerequisite: ECE314H1 or ECE315H1 or ECE349H1 or ECE359H1

ECE512H1 Analog Signal Processing Circuits

An overview of analog signal processing in both continuous-time and discrete-time. The design of analog filters including transfer function approximation using Matlab and implementation using active-RC, transconductance-C, and switched-capacitor circuits. Other topics include oversampling and noise in analog circuits.

Prerequisite: ECE331H1 or ECE354H1

ECE516H1 Intelligent Image Processing

This course provides the student with the fundamental knowledge needed in the rapidly growing field of Personal Cybernetics, including “Wearable Computing”, “Personal Technologies”, “Human Computer Interaction (HCI)," "Mobile Multimedia," "Augmented Reality," "Mediated Reality," CyborgLogging," and the merging of communications devices such as portable telephones with computational and imaging devices. The focus is on fundamental aspects and new inventions for human- computer interaction. Topics to be covered include: mediated reality, Personal Safety Devices, lifelong personal video capture, the Eye Tap principle, collinearity criterion, comparametric equations, photoquantigraphic imaging, lightvector spaces, anti-homomorphic imaging, application of personal imaging to the visual arts, and algebraic projective geometry.

ECE521H1 Inference Algorithms

Squared error and the Gaussian probability distribution. Maximum likelihood estimation. Logistic regression, neural networks, radial basis function networks. Occam’s razor, validation, bagging, Bayesian techniques. Auto-encoders, principal components analysis, clustering. The EM algorithm. Matrix factorization. Markov models, hidden Markov models, the forward-backward algorithm, the Viterbi algorithm. Factor graphs, Bayesian networks, variable elimination, the sum-product algorithm, the max-product algorithm. Estimating graphical models. Applications to image classification, image processing, object tracking, speech recognition, telecommunications and genomics.

Prerequisite: STA286H1 or ECE302H1

ECE524H1 Microwave Circuits

The wave equation; losses in conductors and dielectrics; RF and microwave transmission lines; transients on transmission lines; matching networks; planar transmission lines (microstrip, stripline, coplanar waveguide); design with scattering parameters; 3- and 4-port RF devices (power dividers/combiners, couplers, isolators & circulators); coupled lines and devices; microwave active circuits (RF amplifiers, mixers, and receiver front ends); RF and microwave filters. The hands-on laboratories engage students in the design, simulation, fabrication, and test of practical passive and active microwave circuits using industry-standard RF/microwave simulation tools and measurement systems.

Prerequisite: ECE320H1 or ECE357H1

ECE525H1 Lasers and Detectors

This course focuses on photonic components which generate or absorb light. Lasers: spontaneous and stimulated emission, gain and absorption, gain broadening; modulation dynamics, mode-locking, Q-switching; semiconductor lasers. Photodetectors: absorption, photo-generated currents, noise in detection.

Prerequisite: One of ECE330/350H1 or PHY335/355H1, and one of ECE318/320/357H1, ECE318H1 can also be taken as a co-requisite instead of a pre-requisite.)

ECE527H1 Photonic Devices

Introduction to photonic components useful in many applications ranging from bio-photonics and sensors to optical communications. The students will gain a solid understanding of the fundamental phenomena involved in photonic devices operation and their design. Topics covered include: birefringent media such as liquid crystal displays; polarization states of light and its uses in device applications; interaction of light with matter and its influence in device performance; beams and resonators in free space optical systems; optical waveguides; periodic structures and optical thin films; waveguide couplers and splitters; nano-optics and plasmonic waveguides.

(Background preparation in ECE318 Fundamentals of Optics, or ECE320 Fields and Waves, or ECE357 Electromagnetic Fields, is strongly recommended).

ECE530H1 Analog Integrated Circuits

Review of MOSFET semiconductor device equations. Review of basic amplifier circuits. Basic CMOS op amp. Op amp compensation. Advanced op amp circuits: telescopic and folded-cascode op amps; fully- differential op amps. Comparators. Sample-and-hold circuits. Bandgap reference circuits. Nyquist-rate data converters: D/A converters, A/D converters.

Prerequisite: ECE331H1 or ECE354H1

ECE532H1 Digital Systems Design

Advanced digital systems design concepts including project planning, design flows, embedded processors, hardware/software interfacing and interactions, software drivers, embedded operating systems, memory interfaces, system-level timing analysis, clocking and clock domains. A significant design project is undertaken and implemented on an FPGA development board.

Prerequisite: ECE342H1 or ECE352H1

ECE533H1 Advanced Power Electronics

This course covers system issues associated with the design of switched mode power supplies for telecommunication, computer network and information applications. Topics to be covered include: power processing architectures; steady state analysis and component ratings; control loop modelling and control loop design; EMC regulatory issues.

Prerequisite: ECE314H1 or ECE315H1 or ECE349H1 or ECE359H1

ECE534H1 Integrated Circuit Engineering

The course deals with the technology and design of analog, digital and RF integrated circuits, including exposure to computer aided IC design tools at the semiconductor process, device, and circuit layout level. Topics include: IC fabrication review, MOS IC process modules and components; RF (Bi) CMOS IC process modules and components; compact modelling, characterization and design automation; Bipolar/CMOS digital, analog, and RF IC building blocks; packaging and yield. The labs will expose students to the major design steps in the development of a multi-purpose (Bi) CMOS process.

Prerequisite: (ECE331H1 or ECE334H1 or ECE354H1) and (ECE335H1 or ECE350H1)

ECE535H1 Advanced Electronic Devices

Heterojunctions, SiGe, InP and GaSb HBTs. MOS device scaling and scaling limits, Dennard's constant field scaling rules, device characteristics and short channel effects. Charge quantization, gate stack, strain and substrate engineering in nanoscale MOSFETs. Nanoscale CMOS fabrication process flow, isolation methods, strategies to suppress short channel effects, stress memorization techniques. Technology CAD for process and device simulations. SPICE models for circuit simulation. SOI (Silicon on Insulator) technology, III-V FETs and graphene transistors. High Power Devices: LDMOS, AIGaN/GaN HEMTs.

Prerequisite: ECE335H1 or ECE350H1

ECE537H1 Random Processes

Introduction to the principles and properties of random processes, with applications to communications, control systems, and computer science. Random vectors, random convergence, random processes, specifying random processes, Poisson and Gaussian processes, stationarity, mean square derivatives and integrals, ergodicity, power spectrum, linear systems with stochastic input, mean square estimation, Markov chains, recurrence, absorption, limiting and steady-state distributions, time reversibility, and balance equations.

Prerequisite: STA286H1 and ECE355H1 or ECE302H1

Corequisite: ECE355H1 (can be taken at the same time as ECE537H1)

ECE540H1 Optimizing Compilers

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 memory hierarchy optimizations. Students will implement significant optimizations within the framework of a modern research compiler. Experience in C programming required.

ECE552H1 Computer Architecture

Performance analysis and metrics and cost. Instruction set architectures. Instruction-level parallelism: pipelining, superscalar, dynamic scheduling, VLIW processors. Data-level prallelism: vector processors, GPUs. Thread-level parallelism: multiprocessors, multi-core, coherence, simultaneous multi-threading. Memory hierarchies: caches and virtual memory support. Simulation tools and methods. Limited Enrollment.

Prerequisite: ECE243H1 or ECE352H1

ECE557H1 Systems Control

State-space approach to linear system theory. Mathematical background in linear algebra, state space equations vs. transfer functions, solutions of linear ODE’s, state transition matrix, Jordan form, controllability, eigenvalue assignment using state feedback, observability, designing observers, separation principle, Kalman filters, tracking and the regulator problem, linear quadratic optimal control, stability. Laboratories cover the state space control design methodology.

Exclusion: ECE410H1

ECE568H1 Computer Security

As computers permeate our society, the security of such computing systems is becoming of paramount importance. This course covers principles of computer systems security. To build secure systems, one must understand how attackers operate. This course starts by teaching students how to identify security vulnerabilities and how they can be exploited. Then techniques to create secure systems and defend against such attacks will be discussed. Industry standards for conducting security audits to establish levels of security will be introduced. The course will include an introduction to basic cryptographic techniques as well as hardware used to accelerate cryptographic operations in ATM’s and webservers.

Prerequisite: ECE344H1 or ECE353H1


Graduate Computer Engineering courses


ECE1718H Special Topics in Computer Hardware Design

Previous Offerings:

  Computer Architecture: Computer architecture is the science and art of selecting and interconnecting hardware components to create a computer that meets functional, performance and cost goals. This course provides students with a solid understanding of fundamental architectural techniques used to build today’s high-performance processors and systems. Course topics include pipelining, caches, virtual memory, and multiprocessors. Some emphasis will be placed on hardware/software interaction to achieve performance.

  Topics in Modern Computer Architecture: Performance, Reliability, Power and Functionality: Recent advances and seminal works in computer architecture including: Technology and Architecture Background, Modern Processors - Schedulers, Modern Processors - Branch Prediction, Modern Processors - Other forms of speculation, Modern Processors - Limits of conventional instruction level parallel techniques, Modern Processors - The case for chip multiprocessors, Modern Processors - Chip multiprocessor memory systems and optimizations, Speculative Multithreading Architectures, Data-Parallel Architectures, Polymorphic Architectures, Independence Architectures, Power-Aware Techniques, Fault Tolerance and Reliability, On-line Profiling and Debugging, Support for Virtualization, Accelerator Architectures, Simulation Methodologies

ECE1724H Special Topics in Software Engineering

Previous Offerings:

  Dependable Systems: Modern computer systems have become tightly intertwined with our daily lives. However, they are complex, failure-prone and insecure and thus hardly dependable. They are also difficult to manage so that configuring systems by even expert humans is overwhelmingly complex, rarely correct, and often results in decreased dependability and increased vulnerabilities. These problems have become even more severe with increased networking and with easy availability of inexpensive, powerful and embedded devices. While these dependability problems dominate cost of ownership of computer systems, unfortunately they have no simple solutions. There is a realization that these problems cannot be decisively solved but are ongoing facts of life that must be dealt with regularly. To do so, systems should be designed to detect, isolate and recover from these problems. This graduate-level course focuses on dependability in software systems and examines current research that aims to address challenges caused by software defects, intrusions and software misconfiguration.

  Programming Massively Parallel Graphics Processors (with CUDA and OpenCL): Modern graphics processors (GPUs) offer the promise of an order of magnitude or more performance improvement over general purpose processors for data crunching applications. This course provides a hands-on experience in developing applications for graphics processors with massively parallel computing resources. The course targets those who want to develop applications for GPUs, as well as those who want to develop programming tools and future implementations for these processors. The initial part of the course focuses on CUDA, a popular programming interface for GPUs. The course continues with a closer view of the internal organization of graphics processors and how it impacts performance. Implementations of applications and algorithms on graphics processors will be discussed. Given time the course will touch upon the newly introduced OpenCL programming interface. The course will be using NVIDIA processors and the CUDA programming tools. There will be a few weekly programming assignments. In addition students will have to propose and complete a course project. Each programming assignment will involve successively more sophisticated programming skills. The bulk of the effort however will be on the course project. An ideal project team would include people with strong programming background (e.g., computer engineering or science) and people with strong computational demands. This course is available to graduate students outside of Electrical and Computer Engineering which are strongly encouraged to attend. It should be of particular interest to those in other research fields who need substantial, low-cost computing power and those that have applications that take prohibitively long time to ran on general purpose platforms.

  Industry Perspectives on Practical Problems in Computer Security: This course will survey some important practical problems in computer security that are not considered by end-users to be adequately addressed by currently available technologies. For each problem considered, we will review the variety of practical solutions currently available in the marketplace and the shortcomings of each, as well as considerations for improvement. Problems to be considered include Phishing, SPAM, Web application protection, Spyware and malware, and others. We will consider each problem not only from the perspective of the technology, but also from the point of view of business opportunity — an option to prepare a startup business plan as a final assignment will be available, in addition to a technology-focused alternative.

ECE1729H Fault Tolerant Computing

Testing, diagnosis, fault location, recovery, reliability and other related topics in the area of fault tolerant computing.

Prerequisite: ECE241H1 or ECE459H1, or equivalent

ECE1733H Topics in Switching Theory

Topics in Switching Theory course is a fundamental course in the area of logic synthesis of digital circuits. The course begins with a short review of two-level minimization in sum-of-products form. It then discusses the concept of Binary Decision Diagrams and their manipulation. Once the basic concepts of logic function representation are covered the course will proceed with the exploration of logic decomposition techniques. In particular, kernel extraction, boolean division and BDD-based methods are discussed. The final topics of discussion are Boolean Satisfiability (SAT), Quantified Boolean Formulas (QBF), and the fundamentals of accelerated test pattern generation (ATPG) based approaches.

ECE1734H Computer Communications

This course provides an introduction to computer and telecommunications network protocols and design. The following topics are covered: Trends in Information Services & Network Evolution; Layered Network architectures; Information Representation and Transmission; Multiplexing & Switching; Delay and Loss performance; Data Link Layer: Synchronization and Error Control; Medium Access Control; Local Area Networks; Wireless Access Networks; Mobility Management; Network Layer: Routing, Flow Control; ATM Networks; Internetworking: Internet Protocol; Transport Layer: Transmission Control Protocol; Network Security; Domain Name System; SNMP; E-Mail; The WWW: HTTP protocol.

ECE1746H Distributed Systems

The exponential growth of Internet services demonstrates the importance and potential of large—scale distributed systems. Today, Web services allow online shopping of virtually any product from cheap second-hand items to expensive art collections. Content delivery networks can potentially speed these services by cleverly caching Web pages. Peer-to-peer applications allow sharing of content in ways that are making industry nervous about their profit margins. Multimedia services provide streaming delivery of audio and video. The new classes of distributed applications that are becoming ubiquitous seems endless: cluster computing, grid computing, game services, pervasive mobile computing, sensor networks, etc. In this scenario, a fundamental challenge is to provide scalable, secure and robust services in the presence of best-effort communication and unreliable nodes. This graduate-level course focuses on distributed computing from a systems software perspective. Students are expected to read and critique recent research papers that cover some of the distributed applications mentioned above and span areas such as operating systems, networks, security and multimedia systems.

ECE1747H Parallel Programming

This course is an intermediate graduate course in the area of parallel programming. In the first part of the course we will briefly introduce the architecture of parallel systems and the concept of data dependencies/races. The three most commonly used parallel programming paradigms (shared memory, distributed memory and data parallel) will then be examined in detail. An overview of automatic parallelization of programs and the use of parallel processing in related domains such as parallel and distributed database transaction processing will also be given. In the second part of the course selected research topics will be examined. This part of the course consists of student-lead discussions of relevant research papers. A research-intensive group project in an area related to program parallelization is a fundamental part of the course. The projects can be done individually or in small teams of two or three people. The project outcome will be presented in a class session at the end of the semester.

Recommended: an undergraduate course in operating systems.

ECE1749H Interconnection Networks for Parallel Computer Architectures

Interconnection networks form the communication backbone of computers at a variety of scales, from the internet to on-chip networks in multi-core/many-core architectures. With growing emphasis on parallelism as a means of extracting additional processor performance, the communication substrate is a critical factor in both the performance and power consumption of many-core architectures. This course will explore the architecture and design of interconnection networks including topology, routing, flow control and router microarchitecture. This course will also look into the impact on communication requirements of various parallel architectures and cache coherence mechanism. This graduate-level course will focus on interconnection network architectures used in multiprocessor systems and many-core designs with emphasis on recent research innovations in these areas.

ECE1751H VLSI Arithmetic Structures

This course covers system level architectural and arithmetic issues in custom CMOS design. It emphasizes the interaction between circuit level and system level aspects. Course contents include: logic circuit design, regular and bus structures, system clocking and skew, fast adder design, redundant arithmetic, multiplier and divider design, floating point arithmetic, logarithmic number system. Exercises will be used to study circuit designs for the structures described in class.

ECE1752H Real Time Systems and Software

System issues including: time handling, synchronization scheduling and resource allocation. Programming and real time languages. Modeling. Application case studies.

ECE1754H Compilation Techniques for Parallel Processors

An introduction to compiler analyses and techniques used in the automatic parallelization of programs. Topics include: data dependence, dependence testers, loop-level parallelization, loop transformations, loop scheduling, locality management, data distribution, computation partitioning, task-level parallelization, case studies. Students carry out a significant literature survey or a programming project in one of the course topics.

ECE1755H Parallel Computer Architecture and Programming

With the advent of multicore processors, we are faced with the challenge of exploiting this ubiquitous multithreaded hardware. This course explores the evolution of modern parallel architectures and programming models, and is divided into two phases. In the first phase we will investigate in detail the design and operation of modern parallel architectures, with a brief look at how they are programmed. This phase will include several homeworks which provide hands-on experience with real parallel machines. The second phase of the course will switch gears: we will study current research and development of emerging parallel architectures including multicore processors, helper threads, and speculative multithreading; in this phase we will read research papers, and through the class project implement and evaluate new ideas. Students are welcome to suggest topics for class discussion and/or projects.

Prerequisites: basic computer architecture and operating systems

Exclusions: ECE1718S: Modern and Emerging Architectures

ECE1756H Reconfigurable Computing and FPGA Architecture

Field Programmable Gate Arrays are computer chips whose function and wiring can be re-programmed to suit different purposes. FPGAs enable “reconfigurable computing” wherein one can create a custom computing engine with higher efficiency than a conventional software-programmed device, without the expense and difficulty of manufacturing a custom chip. As the development costs of custom (ASIC) computer chips have exploded and the capabilities of FPGAs have increased, FPGAs have become an ever more popular choice to implement complex systems. This course will explore both the use of FPGAs and the design of the FPGA architecture itself. Through hands-on work students will compare the efficiency and programming effort of FPGA-based signal processing with a DSP processor implementation. We will analyze how well various classes of applications will map to FPGAs vs. alternative highly parallel solutions such as DSP processors and GPUs. We will also study the architecture of FPGAs: what are the building blocks of FPGAs, how are they interconnected, and what makes a good vs. a bad architecture? Students will learn how to model the area and delay of key circuitry such as RAM blocks and programmable routing, how the ability of Computer-Aided Design (CAD) tools to target different structures affects FPGA architecture, and how to experimentally evaluate new FPGAs. Finally, we will discuss emerging architectures and possible future directions for FPGA evolution.

ECE1759H Advances in Operating Systems

This course examines current research topics in the area of operating systems. Prerequisites: Advanced Operating Systems Course. Operating system implementation experience.

ECE1761H Advanced Topics in Digital Hardware

This course will cover the most recent research developments in digital hardware, focusing on implementation media and design software.

ECE1762H Algorithms and Data Structures

This is a fundamental course for all majors in computer engineering and electronics. Initially, it will review background in combinatorics and basic data structures. Next, we will cover in detail advanced algorithmic design techniques and data structures, including: quicksort (randomized, deterministic), selecting in linear time, red-black trees, hash tables and hash functions, lower bounds, amortized analysis and splay trees, dynamic programming, greedy methods, graph algorithms, spanning trees, shortest paths, network flow, NP completeness and approximation algorithms.

ECE1765H File Structures and Storage Systems

A selection of basic, advanced and research topics: storage devices, file systems, index structures, B-trees, hashing, inverted files, suffix arrays, lossless compression, distributed and parallel systems, fault tolerance, transaction processing, information retrieval, persistent programming, object-oriented and multimedia database systems.

ECE1767H Design for Test and Testability

The Semiconductor Industry Association anticipates that Very Large Scale Integration (VLSI) semi-conductor devices of the near future will indeed be “very large”, including designs that integrate 100-200 million transistors operating in 1-3 GHz clock rates. Due to the increasing dependence on microelectronic devices and the concern for high reliability and short time-to-market window, the VLSI Computer Aided Design community faces great challenges in the development of tools that aid the design of complex devices and guarantee their functionality. This course covers fundamentals of testing theory and practice for complex VLSI designs and it is a good source of information for engineers with interests in chip and system level design, test engineers and CAD developers. The objective is to give students the ability to solve a wide range of non-trivial testing problems using practical and cost effective techniques. Computer-aided design tools will be developed throughout the semester from the students. These tools will serve as an application of the theory presented in class. Topics covered include Logic Simulation, Fault Modeling, Fault Simulation, Algorithms and techniques for Automatic Test Pattern Generation in Combinational and Sequential Circuits (D-algorithm, PODEM, recursive learning), Design Error/Fault Diagnosis, Introduction to Functional Testing of Microprocessors, ALUs and Memories, Design for Testability, and logic and scan Built-in Self-Test. Course requirements include a full-term design project and a final exam. During the project, each student will develop a parallel fault simulator and a test generator for single stuck-at faults in combinational and sequential circuits. Course prerequisites include any senior-level VLSI design or logic design course plus intermediate level skills in programming with C or C++.

ECE1768H Reliability of Integrated Circuits

Description of the techniques used to study the reliability of integrated circuits. Covers reliability modeling, physical causes of semiconductor device failure, reliability model development and calibration, model-based reliability prediction, reliability testing and measurement, and failure diagnosis. Coverage emphasizes application to integrated circuit technology.

ECE1769H Behavioral Synthesis of Digital Integrated Circuits

This course presents theory and practice for the synthesis of digital systems at the behavioral level (algorithm level), register transfer level and logic level. Lecture topics focus on classic subjects such as micro-architecture, control/data flow analysis, optimization, scheduling, resource and interconnect binding, multi-level logic synthesis, technology mapping and retiming. Lecture topics also extend to cover advanced frontend issues, such as the synthesis of object oriented language constructs, as well as advanced backend issues, such as the interaction with layout design. The class project involves the construction of a complete behavioral synthesis tool from C to synthesizable HDL.

ECE1770H Trends in Middleware Systems - Large-scale Data Management

A “middleware system” (a.k.a. computing infrastructure) constitutes a set of services that aim at facilitating the development of distributed applications in heterogeneous environments. The primary objectives of middleware are to foster application portability, distributed application component interoperability, and facilitate software component integration. At least conceptually, the “middleware layer” comprises a layer below the application and above the operating system and network substrate. Common middleware platforms include CORBA, DCOM, Java RMI, J2EE, MQSeries, MSMQ, and Web Services. The course is taught in two flavours alternating over the years. One instance of the course looks at the broader picture of middleware and discusses current industry trends and the other instantiation looks at research trends. These trends are manifest in algorithms, protocols, and systems found in application domains such as selective information dissemination, sensor networks, and peer-to-peer computing. These trends also cover emerging paradigms for designing middleware platforms, including component technologies, aspect orientation, and reflection. It is the objective of this course to discuss research papers about these matters. This course targets research-oriented graduate students who would like to learn more about middleware systems research.

ECE1771H Quality of Service

This course aims to present a collection of fundamental design principles and guidelines in modern distributed systems and real- world large-scale networks. In the process, we review a small collection of important research results, not only in the recent literature but also in the literature spanning the past two decades, and see how they reflect fundamental design principles that we have discussed. Our focus is on more recent research literature, in the areas that have been studied extensively: multimedia networking, peer- to-peer networks, as well as multi-hop wireless networks. The holy grail of distributed systems and networking design is to achieve Quality of Service, or QoS. Quality of Service is concerned with the “peace of mind” that resources are set aside to guarantee a particular level of performance, even with competition from other users sharing the same pool of resources. We will see why this is hard, and why it sometimes may not be necessary. However, having such an objective is important to motivate innovation in the design of distributed systems and real-world networks, wireless or wired. The course is divided into a number of episodes (each covered in the time of approximately one lecture depending on progress). We start with an examination of our design objectives, including Quality of Service. We then introduce a number of fundamental design principles that may lead to a high-quality design. Subsequently, we take a leisure walk through more specific areas of research, spanning peer- to-peer networks, wireless mesh networks, secure protocols, so-called “killer” applications, as well as recent advances in network coding. Throughout the course, we revisit the design principles often, and see how they affect the successes (or failures) of research ideas.

ECE1772H Motion Analysis in Computer Vision

This course deals with methods for analyzing motion found in image sequences. Course topics include: imaging models; projective geometry; camera calibration; the concepts of motion field and optic flow, image constraints for computing optic flow (brightness constancy, phase constancy) and a discussion of when these are violated; the aperture problem; depth recovery and the relationship of motion analysis to stereopsis; recovery of egomotion using displacement-based methods (E-matrix) and velocity-based methods (subspace constraints); motion-based image segmentation for 2-D (flow) and 3-D motion models; statistical clustering methods (robust estimation, hard clustering, RANSAC, mixture models and EM algorithm) as applied to motion-based image segmentation; and applications of motion analysis (compression using MPEG4, image stabilization, mosaicing). As time permits the topics of image warping and object tracking may also be considered. Students taking this course will be expected to undertake a practical project related to motion analysis. This project will require a report, as well as a software implementation or an FPGA-based hardware implementation of a motion-analysis algorithm.

Prerequisites: Undergraduate linear algebra, calculus computer programming, physics.

ECE1773H Advanced Computer Architecture

State-of-the-art Uniprocessor Design. In a nutshell we ask not “how can I build a processor that works?” but “how can we build the ‘best’ processor possible?”. The following topics are included: instruction set architecture, performance analysis and metrics, cost, simulation methods and tools, instruction-level parallelism, vector processors, VLIW processors. Advanced uniprocessor prediction-based techniques and memory systems. If you will be pursuing research in computer architecture this course provides the knowledge necessary to get started. If you will not be pursuing research in computer architecture this course will expose you to the current cutting-edge techniques used in modern processors.

Prerequisites: Basic uniprocessor design. Basic Instruction set. Computer organization. Hardwired and Microcoded control. Basic pipelining. Basic Memory Systems.

ECE1774H Sensory Cybernetics

The senses from the point of view of an engineer. This course explores the theoretical foundations of the senses from both a systems and a neurophysiological point of view. Emphasis will be placed on understanding the senses holistically rather than individually (i.e. we study the common features that span the various sensory modalities). The course material will involve the application of ideas drawn from information theory, statistical signal detection theory and probability theory. In particular, we cover the following theories: (1) the signal detection approach to sensory analysis (vis-à-vis Donald Laming’s theory of differential coupling), the information encoded by sensory neurons, generalized Fechnerian psychophysics (e.g. the entropy theory of Kenneth Norwich), and finally the probabilistic approach to perception. Along the way, concepts crucial to the study of sensory system are also introduced including: the identification and categorization of sensory stimuli, reaction time, decision-making processes, differentiation of stimuli, the limits of perceptibility, and large-scale integration of sensory information. The course will also consider applications of sensory research to pattern recognition, multimedia and biological computers. Course work will involve surveying the existing literature, doing a research project in small groups and a final examination. No biology background is required although some familiarity with the concept of probability is preferred. (Students who took the course Sensory Cybernetics and the Theoretical Foundation of the Senses will not be allowed to take this course under the new title.)

ECE1775H Biologically Inspired Computing

This course surveys the state of the art in computing hardware and algorithms which are based on biological counterparts. Course topics include machine intelligence, neural networks, artificial sensing and perception, genetic algorithms and systems, as will as novel technologies such as neuro-electrical interfaces. The prerequisite for this course is at least one course in machine learning, neural networks, or artificial intelligence.

ECE1776H Computer Security, Cryptography and Privacy

The course introduces students to research topics on Computer Security. Students will be introduced to concepts in exploiting vulnerabilities, tools for detection of vulnerabilities, access control models, basic cryptography, and operating system, hardware, and network security.

ECE1777H Computer Methods for Circuit Simulation

Circuit simulation is a commonly used technique for analysis and verification of circuits, ranging from integrated circuits and microelectronics to power distribution networks and power electronics. It is an established art and remains an important area of research. This course covers the theoretical background for modern circuit simulation, as well as the numerical techniques that are at the core of every circuit simulator.

ECE1778H Creative Applications for Mobile Devices

Recent Mobile Devices have created a revolution in the use of computers in a vast array of new areas including psychology, medicine, global health, music, banking, cooking, exploring, travel, shopping, and games. We believe that we have just scratched the surface of what is possible, and so the purpose of this course is to encourage creativity in the creation of new applications of mobile devices.This is a project-based course in which the goal is to produce a working app by the end of course. Graduate students from all disciplines are encouraged to take this course for credit. Projects will be done in groups of 2 or 3. Students with programming skills will be matched with those from non-programming backgrounds to do projects in the latter students’ disciplines. There will be four kinds of lectures: (1) On the capabilities of modern mobile devices at both a technical and lay level for non-specialists, (2) Case studies of innovative applications, linking to methods of innovating, (3) Mobile device programming basics, (4) Project Proposals and Presentations. Graduate students with programming-oriented backgrounds will be graded based on the technical quality of the project, and on their interaction with non-programming project partner(s). Students working on the non-programming portion of the project will be graded, in part, from a faculty member from their own department, and on their ability to engage with their programming partner(s). Grading will be on a few basic programming assignments, project proposals, and final project report and presentation. Non-technical students will do some basic programming. The course will support the use of Google Android-based platforms, but those who have access to other platforms (such as Apple iPhone or RIM Blackberry or Nokia Maemo) are welcome to use those.

ECE1779H Introduction to Cloud Computing

This course provides an introduction into the technologies behind cloud computing. A combination of lectures and hands-on programming assignments expose the student to the leading cloud computing paradigms and programming interfaces (e.g., EC2, Azure, App Engine). In addition, lectures provide an overview of the underlying technological concepts that make cloud computing possible (e.g., virtualization, scalability, fault tolerance, security). Please note that this course is open to M.Eng. students only.

ECE1780HS Advanced Mobile User Interfaces

With the rapid advancement of mobile computing, and the limited physical space available for keyboards/buttons on mobile device, there will be an ever greater need for novel types of mobile user interfaces including dynamic keyboards, computer-vision based interfaces, speech and audio processing (with Siri as one example), as well as other interface modalities. The goal of this course is to provide an overview of the information processing algorithms and design principles behind today’s most popular and tomorrow’s emerging mobile user interface systems.