To introduce students to theoretical and practical concepts relevant to the structure and design of modern digital computers. The course covers computer architecture from gate-level logic through processor design to multiprocessor and network issues.
CS 251 is a required course for most CS major academic plans and is normally taken in the 2A term.
Prerequisites: CS 134 or 136 or 145; Computer Science students only.
Corequisites: CS 241 is recommended.
Antirequisites: ECE 222, PHYS 353, SE 141.
Successors: CS 246, 350, 343, 450. Recommended for CS 452, 454.
Computer Organization and Design, 4th ed. by D. Patterson and J. Hennessy, Morgan Kaufmann, 2004. Course notes are required.
3 hours of lectures per week. Normally available in Fall, Winter and Spring.
Overview of computer organization. Measuring performance.
Gates, truth tables, and logic equations. Combinational logic and basic components. PLAs and ROMs. Memory elements. Finite state machines.
Signed and unsigned numbers. Addition and subtraction. ALUs. Multiplication. Floating point representation.
Datapaths. Single-cycle control. Multi-cycle control. Microprogramming.
Pipelined datapaths. Data hazards. Branch hazards.
Caches: direct-mapped, fully-associative, set-associative. Virtual memory. Page tables and TLBs.
Single-bus networks. Cache consistency. Networks and clusters.

David R. Cheriton School of Computer Science
University of Waterloo
Waterloo, Ontario, Canada N2L 3G1
Tel: 519-888-4567 x33293
Fax: 519-885-1208
Contact | Feedback: cs-uops@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics