Bachelor's

Computer Engineering

Where Silicon Meets Code

Computer Engineering is the discipline at the intersection of hardware and software that designs and engineers computer systems from digital circuits, through compilers and runtime systems, to networking and world-wide distributed systems. As an engineering discipline, the computer engineer must appreciate the physical aspects of computations (energy, delay, area, reliability, costs) and be able to expertly navigate the multidimensional tradeoff space associated with implementing computations. Computer Engineering is a natural path for students interested in embedded and real-time systems, consumer electronics, or computer system design.

By the Numbers

  • $120,000 The median starting salary for CMPE graduates
  • 2:1 Ratio of undergraduates to faculty

Our Expert Faculty

Our faculty members are dedicated to building up the next generation of engineers. In addition to being incredible mentors, they’re leading experts and researchers in their fields.

Andre DeHon, Boileau Professor of Electrical Engineering, Computer and Information Science, Electrical and Systems Engineering

Andre DeHon

Boileau Professor of Electrical Engineering
Computer and Information Science, Electrical and Systems Engineering
View Profile
Professor Computer and Benjamin Lee, Professor, Computer and Information Science, Electrical and Systems Engineering

Ben Lee

Professor
Computer and Information Science, (CIS) Electrical and Systems Engineering (ESE)
Associate Department Chair, ESE
View Profile

Signature Courses

You know how to program, but do you know how computers really work? How do millions of transistors come together to form a complete computing system? This bottom-up course begins with transistors and simple computer hardware structures, continues with low-level programming using primitive machine instructions, and finishes with an introduction to the C programming language. This course is a broad introduction to all aspects of computer systems architecture.

An embedded system is the product of a marriage between hardware and software. Embedded systems have become ubiquitous in the modern world – from simple temperature-controlled kettles to intricate smartwatches with many functions squeezed into a tiny package to complex rovers for space exploration. This course introduces the theory and practice of developing embedded systems by exploring modern microcontroller architectures. It culminates in a final project where students have the opportunity to synthesize and apply their knowledge in a project of their design.

In this course, we plan to further develop the model of a computer to a model that includes handling multiple programs (and multiple operating systems) running at the same time. A big component of this is seeing how shared resources are allocated and protected across programs. More directly speaking, we plan to go over the following topics: System Calls, Process Management, Virtual Memory Management, Threads, Scheduling, File Systems, Device Drivers, Synchronization, Deadlocks, and Virtualization.

Motivation, design, programming, optimization, and use of modern System-on-a-Chip (SoC) architectures. Hands-on coverage of the breadth of computer engineering within the context of SoC platforms from gates to application software, including on-chip memories and communication networks, I/O interfacing, RTL design of accelerators, processors, concurrency, firmware and OS/infrastructure software. Formulating parallel decompositions, hardware and software solutions, hardware/software trade offs, and hardware/software codesign.

You’re Ready to Take the Next Step.