ECS 154A Computer Architecture


Lecture: 3 hours
Discussion: 1 hour

Catalog Description:
Introduction to digital design. Interrupts and interconnection hardware. Caching and memory hierarchy design. Hardware support for operating systems software (virtual memory).

Prerequisites: Course 50 or EEC 70

Credit restrictions /cross listings: Only one unit of credit allowed for students who have taken Electrical and Computer Engineering 170.

Summary of course contents

  1. Combinational and Sequential Digital Design
    Boolean algebra, gates. Commonly used MSI circuits such as multiplexers and decoders. Simple arithmetic circuits. Latches and flip-flops. Finite state machine design. Use of simple digital design simulation software to aid in hierarchical system development.
  1. Interrupts and Interconnection hardware
    Hardware interrupts. Synchronous and asynchronous buses. Bus arbitration.
  1. Memory
    Types of memory. Decoding of system-level to chip-level addresses. Caches and the memory hierarchy
  1. Hardware for Support of Operating Systems
    Hardware support to optimize resource usage, and to implement the abstraction of a separate machine for each user. Design and use of memory-management hardware, either within-CPU or via separate MMU, to support efficient and convenient OS memory allocation.

Goals: Students will (1) learn the foundational concepts of digital design; (2) gain a more detailed understanding of memory and the memory hierarchy; and (3) become more familiar with hardware support for operating systems software.

Illustrative reading

  • David Patterson and John Hennessy. Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann, 2011.
  • Stephen Brown, Fundamentals of Digital Logic Custom, McGraw-Hill, 2000.

Computer Usage:
Extensive programming and digital design simulation assignments.

Engineering Design Statement:
Students in the course write sophisticated, systems-level programs according to their own design. They also do extensive development of digital circuitry (via a simulator), again according to their own design, and analyze the performance of such circuitry.

ABET Category Content:
Engineering Science: 2 units
Engineering Design: 2 units

GE3: Science & Engineering

Overlap: Substantial overlap with EEC 170, but large student demand justifies the overlap in content.

Instructors: S. Davis, M. Farrens, and D. Ghosal

History: Reviewed by M. Farrens (2012.10.26): updated the catalog description and course contents (previously omitted from ICMS); updated instructor list; moved credit restriction to proper place on ICMS; described course overlap with EEC 170; dropped ECS 60 prerequisite. Pre-electronic CAF; added to archive 2007.06.20. Course description dates to November 1996 (M. Farrens, N. Matloff, and R. Olsson).




an ability to apply knowledge of mathematics, science, computing, and engineering



an ability to design and conduct experiments, as well as to analyze and interpret data



an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability



an ability to function on multi-disciplinary teams



an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions



an understanding of professional, ethical, legal, security and social issues and responsibilities



an ability to communicate effectively with a range of audiences



the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context



a recognition of the need for, and an ability to engage in life-long learning



knowledge of contemporary issues



an ability to use current techniques, skills, and tools necessary for computing and engineering practice



an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices



an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity