GRADUATE COURSES 2009/10: Computer Engineering
FALL TERM
|
Course No. |
Title |
Professor |
Day(s) |
Starting Date |
Time |
Location |
| ECE1718H |
Sp. Topics in CHD: Topics in Computer Architecture: Performance, Reliability, Power and Functionality |
A. Moshovos |
Tues |
15 Sept
|
12-2 |
BA4164 |
| ECE1724H |
Special Topics in Software Engineering: Dependable Systems |
A. Goel |
Wed |
16 Sept |
3-5 |
GB248 |
| ECE1747H |
Parallel Programming |
C. Amza |
Mon |
14 Sept |
4-6 |
BA4164 |
| ECE1762H |
Algorithms and Data Structures |
A Veneris |
Thurs Fri (tutorial) |
10 Sept |
2-4 2-5 |
BA4164 BA4164 |
| ECE1769H |
Behavioral Synthesis of Digital Integrated Circuits |
J. Zhu |
Wed |
16 Sept |
12-2 |
BA4164 |
|
ECE1775H |
Biologically Inspired Computing |
P. Aarabi |
Thurs |
17 Sept |
10-12 |
BA4158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SPRING TERM |
|
|
|
|
|
|
Course No. |
Title |
Professor |
Day(s) |
Starting Date |
Time |
Location |
| *ECE516H |
Intelligent Image Processing |
S. Mann |
Mon Thurs |
4 Jan
|
2-3 1-2 |
BAB024 WB119 |
|
*ECE532H |
Digital Hardware |
P. Chow |
Mon Thurs |
4 Jan
|
12-1 9-10 |
BA1230 WB119 |
|
*ECE540H |
Optimizing Compilers |
T.S. Abdelrahman |
Tues |
5 Jan |
10-12 |
BA1230 |
|
*ECE568H |
Computer Security |
A. Goel |
Mon Fri |
4 Jan |
10-12 3-4 |
GB119 GB119 |
ECE1724H
|
Sp. Topics in Software Eng: Programming Massively Parallel Graphics Processors |
A. Moshovos |
Thurs |
14 Jan |
2-4 |
GB220 |
| ECE1749H |
Interconnection Networks for Parallel Computer Architectures |
N. Enright Jerger |
Wed |
13 Jan |
10-12 |
BA2165 |
| ECE1754H |
Compilation Techniques for Parallel Processors |
T.S. Abdelrahman |
Mon |
11 Jan |
3-5 |
BA4164 |
| ECE1770H |
Trends in Middleware Systems: Green Middleware and Computing |
H.-A. Jacobsen |
Thurs |
14 Jan |
4-6 |
BA2179 |
|
ECE1771H |
Quality of Service |
B. Li |
Fri |
15 Jan |
10-12 |
BA4164 |
| ECE1774H |
Sensory Cybernetics |
W. Wong |
Mon |
4 Jan |
10-12 |
RS412 |
|
|
|
|
|
|
|
*For up to date information on times and location for 500-level courses, please check the following website:
http://www.apsc.utoronto.ca/timetable/winter.html#ECE
The above information can be changed without any notice.
Last updated: 5 January 2010
Computer Engineering Graduate Course Descriptions
See also graduate courses in the Communications Group, the Electronics Group and the Department of Computer Science.
ECE 516H Intelligent Image Processing
S. Mann
This course provides the student with the fundamental knowledge needed in the rapidly growing field of Personal Cybernetics, including “Wearable Computing”, “Personal Technologies”, “Mobile Multimedia”, and the merging of communications devices such as portable telephones with computational and imaging devices. The focus is on fundamental aspects of computer vision associated with computationally mediated reality. Topics to be covered include: mediated reality, the Eye Tap principle, collinearity criterion, vitrionic displays, comparametric equations, photoquantigraphic imaging, comparagraphics lightvector spaces, anti-homomorphic imaging, application of personal imaging to the visual arts, and algebraic projective geometry.
Open also to 4th year undergraduates as an elective. Students doing a 496 design course with Prof. Mann will also find this course extremely useful.
ECE 532H Digital Hardware
P. Chow
Bus design, protocols, drivers, receivers. Input/output subsystems, DMA controllers. Memory subsystems. Computer communications hardware, serial and parallel I/O protocols. Digital to analogue and analogue to digital conversion. Microprocessor systems: chip families, controller processors, application considerations. Course credit is not available to students who have taken ELE 1745H or ELE 432S.
ECE 540H Optimizing Compilers
T.S. Abdelrahman
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, dependence analysis and automatic parallelization. Students will implement significant optimizations within the framework of a modern research compiler. Prerequisites: ECE 242, recommended ECE 341 and CSC 488.
ECE 568H Computer Security
A. Goel
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 F/S.)
ECE1718H Special Topics in Computer Hardware Design: Topics in Modern Computer Architecture: Performance, Reliability, Power and Functionality
A. Moshovos
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: Dependable Systems
A. Goel
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.
ECE1724H Special Topics in Software Engineering: Programming Massively Parallel Graphics Processors
A. Moshovos
The aims of the course is to provide hands-on experience in developing applications software for graphics processors with massively parallel computing resources. The target audiences of the course are those who want to develop exciting applications for these processors, as well as those who want to develop programming tools and future implementations for these processors. The initial part of the course focuses on a popular programming interface for graphics processors. The course continues with a closer view of the internal organization of graphics processors and how it impacts performance. Finally, implementations of applications and algorithms on graphics processors will be discussed.
The course will be using NVIDIA processors and the CUDA™ programming tools. There will be several programming assignments. In addition students will have to propose and complete a final project. Each programming assignment will involve successively more sophisticated programming skills.
The course will require a basic understanding of computer organization and general C programming knowledge.
This course is available to graduate students outside of Electrical and Computer Engineering; it should be of particular interest to those in other research fields who need substantial, low-cost computing power available with modern Graphics Processing Units.
ECE1724H Special Topics in Software Engineering: Industry Perspectives on Practical Problems in Computer Security
R. Reiner/D. Lie
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.
ECE 1729H Fault Tolerant Computing
Staff
Testing, diagnosis, fault location, recovery, reliability and other related topics in the area of fault tolerant computing. Prerequisite: ECE 241F or ECE 459F, or equivalent
ECE 1733H Topics in Switching Theory
S.D. Brown
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.
ECE 1734H Computer Communications
A. Leon-Garcia
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.
ECE 1746H Distributed Systems
A. Goel
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.
ECE 1747H Parallel Programming
C. Amza
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
N. Enright Jerger
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.
ECE 1751H VLSI Arithmetic Structures
D.M. Lewis
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.
ECE 1752H Real Time Systems and Software
M. Stumm
System issues including: time handling, synchronization scheduling and resource allocation. Programming and real time languages. Modeling. Application case studies.
ECE 1754H Compilation Techniques for Parallel Processors
T.S. Abdelrahman
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.
ECE 1755H Parallel Computer Architecture and Programming
J.G. Steffan
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
ECE 1756H Digital Hardware Design Using Programmable Logic Devices
S.D. Brown
This course will illustrate how modern digital hardware designs are implemented in programmable logic devices (PLDs), using state-of-the-art techniques. A wide range of PLDs will be considered, including PALs, complex PLDs, and FPGAs. Implementation techniques discussed will include small hardware description languages (e.g. ABEL), schematic capture (e.g. viewlogic), large hardware description languages (e.g. VHDL), logic synthesis, device fitting, and simulation.
ECE 1759H Advances in Operating Systems
M. Stumm
This course examines current research topics in the area of operating systems. Prerequisites: Advanced Operating Systems Course. Operating system implementation experience.
ECE 1761H Advanced Topics in Digital Hardware
S.D. Brown
This course will cover the most recent research developments in digital hardware, focusing on implementation media and design software.
ECE 1762H Algorithms and Data Structures
A. Veneris
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.
ECE 1765H File Structures and Storage Systems
Staff
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.
ECE 1767H Design for Test and Testability
A. Veneris
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++.
ECE 1768H Reliability of Integrated Circuits
F.N. Najm
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.
ECE 1769H Behavioral Synthesis of Digital Integrated Circuits
J. Zhu
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.
ECE 1770H Trends in Middleware Systems—Green Middleware and Computing
H.-A. Jacobsen
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.
ECE 1771H Quality of Service
B. Li
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 <i>Quality of Service</i>, or <i>QoS</i>. 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.
ECE 1772H Motion Analysis in Computer Vision
W.J. MacLean
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.
ECE 1773H Advanced Computer Architecture
A. Moshovos
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.
ECE 1774H Sensory Cybernetics
W. Wong
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.)
ECE 1775H Biologically Inspired Computing
P. Aarabi
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.
ECE 1776HComputer Security, Cryptography and Privacy
D. Lie
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.
ECE 1777HComputer Methods for Circuit Simulation
F.N. Najm
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.