Computer Engineering (COMP_ENG)

COMP_ENG 203-0 Introduction to Computer Engineering (1 Unit)   Overview of computer engineering design. Number systems and Boolean algebra. CMOS and logic gates. Design of combinational circuits and simplification. Decoders, multiplexers, adders. Sequential logic and flip flops. Introduction to assembly language.

COMP_ENG 205-0 Fundamentals of Computer System Software (1 Unit)   Basics of assembly language programming. Macros. System stack and procedure calls. Techniques for writing assembly language programs. Features of Intel x86 architecture. Interfaces between C and assembly codes. Prerequisite: COMP_SCI 111-0 or GEN_ENG 205-1; COMP_ENG 203-0 recommended.

COMP_ENG 295-0 Special Topics in Computer Engineering (1 Unit)   Topics suggested by students or faculty and approved by the department.

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 Microprocessor System Design (1 Unit)  

Structure and timing of typical microprocessors. Sample microprocessor families. Memories, UARTS, timer/counters, serial devices, and related devices. MUX and related control structures for building systems. Standard bus structures. Interrupt programming. 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 364-0 CyberPhysical 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 365-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 366-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.

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 399-0 Projects (1 Unit)   Seminar and projects for advanced undergraduates on subjects of current interest in electrical and computer engineering.