Computer Science Division

Course Title

CS 61C - Machine Structures

Abbreviated Course Title


Instructors in Charge

David Patterson, Professor; Michael Clancy, Senior Lecturer

Catalog Data

4 units; 3 hours lecture, 1 hour discussion section, 2 hours lab, average 5 hours self-scheduled programming laboratory. Offered fall, spring, and summer terms.


CS 61B.

Catalog Description

The internal organization and operation of digital computers. Machine architecture support for high level languages (logic, arithmetic, instruction sequencing) and operating systems (I/O, interrupts, memory management, process switching). Elements of compujter logic and CPU design. Pipelined architecture and other aspects of machine parallelism. Tradeoffs involved in fundamental architectural design decisions.

Expanded Description

CS 61C brings students through a series of abstractions from high-level programming through machine architecture to CPU design from fundamental logic components. The C programming language and MIPS assembly language are used to introduce the abstractions. The course closely follows the Patterson and Hennessy textbook supplemented by material on the C programming language. A sample week-by-week outline follows.

1Introduction, Number RepresentationP&H 1, 4.1–4.2
2, 3C programming language, memory managementK&R 1–4, 5.1–5.10
4Assembly language operations and control flowP&H 3.1, 3.2, 3.5
5Assembly language pointers, proceduresP&H 3.8–3.14
6Machine language representationP&H 3.4, 3.8
7Floating point representation/operationsP&H 4.8, 4.10, 4.12, 4.13
8Input/output, interruptsP&H 8.3, 8.5, 8.9
9Disk storage, NetworksP&H 8.3, 8.10
10Cache memory systemsP&H 7.1–7.3
11Virtual memoryP&H 7.4–7.7
12, 13Logic elements and circuitsP&H B, P&H 4.5
14CPU organizationP&H 5.1–5.3
15PipeliningP&H 6.1–6.2

Coursework will involve weekly two-hour in-laboratory exercises designed to help students develop skills needed for writing and debugging C and assembly language programs and for simulating hardware using hardware description languages (HDLs). Biweekly independent projects reinforce students' programming skills while reinforcing their understanding of machine architecture and implementation concepts. Sample projects include a machine language interpreter written in C, a cache simulator written in C, and a CPU simulator.


Patterson and Hennessy, Computer Organization and Design; Hardware/Software Interface,
third edition, Morgan Kaufmann, 2005.

Kernighan and Ritchie, The C Programming Language, second edition, Prentice-Hall, 1988.

February 2006