Computer Engineering (CPE) - Courses

Courses

CPE 105 Cr.1

Introduction to the Computing Environment

This course introduces students to the use of the UNIX/Linux environment for file and process management, programming workflow, and the automation of computing tasks. The ethical responsibilities of shared computing resources are emphasized. Offered Fall.

CPE 212 Cr.3

Digital Logic

This course is an introduction to the fundamentals of digital logic circuit analysis and design. Basic Boolean logic primitives are introduced and described in truth tables, schematics and Boolean expressions. Combinational logic circuits are minimized with DeMorgan's Law and Karnaugh Maps. Level-sensitive and edge-triggered sequential logic elements are used as building blocks for finite state machines. Circuits are simulated using a structural hardware description language. Prerequisite: CS 120; concurrent enrollment in CS 270. Offered Spring.

CPE 309 Cr.3

Systems Development

This course is an introduction to systems programming and the UNIX/Linux user-space interface to the operating system. Low-level C programming constructs are discussed and used to write efficient and robust systems code. The various tools used in file inspection, systems development and maintaining a portable build environment are also examined. Prerequisite: CPE 105; CS 270. Offered Fall.

CPE 321 Cr.3

Introduction to Digital Signal Processing

This course is an introduction to the fundamentals of digital signals and systems. Various representations for discrete time signals will be introduced. Students will learn sampling theory, aliasing and reconstruction. The Discrete Fourier Transform will be used to determine the frequency content of signals. Linear time-invariance will be introduced and used as a basis for developing complex systems. Prerequisite: MTH 309; PHY 334. Offered Spring.

CPE 395 Cr.1-3

Independent Study

Individualized study of topics in Computer Engineering not covered by courses regularly taught in the department. Repeatable for credit - maximum six. Prerequisite: junior standing. Offered Fall, Spring, Summer.

CPE 406 Cr.3

Architecture of Parallel Systems

This course covers the fundamental architectural requirements of parallel computer systems. Students will study the programming models used in parallel code and the assumptions made by parallel programmers for various programming models. The course then explores the underlying architectural decisions that can be made and how they either support or violate the assumptions of these parallel programming models. Topics include cache coherence, cache consistency, and processor interconnect. Prerequisite: CS 441. Offered Occasionally.

CPE 419 Cr.1-3

Topics in Computer Engineering

A special topics course in computer engineering that will function as a forum for new ideas and testing ground for new courses. Repeatable for credit - maximum six. Prerequisite: junior standing. Offered Occasionally.

CPE 420 Cr.3

Digital Design

This course covers the design and implementation of large, complex digital systems. Students will describe designs with fully-synthesizable, behavioral Verilog. The efficiency of designs will be analyzed for bottlenecks that can be solved with architectural and/or implementation optimizations. Emphasis will be placed on the test of systems. Functional testing will include the use of simulation test benches with calls to high-level languages. Prerequisite: CPE 212; CS 370. Offered Occasionally.

CPE 446 Cr.3

ASIC Design

This is a course in digital ASIC design, including a deeper insight into the design of high-performance and power-efficient CMOS circuits. The parasitics inherent to MOSFETs are used as a basis for transistor sizing. Techniques for estimating wire loads are discussed. CMOS circuits will implement cells of arbitrary digital logic functions for both static and dynamic logic. Prerequisite: CPE 212; CS 370; PHY 335. Offered Occasionally.

CPE 463 Cr.3

Advanced Computer Architecture

In this course in modern computer architecture, students will study advanced techniques for extracting instruction-level parallelism from single-threaded programs. The in-order superscalar execution model will be introduced, and then extended to include the out-of-order execution model in two forms - Tomasulo's algorithm and the MIPS R10k architecture. Students will be introduced to branch prediction and prefetching as mechanisms for alleviating bottlenecks in all processor models. Prerequisite: CS 370. Offered Occasionally.

CPE 466 Cr.3

Code Generation and Optimization

This course studies the algorithms used by a modern optimizing compiler for generating efficient, high-performance program executables that still maintain correct program semantics. The course uses the compiler intermediate representation as a starting point for a variety of code transformations necessary for local and global optimizations, profile-guided optimizations, constructing large optimization regions, register allocation, and instruction scheduling. Prerequisite: CS 370. Offered Occasionally.

CPE 478 Cr.3

Virtual Machines

This course explores the design of virtual machines and their related systems. Students will study efficient emulation of user-level programs, both within the same instruction set as the host machine, as well as across instruction sets. System-level considerations will be introduced to expand the reach of possible virtualization strategies. Both hardware and software techniques for efficient virtualization will be employed. Prerequisite: CPE 309; CS 441. Offered Spring.

CPE 481 Cr.1

Professionalism in Engineering

This course surveys issues related to the professional responsibility in engineering careers. Guidance in ethical decision-making and where to find assistance in navigating ethical dilemma are discussed. The importance of professional societies and their codes of conduct are emphasized. Students will recognize the importance of, and strategies to engage in, life-long learning within their field. Prerequisite: junior standing. Offered Spring.

CPE 483 Cr.1

Engineering Project Management

This course is an introduction to the issues relevant to managing engineering projects. Topics include effective group organization, decision making, time and cost estimation, progress tracking, defect tracking, conflict resolution and leadership. Additional topics may include case studies in management strategies, tools for managing products and projects, and process improvement techniques. Prerequisite: STAT 245; junior standing. Offered Fall.

CPE 498 Cr.2

Senior Capstone

This course is a major computer engineering group project that requires a detailed analysis of the problem domain, organization into groups, effective management, detailed design, implementation and demonstration. The project will be guided by a department faculty member with interests in computer engineering. Submission of a written project report is required, followed by an oral examination by the Project Evaluation Committee in the department. Repeatable for credit - maximum four. Prerequisite: senior standing. Pass/Fail grading. Offered Fall, Spring.

CPE 499 Cr.1-3

Research in Computer Engineering

This course is an opportunity to become acquainted with literature in the computer engineering field and to work on a professional level research project within an area of interest of the computer engineering faculty. A seminar reviewing the results of the study will be a requirement for completion of the course. Repeatable for credit - maximum six. Prerequisite: junior standing. Consent of instructor. Offered Fall, Spring, Summer.