ESCE 421: Embedded Systems

An embedded system is any computer system embedded in a larger product for the purpose of monitoring or controlling some part of the larger system. Embedded systems, unlike general-purpose computer systems, are highly optimized to deliver the best application-specific performance possible under a wide and varying set of constraints. In this course, we cover the basic elements of embedded system design, including system specification and modeling, the components of embedded hardware and software, and techniques for system validation, evaluation, and optimization. The goal of this course is to familiarize students with each of these aspects of embedded system design and both their relationship with one another and with design and optimization as a whole.


ECSE 425: Computer Organization and Architecture

Computer architecture is the science and art of selecting and interconnecting hardware components to create a computer that meets myriad goals, including functionality, performance, cost, power and reliability requirements. In this course, we cover the principles of computer design, pipelining, superscalar and out-of-order execution, memory hierarchy, and multiprocessor architecture. Students are exposed to the importance of locality, parallelism and techniques for exploiting it at different levels, and various design trade-offs, including cost, power and reliability will be considered. The goal of this course is to familiarize students with these architectural concepts and techniques and give students the tools to quantitatively compare the performance of computers that employ them.


ECSE 548: Introduction to VLSI Design

Though the design of modern integrated circuits is largely automated today, critical paths, circuits and systems are stilled designed by hand in order to meet performance, power, or densities requirements in today’s highly competitive semiconductor market. In this course, we cover the theory behind and principles of VLSI design, including (a) MOS transistor theory, (b) IC delay and power, (c) IC simulation, (d) combinatorial and sequential circuit design, (e) IC testing, (f) IC interconnect, (g) scaling, variability, and reliability, and (h) datapath, array, and special purpose subsystems. Through practical lab assignments and a project and theoretical homework assignments, students learn how perform hierarchical VLSI design in the context of the challenges that drive and constrain design today.