Courses

Hardware Oriented Courses

ELEC 423 - DIGITAL INTEGRATED CIRCUITS

This course introduces students to the analysis and design of digital integrated circuits. We look at how CMOS devices are fabricated and how they operate physically, as well as how to design high-performance and low-power circuits. Various types of memory devices and designs are also covered in the course.

ELEC 442 - INTRODUCTION TO ANALOG INTEGRATED CIRCUITS

There has been growing interest in analog computing in both academia and industry in the era of artificial intelligence. This course provides a comprehensive introduction to various aspects of modern analog integrated circuits. Students will learn how to 1) analyze, simulate and design a complementary metal oxide semiconductor (CMOS) analog integrated circuit, 2) analyze and simulate elementary transistor stages, current mirrors, supply- and temperature-independent bias and reference circuits, and 3) explore performance evaluation using computer-aided design tools.

ELEC 521 - ADVANCED DIGITAL INTEGRATED CIRCUITS DESIGN

The course addresses advanced issues in custom digital IC design. Topics range from physical-level analysis and modeling of new devices, interconnect, and power supply, to circuit-level design techniques for low power and high performance, to application-oriented digital circuits/systems for security and machine learning.

ELEC 522 - ADVANCED VLSI DESIGN

Design and analysis of algorithm-specific VLSI processor architectures. Topics include the implementation of pipelined and systolic processor arrays. Techniques for mapping numerical algorithms onto custom processor arrays. Course includes design project using high-level VLSI synthesis tools.

ELEC 526 - HIGH PERFORMANCE COMPUTER ARCHITECTURE

A study of VLSI technology and design. MOS devices, Characteristics and fabrication. Logic design and implementation. VLSI design methodology, circuit simulation and verification. Additional course work required beyond the undergraduate course requirement.

ELEC 527 - VLSI SYSTEMS DESIGN

Design of high performance computer systems, including shared-memory and message-passing multiprocessors and vector systems. Hardware and software techniques to tolerate and reduce memory and communication latency. Case studies and performance simulation of high-performance systems.

ELEC 554 - COMPUTER SYSTEMS ARCHITECTURE

Evolution of key architecture concepts found in advanced uniprocessor systems. Fundamental and advanced pipelining techniques and associated issues for improving processor performance. Illustrated with RISC processors such as the ARM processor. Examine several metrics for processor performance, such as Amdahl’s law. Key concepts of data and program memory systems found in modern systems with memory hierarchies and cashes. Perform experiments in cache performance analysis. Influence of technology trends, such as Moore’s law, on processor implementation Approaches for exploiting instruction level parallelism, such as VLIW. Introduction to parallel and multicore architectures. Introduction to processor architectures targeted for imbedded applications.Additional coursework required beyond the undergraduate course requirements.

System Oriented Courses

ELEC 512 - GRADUATE DESIGN AND ANALYSIS OF ALGORITHMS

Methods for designing and analyzing computer algorithms and data structures. The focus of this course will be on the theoretical and mathematical aspects of algorithms and data structures.

ELEC 513 - COMPLEXITY IN MODERN SYSTEMS

A modern computer is a system with enormous complexity in both software and hardware. The course presents the principles for managing such complexity using examples from modern computing systems. It covers emergent issues from system complexity such as energy efficiency, bug finding, and heterogeneous hardware. It also covers designing experiments and writing systems papers.

ELEC 552 - OPERATING SYSTEMS AND CONCURRENT PROGRAMMING

Introduction to the design, construction, and analysis of concurrent programs with an emphasis on operating systems, including filing systems, schedulers, and memory allocators. Specific attention is devoted to process synchronization and communication within concurrent programs. Additional coursework required beyond the undergraduate course requirements.

ELEC 553 - MOBILE AND EMBEDDED SYSTEM DESIGN AND APPLICATION

ELEC 553 introduces mobile and embedded system design and applications to students and provides them hands-on design experience. It consists of three interlearning parts: lectures, student project, and student presentations. Additional coursework required beyond the undergraduate course requirements.

ELEC 554 - COMPUTER SYSTEMS ARCHITECTURE

Evolution of key architecture concepts found in advanced uniprocessor systems. Fundamental and advanced pipelining techniques and associated issues for improving processor performance. Illustrated with RISC processors such as the ARM processor. Examine several metrics for processor performance, such as Amdahl’s law. Key concepts of data and program memory systems found in modern systems with memory hierarchies and cashes. Perform experiments in cache performance analysis. Influence of technology trends, such as Moore’s law, on processor implementation Approaches for exploiting instruction level parallelism, such as VLIW. Introduction to parallel and multicore architectures. Introduction to processor architectures targeted for imbedded applications.Additional coursework required beyond the undergraduate course requirements.

ELEC 556 - INTRODUCTION TO COMPUTER NETWORKS

Network architectures, algorithms, and protocols. Local- and Wide-area networking. Intra- and inter-domain routing. Transmission reliability. Flow and congestion control. TCP/IP. Multicast. Quality of Service. Network Security - Networked applications. Additional coursework required beyond the undergraduate course requirements.

Algorithm Hardware Co-design

ELEC 515 - MACHINE LEARNING FOR RESOURCE-CONSTRAINED

Machine learning is in tremendous demand in numerous applications; however, its often prohibitive complexity remains a major challenge for its extensive deployment in resource constrained platforms. This course will introduce techniques which enable the development of energy/time efficient machine learning systems, taking a path from algorithm to architecture down to the circuit level. In particular, you will first learn commonly used machine learning algorithms, and then algorithm-, architecture-, circuit-level techniques for reducing the energy/time cost of machine learning systems while maintaining their powerful performance. Finally, we will do a deep dive into state-of-the-art efficient machine learning systems, such as Google's TPU and Eyeriss.