Biomedical Engineering
Grad Subpages

Computer Engineering Course Catalogue

Updated for 2012-13

See also graduate courses in the Communications Group, the Electronics Group and the Department of Computer Science.

ECE516H Intelligent Image Processing
Professor 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.

ECE532H Digital Hardware
Professor H. Timorabadi
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.

ECE540H Optimizing Compilers
Professor 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.

ECE552H Computer Architecture
Professor N. Enright Jerger
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.

ECE 568H Computer Security
Course Instructor:  C. Gibson

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 ATMs and webservers. (Prerequisite: ECE344 or ECE353)

ECE1718H  Special Topics in Computer Hardware Design: Computer Architecture
Professor N. Enright Jerger
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.

ECE1718H Special Topics in Computer Hardware Design: Topics in Modern Computer Architecture: Performance, Reliability, Power and Functionality
Professor 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
Professor 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 (with CUDA and OpenCL)
Professor A. Moshovos
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.

 

ECE1724H Special Topics in Software Engineering: Industry Perspectives on Practical Problems in Computer Security
Professors 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.

More information on this course can be found at http://www.eecg.utoronto.ca/~lie/Courses/ECE1724-2009/

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
Professor 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
Professor 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
Professor 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
Professor 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
Professor 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
Staff
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
Professor 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
Professor 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
Professor 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 Reconfigurable Computing and FPGA Architecture
Professor V. Betz
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.

ECE 1759H Advances in Operating Systems
Professor 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
Professor 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
Professor 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
Professor 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
Professor 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
Professor 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 - Large-scale Data Management
Professor 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
Professor 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 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.

ECE 1772H Motion Analysis in Computer Vision
Staff
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
Professor 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
Professor 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
Professor 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.

ECE1776H Computer Security, Cryptography and Privacy
Professor 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 1777H Computer Methods for Circuit Simulation
Professor 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.

ECE1778H Creative Applications for Mobile Devices
Professor J.S. Rose
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
Professor E. de Lara
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
Professor P. Aarabi
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.