Computer Engineering

Degree Types: MS, PhD

Northwestern University’s Computer Engineering program is a joint program between the Department of Computer Science (CS) and the Department of Electrical and Computer Engineering (ECE), and offers programs leading to the MS and PhD degrees in Computer Engineering (CE). Computer Engineering covers a diverse set of areas including, but not limited to, integrated circuits/VLSI, computer architecture, computer systems, operating systems, compilers, data mining, high-performance and parallel computing, distributed computing, design automation, embedded systems, reconfigurable systems, mobile and wearable computing, internet of things, cyber-physical systems, real-time systems, and database systems.

The broad interdisciplinary interests of our faculty lead to strong collaborative research with other engineering and science departments, the Feinberg School of Medicine, national laboratories including Argonne National LaboratoryFermi National Accelerator Laboratory, Sandia National Laboratories and Oak Ridge National Laboratory, as well as industry.

When applying to the PhD or MS program, students should specify CE as the specific program which will represent their major field of study.

Additional resources:

Computer Engineering Courses

COMP_ENG 303-0 Advanced Digital Design (1 Unit)  

Overview of digital logic design. Technology review. Delays, timing in combinational and sequential circuits, CAD tools, arithmetic units such as ALUs and multipliers. Introduction to VHDL.

Prerequisite: COMP_ENG 203-0.

COMP_ENG 329-0 The Art of Multicore Concurrent Programming (1 Unit)  

Concurrency disciplines and practical programming techniques for multicore processors; synchronization primitives, mutual exclusion, foundation of shared memory, locking, non-blocking synchronization, and transactional memory.

Prerequisite: COMP_SCI 110-0 or COMP_SCI 111-0.

COMP_ENG 334-0 Fundamentals of Blockchains and Decentralization (1 Unit)  

This course is partly an introduction to the fundamentals of blockchains and decentralized applications and partly a springboard toward deeper understanding and further exploration. The course explains how blockchains work; teaches the underlying fundamentals of distributed consensus; provides hands-on experience through computer assignments; and also touches upon economic and policy issues.

Prerequisites: COMP_SCI 212-0 or ELEC_ENG 302-0 or equivalent or graduate standing and basic programming skills.

COMP_ENG 346-0 Microcontroller System Design (1 Unit)  

Design of hardware and software systems built around microcontrollers. Standard peripherals such as GPIO, timers, and analog inputs. Communication interfaces such as UART, I2C, and SPI. Sensors and device driver design, including interrupts, DMA, and synchronous versus asynchronous design choices. Embedded software development. Hardware/software design tradeoffs.

Prerequisites: COMP_SCI 211-0 and (COMP_ENG 205-0 or COMP_SCI 213-0).

COMP_ENG 347-1 Microprocessor Systems Project I (1 Unit)  

Design, prototype and test individual projects involving microprocessors and related devices such as PAL/FPGA and special purpose ICs. Embedded-system tools such as special purpose compilers and ICE (in-circuit emulation). Manufacturing issues such as PCB layout. Survey of microprocessor platforms. Part I deals with specification and design.

Prerequisite: COMP_ENG 346-0.

COMP_ENG 347-2 Microprocessor Systems Project II (1 Unit)  

Design, prototype and test individual projects involving microprocessors and related devices such as PAL/FPGA and special purpose ICs. Embedded-system tools such as special purpose compilers and ICE (in-circuit emulation). Manufacturing issues such as PCB layout. Survey of microprocessor platforms. Part II deals with implementation, testing, and documentation.

Prerequisite: COMP_ENG 347-1.

COMP_ENG 355-0 ASIC and FPGA Design (1 Unit)  

Overview of computer-aided design tool flow for ASIC and FPGA design. Synthesis from hardware description languages and creation of finite-state machines. Differences between FPGA and ASIC design flows. Exploration of concepts in several projects.

Prerequisite: COMP_ENG 303-0.

COMP_ENG 356-0 Introduction to Formal Specification & Verification (1 Unit)  

Introduction to formal techniques used for system specifications and verifications: temporal logic, set theory, proofs, and model checking. TLA+ (Temporal Logic of Actions) specifications. Safety and liveness properties. Real-time specs and verifications.

COMP_ENG 357-0 Design Automation in VLSI (1 Unit)  

VLSI physical design, including logic design, architectural design, and packaging. Development of CAD tools for VLSI physical design.

Prerequisites: COMP_SCI 214-0, COMP_ENG 303-0.

COMP_ENG 358-0 Introduction to Parallel Computing (1 Unit)  

Introduction to parallel computing for scientists and engineers. Shared-memory parallel architectures and programming, distributed memory, message-passing data-parallel architectures, and programming.

Prerequisite: COMP_SCI 211-0 or graduate standing.

COMP_ENG 361-0 Computer Architecture I (1 Unit)  

Design and understanding of the computer system as a whole unit. Performance evaluation and its role in computer system design; instruction set architecture design, data-path design and optimizations (e.g., ALU); control design; single cycle, multiple cycle, and pipeline implementations of processor. Hazard detection and forwarding; memory hierarchy design; cache memories, virtual memory, peripheral devices, and I/O.

Prerequisites: (COMP_ENG 205-0 or COMP_SCI 213-0) AND (COMP_ENG 303-0 or COMP_ENG 355-0).

COMP_ENG 362-0 Computer Architecture Projects (1 Unit)  

Quarter-long team project designing a processor for a complete instruction set. Involves ISA design, design of components, data-path, and control for a pipelined processor to implement the ISA. Use of industrial-strength design tools and VHDL as the design specification language. Designs are evaluated using benchmark programs for correctness and performance.

Prerequisite: COMP_ENG 361-0.

COMP_ENG 368-0 Programming Massively Parallel Processors with CUDA (1 Unit)  

A hands-on introduction to parallel programming and optimizations for 1000+ core GPU processors, their architecture, the CUDA programming model, and performance analysis. Students implement various optimizations in massively-parallel workloads on modern GPUs. May not receive credit for both COMP_ENG 368-0 and COMP_ENG 468-0.

Prerequisites: (COMP_SCI 213-0 and (COMP_SCI 211-0 or COMP_SCI 230-0)) or permission of instructor.

COMP_ENG 369-0 Introduction to Sensor Networks (1 Unit)  

Basic hardware and software platforms for sensor networks. Various algorithmic techniques for data routing, query processing, and tracking.

Prerequisite: COMP_SCI 343-0 or COMP_SCI 340-0.

COMP_ENG 387-0 Real-Time Digital Systems Design and Verification with FPGAs (1 Unit)  

This course covers the systematic design of real-time digital systems and verification techniques using field-programmable gate arrays (FPGAs) and presents a top-down design methodology where students learn how to translate software applications in high-level level languages (such as C/C++) into SystemVerilog models for FPGA architectures.

Prerequisite: COMP_ENG 303-0 and COMP_ENG 355-0.

COMP_ENG 391-0 CMOS VLSI Circuit Design (1 Unit)  

Design of modern CMOS very large-scale integrated (VLSI) circuits.

COMP_ENG 392-0 VLSI Systems Design Projects (1 Unit)  

Design of a cutting-edge VLSI chip. Teams of 5 to 10 students undertake a large circuit design problem, going from specification to VLSI implementation while optimizing for speed, area, and/or power. Group collaboration and engineering design.

Prerequisite: COMP_ENG 391-0 or COMP_ENG 355-0.

COMP_ENG 393-0 Advanced Low Power VLSI and Mixed-signal IC Design (1 Unit)  

This course provides an in-depth review of the advanced technology in integrated circuit design. Special focuses will be given to ultra-low power circuit design, error resilient circuit design, machine learning accelerators, power management circuits and basic design of analog mixed-signal circuit. Following a seminar format, detailed case study on circuit design techniques used by Intel, IBM, etc. will be discussed.

COMP_ENG 395-0 Special Topics in Computer Engineering (1 Unit)  

Topics suggested by students or faculty and approved by the department.

COMP_ENG 452-0 Adv Computer Architecture (1 Unit)  

Design and evaluation of modern uniprocessor computing systems. Evaluation of methodology/metrics and caveats, instruction set design, advanced pipelining, instruction level parallelism, prediction-based techniques, alternative architectures (VLIW, Vector and SIMD), memory hierarchy design and I/O. Case studies.

Prerequisites: COMP_ENG 361-0.

COMP_ENG 453-0 Parallel Architectures (1 Unit)  

Parallel computer architecture and programming models. Design issues for shared memory multiprocessors including scalability, synchronization, memory consistency, and cache coherence. Memory hierarchy and on-chip network design.

Prerequisites: COMP_ENG 361-0 or permission of instructor.

COMP_ENG 456-0 Modern Topics in Computer Architecture (1 Unit)  

Covers advanced contemporary topics in computer architecture. Content is drawn from recent and seminal publications across a wide range of topics, including quantum and neuromorphic computing, space-time computing, silicon photonics in computer architectures, advanced memory systems, energy and power efficiency. Topics vary across offerings as the field evolves.

Prerequisites: COMP_ENG 361-0 or permission of instructor.

COMP_ENG 459-0 VLSI Algorithmics (1 Unit)  

Design and analysis of algorithms for VLSI synthesis problems. Study both theoretical and practical aspects of CAD-tool development in VLSI environments.

Prerequisites: COMP_SCI 336-0.

COMP_ENG 464-0 Cyber-Physical Systems Design and Application (1 Unit)  

This course will introduce trends and challenges of modern cyber-physical systems, and review state-of-the-art design paradigms and tools in academia and industry. It will introduce fundamental concepts in the modeling of cyber-physical systems, important models of computation such as dataflow, state machine, and synchronous-reactive semantics, real-time embedded architectures, and synthesis methodologies for generating efficient, correct, and predictable implementations.

COMP_ENG 465-0 Internet-of-things Sensors, Systems, And Applications (1 Unit)  

In-depth review of advanced technology surrounding the Internet-of-Things; including wireless sensing networks, wearables, drones, privacy, machine learning, and energy-efficient computing. Application domains in health, infrastructure monitoring, green computing and others are explored. Following a seminar format with alongside exploration of new research areas through a project proposal.

COMP_ENG 466-0 Embedded Systems (1 Unit)  

Introduction to the design and evaluation of embedded systems, with emphasis on the system-level aspects of embedded systems. Topics include modeling (models of computation and models of communication), survey of embedded system hardware, software and operating system issues specific to embedded system design, mapping specifications to hardware, and testing and evaluation of embedded systems.

Prerequisites: Senior or graduate standing in Computer Science or Computer Engineering.

COMP_ENG 468-0 Programming Massively Parallel Processors with CUDA (1 Unit)  

A hands-on introduction to parallel programming and optimizations for 1000+ core processors (GPGPUs), their architecture, the CUDA programming model, and performance analysis. Students implement various optimizations on massively-parallel workloads on modern GPUs. Requires quarter-long parallel programming project using CUDA. May not receive credit for both COMP_ENG 368-0 and COMP_ENG 468-0.

Prerequisites: (COMP_SCI 213-0 and (COMP_SCI 211-0 or COMP_SCI 230-0)) or permission of instructor.

COMP_ENG 493-0 Advanced Low Power VLSI and Mixed-signal IC Design (1 Unit)  

This course provides an in-depth review of the advanced technology in integrated circuit design.  Special focuses will be given to ultra-low power circuit design, error resilient circuit design, machine learning accelerators, power management circuits and basic design of analog mixed-signal circuit.  Following a seminar format, detailed case study on circuit design techniques used by Intel, IBM, etc. will be discussed.

COMP_ENG 495-0 Special Topics in Computer Engineering (1 Unit)  

COMP_ENG 499-0 Projects (1 Unit)  

Special projects carried out under faculty direction. Permission of instructor and department required.

COMP_ENG 510-0 Seminar (1 Unit)  

Seminar on topics of current interest.

COMP_ENG 590-0 Research (1-4 Units)  

Independent investigation of selected problems pertaining to thesis or dissertation. May be repeated for credit.