Electrical Engineering and Computer Science

Explore Lassonde

Lassonde logo
Close mobile menu

Courses by Group

Current Course Schedule

Directed Reading Course

A directed reading course is suited for students with special interests. Students will select areas of study in consultation with their supervisor. These areas should not significantly overlap with the material covered in courses currently offered at York University and undergraduate or graduate courses are taken by the student either at York University or elsewhere. Directed reading courses require a completed directed reading form. Students should return the completed form to the graduate program assistant by the 10th day from the start of the term. A printout of an email confirming approval can be used in lieu of a signature on the form.

Course Selection

Students are required to complete the course selection form in consultation with their supervisor. Completed forms should be returned to the graduate program assistant.

Courses in Another Graduate Program

Students may request to take courses offered by other graduate programs at York University. Such a course requires a completed request form, which needs to be approved by the course instructor, the graduate program director of the program offering the course and the graduate program director. Completed forms should be returned to the graduate program assistant. A printout of an email confirming approval can be used in lieu of a signature on the form.

Courses at Another Ontario University

Students may request to take a course offered at another university in Ontario. Students are required to complete the Ontario visiting graduate student application form. Completed forms should be returned to the graduate program assistant. Only if all the conditions listed on the second page of the form are satisfied, will the graduate program director approve the request. More information can be found at the website of the Faculty of Graduate Studies.

The Fields Institute periodically runs graduate level courses some of which may be of interest to EECS graduate students.  York students are typically entitled to take these courses free of charge.  The above process for students taking courses at other Ontario universities must be followed for these courses.

EECS5101 3.0 Advanced Data Structures The course discusses advanced data structures: heaps, balanced binary search trees, hashing tables, red-black trees, B–trees and their variants, structures for disjoint sets, binomial heaps, Fibonacci heaps, finger trees, persistent data structures, etc. When feasible, a mathematical analysis of these structures will be presented, with an emphasis on average case analysis and amortized analysis. If time permits, some lower bound techniques may be discussed, as well as NP-completeness proof techniques and approximation algorithms.

EECS5111 3.0 Automata, Computability and Complexity 
This course is intended to give students a detailed understanding of the basic concepts of abstract machine structure, information flow, computability, and complexity. The emphasis will be on appreciating the significance of these ideas and the formal techniques used to establish their properties. Topics chosen for study include models of finite and infinite automata, the limits to computation, and the measurement of the intrinsic difficulty of computational problems.

EECS5115 3.0 Computational Complexity Study of time and space and other computational resources required for efficient solution of classes of computational problems, including P and NP, PSPACE. Proof techniques include diagonalization, simulation, reduction and completeness. Models of computation, nondeterminism, randomness. Intractability. Prerequisite: LE/EECS 3101 3.0 or equivalent.

EECS6111 3.0 Advanced Algorithm Design and Analysis This is an advanced theoretical computer science course directed at non-theory students with a standard undergraduate background. The goal is to survey the key theory topics that every computer science graduate student should know. In about two weeks for each selected topic, we will gain insights into the basics and study one or two examples in depth. These might include a deepening of students’ knowledge of key algorithmic techniques, randomized algorithms, NP completeness, approximation algorithms, linear programming, distributed systems, computability, concurrency theory, cryptography, structural complexity, data structures, and quantum algorithms. Students will be expected to give a presentation on some topic new to them and solve some difficult problems in homework assignments. Prerequisite: CSE3101 3.0 and any fourth-year theory course.

EECS6112 3.0 Parallel Algorithms This course discusses the recent advances in parallel computations. The course will begin with classification and analysis of parallel models of computation including local memory, shared memory, data flow, and systolic arrays. The focus of the course will be on the design of parallel algorithms. Typical examples of parallel algorithms will include: graph algorithms, merging and sorting, and matrix computations. Much of the material will come from recent journal publications on the subject.

EECS6117 3.0 Theory of Distributed Computing Can a given problem be solved in a distributed system? If so, how efficiently? This course investigates how the answers to these questions depend on aspects of the underlying distributed system including synchrony, fault tolerance and the means of communication between processes. Topics include models of distributed systems, mutual exclusion, agreement problems, lower bounds and consensus hierarchy.

EECS6127 3.0 Machine Learning Theory This course takes a foundational perspective on machine learning and covers some of its underlying mathematical principles. Topics range from well-established results in learning theory to current research challenges. We start with introducing a formal framework, and then introduce and analyze learning methods, such as Nearest Neighbors, Boosting, Support Vector Machines (SVMs) and Neural Networks. Finally, students present and discuss recent research papers.

EECS6154 3.0 Digital Image Processing: Theory and Algorithms Fundamental image processing theories and algorithms. Signal representation using transforms, wavelets and frames is overviewed. Signal reconstruction methods using a total variation, sparse coding and low-rank prior, based on convex optimization, are discussed. Applications include image compression, restoration and enhancement.
Prior background in digital signal processing (EECS 4452 or equivalent) and numerical linear algebra is strongly recommended.

EECS6211 3.0 Numerical Linear Algebra This course is on matrix computations involving numerical linear algebra. It covers direct and iterative methods for solving linear systems of equations and orthogonalization methods for linear least-squares problems. Various algorithms are discussed for the solution of each problem. The related theory and the benefits, disadvantages and pitfalls associated with each method are explained. The matrix computations are performed using the LINPACK software package throughout the course.

EECS6212 3.0 Sparse Matrices There has been significant development in the area of sparse matrix computations in the last fifteen years. This course will use a graph-theoretic approach to consider direct methods for solving such linear systems. The band, profile/envelope, and general sparse methods will be covered. The subject is intensely practical. A component of this course is to modify some existing sparse matrix software packages so that actual large practical problems will be solved.

EECS6221 3.0 Statistical Signal Processing Theory This course introduces the theory and algorithms of stochastic signals and their applications to the real world. Discrete random variables, random vectors and stochastic processes are reviewed followed by signal processing methods used for detection, estimation and optimal filtering.

EECS6222 3.0 Coding and Information Theory This course introduces students to the fundamentals of information theory, as well as methods for achieving information-theoretic results using source codes and channel codes. Students will learn Shannon’s source coding and channel coding theorems, as well as the mathematical machinery required to prove these and other information-theoretic results. Students will also be exposed to source coding techniques, as well as channel coding techniques for state-of-the-art systems. Advanced topics such as multiterminal (Slepian-Wolf) source coding and rateless codes will also be covered, time permitting.
EECS5323 3.0 Computer Vision This course will introduce the basic concepts in Computer Vision. Primarily a survey of current computational methods, we will begin by examining methods for measuring visual data (image-based operators, edge detection, feature extraction), and low-level processes for feature aggregation (optic flow, segmentation, correspondence). Finally, we will consider some issues in “high-level” vision systems.

EECS5324 3.0 An Introduction to Robotics This course will introduce concepts in Robotics. The course will begin with a study of the mechanics of manipulators and robot platforms. Trajectory and course planning, environmental layout and sensing will be discussed. Finally, high-level concerns will be introduced. The need for real-time response and dynamic-scene analysis will be covered, and recent developments in robotics systems from an Artificial Intelligence viewpoint will be discussed.

EECS5325 3.0 Signals & Systems An introduction to the mathematical background in signals and systems required for computer vision and robotics; signal and image processing: sampling, discrete Fourier transform, filtering; linear system theory; Kalman filtering; feedback.

EECS5326 3.0 Topics in Artificial Intelligence This course will be an in-depth treatment of one or more specific topics within the field of Artificial Intelligence.

EECS5327 3.0 Introduction to Machine Learning and Pattern Recognition Machine learning is the study of algorithms that learn how to perform a task from prior experience. This course introduces the student to machine learning concepts and techniques applied to pattern recognition problems in a diversity of application areas.

EECS5331 3.0 Advanced Topics in 3D Computer Graphics This course discusses advanced 3D computer graphics algorithms. Topics may include direct programming of graphics hardware via pixel and vertex shaders, real-time rendering, global illumination algorithms, advanced texture mapping and anti-aliasing, data visualization, etc. Real-time image generation (rendering) techniques and direct programming of graphics hardware via pixel and vertex shaders are a technology that is increasingly used in computer games. Furthermore, these are also often used for computationally intensive applications as graphics hardware has far surpassed the raw computational power of traditional CPUs. Advanced texture mapping and anti-aliasing algorithms are used to create better quality images, that show fewer digital artifacts. Global illumination algorithms are used to generate images that are indistinguishable from real photos. Such images are used in the film industry, architecture, games, and lighting design.

EECS5351A 3.0 Human-Computer Interaction This course introduces the concepts and technologies necessary to design, manage and implement interactive software. Students work in small groups and learn how to design user interfaces, how to realize them and how to evaluate the end result. Both design and evaluation are emphasized.

EECS5391 3.0 Simulation and Animation for Computer Games This course covers the basic principles and practices related to motion synthesis and motion control for animated objects, such as those that appear in films and computer games.

EECS6322 3.0 Neural Networks and Deep Learning This course covers the theory and practice of deep learning and neural networks. Topics covered include training methods and loss functions, automatic differentiation and backpropagation, network architectures for different learning problems, validation, model selection and software tools. Prerequisites: EECS 5327 or EECS 6327 or permission of instructor.

EECS6323 3.0 Advanced Topics in Computer Vision An advanced topics course in computer vision that covers selected topics in greater depth. Topics covered will vary from year to year depending on the interests of the class and instructor. Possible topics include stereo vision, visual motion, computer audition, fast image processing algorithms, vision-based mobile robots and active vision sensors, and object recognition. Prerequisites: CSE5323 3.0 Introduction to Computer Vision

EECS6324 3.0 Computational Modeling of Visual Perception Same as PSYC6225 3.0 This course introduces the student to state-of-the-art computational models for human visual processing, and the tools required to advance the state of the art.

EECS6325 3.0 Mobile Robot Motion Planning The focus of this course is on robot motion planning in known and unknown environments. Both theoretical (computational-geometric) models, as well as practical case studies, will be covered in the course.

EECS6326 3.0 Principles of Human Perception and Performance in Human-Computer Interaction This course considers the role of human perception in human-computer interaction, particularly computer-generated graphics/sound and immersive virtual reality. Fundamental findings from sensory physiology and perceptual psychophysics are presented in the context of interface and display design.

EECS6327 3.0 Probabilistic Models and Machine Learning Intelligent systems must make effective judgements in the face of uncertainty. This requires probabilistic models to represent complex relationships between random variables (learning) as well as algorithms that produce good estimates and decisions based on these models (inference). This course explores both probabilistic learning and inference, in a range of application areas.

EECS6328 3.0 Speech and Language Processing Introducing the latest technologies in speech and language processing, including speech recognition and understanding, keyword spotting, spoken language processing, speaker identification and verification, statistical machine translation, information retrieval, and other interesting topics. Prerequisites: CSE4451 3.0 or CSE4401 3.0.

EECS6329 3.0 Empirical Research Methods for Human-Computer Interaction This course examines advanced concepts and technologies for Human-Computer Interaction. Students will learn about advanced input and output devices (e.g., for mobile computing and/or Virtual Reality), advanced design methods, how to implement effective interfaces, and how to perform rapid, effective iterative user tests.

EECS6330 3.0 Critical Technical Practise: Computer Accessibility and Assistive Technology This course examines issues of technological design in computer accessibility and computational forms of assistive technology (hardware and/or software). Students learn to critically reflect on the hidden assumptions, ideologies and values underlying the design of these technologies, and to analyze and to design them.

EECS6331 3.0 Advanced Image Synthesis This course concentrates on raster algorithms for image synthesis. Some of the topics may include visible surface algorithms, modelling, shading, global illumination, anti-aliasing, and texture mapping. Prerequisites: CSE5331 3.0 Introduction to Computer Graphics.

EECS6332 3.0 Statistical Visual Motion Analysis A seminar course that examines statistical approaches to visual motion analysis, including the 3-D structure and motion estimation, optical flow, segmentation and tracking using tools like Maximum Likelihood Estimation, Maximum A Posteriori, Least Squares and Expectation Maximization.

EECS6333 3.0 Multiple View Image Understanding This course considers how multiple images of a scene, as captured by multiple stationary cameras, single moving cameras or their combination, can be used to recover information about the viewed scene (e.g., three-dimensional layout, camera and/or scene movement). Theoretical and practical issues of calibration, correspondence/matching and interpretation will be considered. Prerequisite: CSE5323 3.0 Introduction to Computer Vision or permission of the instructor.

EECS6335 3.0 Topics in Virtual Reality This course considers how to present to a user a compelling illusion of being in an alternate (virtual) reality. It considers how humans perceive visual, audio, haptic and other perceptual inputs, and how technology can be used to stimulate these senses appropriately to simulate some virtual environment. Prerequisite: CSE4471 3.0 Introduction to Virtual Reality or equivalent is recommended.

EECS6339 3.0 Introduction to Computational Linguistics Introduction to Computational Linguistics explores computational techniques for understanding, translating and producing natural language, and investigates the structure and meaning of sentences and connected discourse. Some applications are discussed, e.g., question answering, machine translation, text classification, information extraction and so on.

EECS6340 3.0 Embodied Intelligence This course is intended as a follow-on from a first course on Artificial Intelligence. Whereas such first courses focus on the important foundations of AI, such as Knowledge Representation or Reasoning, this course will examine how these separate foundational elements can be integrated into real systems. This will be accomplished by detailing some general overall concepts that form the basis of intelligent systems in the real world and then presenting a number of in-depth cases studies of a variety of systems from several applications domains. The embodiment of intelligence may be in a physical system (such as a robot) or a software system (such as in game-playing) but in both cases, the goal is to interact with and solve a problem in, the real world.

EECS6341 3.0 Computational Photography This course covers the area of “computational photography” which refers to a broad group of imaging and processing techniques that enhance or extend the capabilities of digital photography to produce new photographs that could not have been taken by a traditional camera. Computational photography methods are changing the way we capture, process, and interact with photographs.
EECS5414 3.0 Information Networks Information networks are effective representations of pairwise relationships between objects. Examples include technological networks (e.g., the Web), social networks (e.g., Facebook), biological networks (e.g., protein-to-protein interactions), and more. Analysis of information networks is an emerging discipline of immense importance. This course provides students with theoretical knowledge and practical experience in the field by covering models and algorithms of information networks.

EECS5421 3.0 Operating System Design An operating system has four major components: process management, input/output, memory management, and the file system. This project-oriented course puts operating system principles into action. This course presents a practical approach to studying the implementation aspects of operating systems. A series of projects is included, making it possible for students to acquire direct experience in the design and construction of operating system components. A student in this course must design and implement some components of an operating system and have each interact correctly with existing system software. The programming environment is C++ under Unix. At the end of this course, a student will be able to design and implement the basic components of operating systems.

EECS5422 3.0 Performance Evaluation of Computer Systems This course introduces the concept of modelling a computer system, using queuing theory techniques and simulation techniques, then it examines the practical applications of these concepts in some case studies. These case studies are chosen to have a practical impact.

EECS5423 3.0 Programming Language Design The course focuses on the linguistics of programming languages; that is, on the common, unifying themes that are relevant to programming languages in general. Both algorithmic and nonalgorithmic language categories are examined. Current techniques for the formal specification of the syntax and semantics of programming languages are studied. Skills are developed in the critical and comparative evaluation of programming languages.

EECS5424 3.0 Compilers and Interpreters Principles and design techniques for compilers and interpreters. Compiler organization, compiler writing tools, scanning, parsing, semantic analysis, run-time storage organization, memory management, code generation, and optimization. Students will implement a substantial portion of a compiler in a project. This course is a hands-on introduction to the design and construction of compilers and interpreters. At the end of the course, you will understand the architecture of compilers and interpreters, their major components, how the components interact, and the algorithms and tools that can be used to construct the components. You will implement several components of a compiler or interpreter, and you will integrate these components to produce a working compiler or interpreter.

EECS5431 3.0 Mobile Communications This course provides an overview of the latest technology, developments and trends in wireless mobile communications, and addresses the impact of wireless transmission and user mobility on the design and management of wireless mobile systems.

EECS5441 3.0 Real-Time Systems Theory Specification and verification techniques for real-time systems with many interacting components. The formal design of real-time systems using (a) programming languages with unambiguous semantics of time-related behaviour and (b) scheduling algorithms.

EECS5442 3.0 Real-Time Systems Practice Introduction to the correct use and applications of real-time programming languages. Examples of real-time programming languages are studied in detail and applied to the solution of typical real-time programming problems (e.g., communication networks, avionic systems and process control).

EECS5443 3.0 Mobile User Interfaces This course teaches the design and implementation of user interfaces for touchscreen phones and tablet computers. Students develop user interfaces that include touch, multi-touch, vibration, device motion, position, and orientation, environment sensing, and video and audio capture. Lab exercises emphasize these topics in a practical manner.

EECS5501 3.0 Computer Architecture This course presents the core concepts of computer architecture and design ideas embodied in many machines and emphasizes a quantitative approach to cost/performance tradeoffs. This course concentrates on uniprocessor systems.

EECS6412 3.0 Data Mining This course introduces fundamental concepts of data mining. It presents various data mining techniques, algorithms and applications. Topics include association rule mining, classification models, sequential pattern mining and clustering. Prerequisites: an introductory course in database systems. Students who receive credit for this course may not also receive credit for CSE6490C 3.0.

EECS6414 3.0 Data Analytics and Visualization Data analytics and visualization is an emerging discipline of immense importance to any data-driven organization. This is a project-focused course that provides students with knowledge on tools for data mining and visualization and practical experience working with data mining and machine learning algorithms for the analysis of very large amounts of data. It also focuses on methods and models for efficient communication of data results through data visualization.

EECS6415 3.0 Big Data Systems Modern data systems seek to extract value from data and enable data-driven decisions sweeping all aspects of society, ranging from natural sciences to government to business. Big data involves analyzing massive data volumes and variety of data sources. Doing so effectively needs high quality data to ensure that the analyses and resulting decisions are meaningful and do not fall prey to the garbage in, garbage out (GIGO) syndrome. This course covers big data systems, that is infrastructures that are utilized to handle all steps in typical big data processing pipelines, which include data management and analysis. We introduce data systems for data profiling, repairing inconsistencies in the data, and for analyzing data in the presence of these inconsistencies. We explore system design for turning large scale semistructured and even unstructured data into actionable insights. Students get an experience with big data analysis tools, data stream processing, distributed data platforms, NoSQL and NewSQL technologies.

EECS6421 3.0 Advanced Database Systems This course provides an introduction to and an in-depth study on several new developments in database systems and intelligent information systems. Topics include internet databases, data warehousing and OLAP, object-relational, object-oriented, and deductive databases. Degree credit exclusion: CSE5411 3.0

EECS6422 3.0 Parallel and Distributed Computing This course investigates fundamental problems in writing efficient and scalable parallel and distributed applications with an emphasis on operating systems support and performance evaluation techniques.

EECS6423 3.0 Parallel Computing on Networks of Workstations The advent of high-speed low-cost networks is making clusters of workstations attractive as a platform for parallel computing. This course investigates strategies for exploiting parallelism on workstation clusters, with an emphasis on distributed shared memory (DSM). The course discussion will center on fundamental DSM issues such as cache coherence and memory consistency. Students will study some of the key work in this area, and learn how to build a distributed shared memory system. The course will involve implementation work on an actual DSM system running on a cluster of workstations, and weekly readings of selected papers.

EECS6431 3.0 Software Re-Engineering Industrial software systems are usually large and complex, while knowledge of their structure is either lost or inadequately documented. This course presents techniques that aid the comprehension and design recovery of large software systems.

EECS6432 3.0 Adaptive Software Systems Adaptive software systems are software systems that change their behaviour and structure to cope with changes in environmental conditions or user requirements. This course covers basic and advanced concepts in engineering adaptive systems and has a special focus on self-optimization.

EECS6444 3.0 Mining Software Engineering Data to Support the Development, Testing and Maintenance of Large Scale Software Systems Software engineering data (such as source code repositories, execution logs, performance counters, developer mailing lists and bug databases) contains a wealth of information about a project’s status and history. Applying data mining techniques on such data, researchers can gain an empirically based understanding of software development practices, and practitioners can better manage, maintain and evolve complex software projects.

EECS6445 3.0 Software Performance Engineering – Designing, Evaluating, and Optimizing the Performance of Large-Scale Software Systems Many large-scale software systems ranging from e-commerce websites (e.g., Amazon) to telecommunication infrastructures (e.g., AT&T) must support concurrent access from millions of users. Studies show that many field problems of these systems are performance-related, rather than feature bugs. The objective of this course is to provide an overview of the state-of-the-art techniques in the area of software performance engineering.

EECS6446 3.0 Analytical Performance Modeling and Design of Computing Systems In distributed systems, one can choose from a variety of load balancing policies, a wide range of migration policies, capacity provisioning schemes, power management policies, etc. Ideally, one would like to have answers to these questions before investing the time and money to build a system. This course introduces students to stochastic and queuing modelling to answer the above questions.

EECS 6448 3.00   Data Science for Requirements: From Mining Software Requirements to Planning Products The course focuses on data mining techniques and analytical models for eliciting, prioritizing, and planning software requirements and releases, along with the importance of non-functional requirements, requirements change and reuse. The course provides examples by referring to the state of the art and state of the practice for mobile software applications. Prior background in software design and requirements is recommended.

EECS6502 3.0 Computational Aspects of VLSI This course is on the automated design of VLSI systems and application algorithms. It covers the Mead-Conway VLSI design methodology; area-time trade-offs for VLSI-oriented computation; layout algorithms; parallel network models, such as hypercube, shuffle exchange and mesh-of-trees; systolic algorithms; VLSI design tools, such as circuit extraction, design rule checking, placement and routing.
EECS5610 3.0 Microfabrication Processing Technology This course will teach students the basic principles and modern trends of how microscale devices and systems are fabricated such as CMOS transistors or microelectromechanical systems (MEMS). The main topics will be: (i) cleanrooms, (ii) silicon as the starting material, (iii) lithography focusing on photolithography, (iv) dry and wet etching, (v) thermal oxidation, (vi) doping by diffusion and ion implantation, (vii) physical vapour deposition (PVD) including evaporation and sputtering, (viii) chemical vapour deposition (CVD), (ix) back-end and metallization for contacts and interconnects, and (x) process integration. The students will use process simulation software to model microfabrication processes.

EECS5611 3.0 Analog Integrated Circuit Design This course presents analog circuit principles for the analysis and design of high-performance circuits in modern technologies. Its techniques enable the realization of wide-band amplifiers, low-noise amplifiers, operational amplifiers, and feedback amplifiers. Advanced computer simulation and physical layout are presented. Integrated with the undergraduate course LE/EECS 4611 3.00.

EECS5612 3.0 Digital Very Large Scale Integration A course on modern aspects of VLSI CMOS chips. Key elements of complex digital system design are presented including design automation, nanoscale MOS fundamentals, CMOS combinational and sequential logic design, datapath and control system design, memories, testing, packaging, I/O, scalability, reliability, and IC design economics.

EECS5626 3.0 High Voltage Engineering This course covers the fundamentals of high-voltage engineering and the associated phenomena. The methods for generation and measurements of high voltage ac, dc, and impulse voltages are presented. The high-voltage electromagnetic fields and the impacts on the insulation system design are also described. Furthermore, the practical tests for insulation performance evaluation and some applications of high-voltage engineering in the construction and operation of high voltage AC and DC grids are discussed.

EECS5640 3.0 Medical Imaging Techniques: Principles and Applications This course introduces principles of medical imaging, focusing on major imaging modalities including ultrasound, X-ray radiography, computed tomography, magnetic resonance imaging, and nuclear medicine imaging. The course covers the physics and engineering aspects of how various imaging signals are acquired and processed in order to form medically useful images. The course also covers the essentials of medical image analysis.

EECS6504 3.0 Advanced Wireless Networks: Performance Modeling and Optimization This course will cover the fundamental concepts of the key technological advancements in the Physical (PHY) and Medium Access (MAC) layer of modern wireless networks as well as their performance modelling using a variety of tools from stochastic and optimization theory.

EECS6505 3.0 Physical and Systems Design Issues in ASICs Designers of modern very large-scale integrated (VLSI) systems face the conflicting pressure of realizing application-specific integrated circuits (ASICs) with increasingly complex and varied functionality while subject to more demanding physical electronic constraints.  This design-centric course addresses critical issues in both of these aspects by giving students a hands-on opportunity to architect VLSI systems using modern CAD tools spanning both physical and systems design.  Topics include: high-speed/low-power circuit analysis and design strategies, interconnect, clock and power distribution, timing strategies, floor-planning and layout, synthesis and verification.

EECS6601 3.0 Nanoelectronics The sustained demand for increased memory and computational power has driven the physical size of electronic components to nanoscale dimensions. The need to investigate side effects and to find viable ways to manufacture at the nanoscale has also led to the discovery of new phenomena and functionality. This course covers electronic transport and other properties in nanoscale systems, devices, characterization and fabrication techniques. Topics to be covered include quantum confinement, quantum dots, nanowires, 2D electron gases, single-electron transistors, spintronic devices, electronic transport and optical properties, nanoscale materials, top-down and bottom-up fabrication approaches.

EECS6602 3.0 Printed Electronics Printed electronics is a novel microfabrication technology that promises to fabricate low-cost microelectronics on large-area, flexible substrates such as plastic or paper. Potential applications include RFID tags, bendable displays or wearable sensors. Students learn the fundamentals and recent developments in the field. Topics covered include printable materials, printing physics, various printing methods and printed devices. Prerequisite: EECS 3610 or equivalent.

EECS6606 3.0 Low Power ASIC Design This course introduces several important concepts and techniques in low power ASIC design. It covers VSLI design methodology, ASIC design flow, low power digital circuit design principles, timing closure in ASIC, power analysis, and power optimization. The student will have the opportunity to perform circuit design tasks using state-of-the-art EDA tools. The concepts are enhanced through readings and projects.

EECS6611 3.0 Mixed-Signal Microsystems Design This course highlights the design and analysis of major mixed-signal microsystems and their building blocks. Topics include an introduction to design and analysis of switched-capacitor circuits, sampling circuits and architectures, comparators, continuous-time and discrete-time active filters, fundamentals of digital-to-analog and analog-to-digital data conversion, Nyquist-rate, multi-step, pipeline, and oversampled A/D architectures.

EECS6613 3.0 Advanced Analog Integrated Circuit Design This course presents principles of advanced analog and mixed-signal integrated circuits and discusses hand analysis, simulation, and characterization techniques for them. It includes subjects such as metal-oxide-semiconductor (MOS) transistor models for analog design, principles of random electronic noise, low-noise amplifier design, amplifiers stability and settling time, comparators, offset cancellation, wide-swing current references, bandgap reference, sampling circuits, and analog scaling.

EECS6701 3.0 High-Frequency Power Electric Converters This course discusses the fundamentals of loss-less switching techniques in high-frequency power converters: zero-voltage switching and zero-current switching.  The course then focuses on various resonant converter topologies and soft-switching converters with auxiliary storage elements.  The course then discusses various control techniques used in high-frequency power converters. Special emphasis is placed on the design techniques using practical examples.

EECS6704 3.0 Smart Distributed Grids The following topics are covered: introduction to electric power distribution system structure and components; concept of distributed and renewable energy resources (DG); distribution system load/DG characteristics and modelling; integration of DG in power flow analysis; voltage and reactive power planning and control with consideration of DG; self-healing mechanisms; microgrids concept, planning, operation, and energy management.

EECS6705 3.0 Power System Transients Electromagnetic-transient modelling of power systems is of the most crucial requirements for many power system studies and engineering practices. This course covers fundamentals of transient phenomena such as lightning, faults, switching, and discusses the principles of protecting power system equipment from transient overvoltages. Electromagnetic transient models of power equipment are presented and advanced modelling features are discussed.

EECS6707 3.0 Power System Protection 
This is an introductory course on power system protection. The topics include fault analysis of power grids, the role of protection systems in power grids, different types of overcurrent relays and corresponding coordination strategies, impedance-based protection for transmission lines, differential protection for transformers, buses, machines, and lines, application of computer simulation for protection studies.

EECS6801 3.0 Advanced Microelectronic Biochips This course offers an introduction to Biochips.  This course takes a multi-path approach: micro-fabrication techniques, microelectronic design and implementation of bio-interfaces offering a vital contemporary view of a wide range of integrated circuits and systems for electrical, magnetic, optical and mechanical sensing and actuating devices and much more; classical knowledge of biology, biochemistry as well as micro-fluidics.  The coverage is both practical and in-depth integrating experimental, theoretical and simulation examples.

EECS6802 3.0 Implantable Biomedical Microsystems This course provides an introduction to implantable biomedical microsystems, their design, and their applications. Engineering design, implementation, and test of a wide variety of biomedical implants are discussed. This includes system-level and architectural design, circuit design (analog and mixed-signal, generic/application-specific), wireless interfacing (power and bidirectional data telemetry), hardware-embedded biological signal processing, design & implementation of non-circuit modules such as microelectrode arrays.

EECS6803 3.0 Micro-fluidics for Cellular and Molecular Biology This course offers an introduction to microfluidics for life science applications.  This course offers a unique opportunity to all science, health and engineering students to learn the fundamentals of micro-fluidic technologies for a variety of cellular and molecular applications.  The coverage is both practical and in-depth integrating experimental, theoretical and simulation examples.

EECS6808 3.0 Engineering Optimization This course introduces classical and modern optimization techniques to solve engineering analysis and design problems. Students will learn how to formulate single- and multi-variable engineering problems as optimization problems and how to solve such problems using appropriate optimization techniques. The details of specific techniques required to solve the formulated problems will be discussed from theory and application points of view.
EECS6000 MSc Thesis Research

EECS6001 MSc Project Research

EECS6002 3.0 Directed Reading

EECS6004 3.0 MASc Thesis Research

EECS7000 PhD Dissertation