Computer Organization

Location, Time
Instructor: Xuhao Chen
Office Hours: Time, Location

Course Description

This course is an introduction to how a computer system works.


Students taking this course should be familiar with C programming.


Your final grade will be determined by your performance on:

for a total of 200 points. In addition, you must complete all the labs to pass the course. A missing lab will result in a failing grade. Each lab will specify which sections of that lab must be completed to receive credit for that lab. Note that to receive full credit for the lab, you must complete the entire lab including the optional partions of the lab.

Quizzes: The three quizzes together will be worth 90 points, or 45%, of your grade. The questions on the quizzes will primarily resemble tutorial problems, so regular attendance in recitations and completion of the tutorial problems will help you be prepared for the quizzes. There may also be some questions more closely related to your lab assignments on the quizzes.

Labs: There are seven labs worth a total of 80 points. Point values for each lab will be associated with the difficulty of each lab. Labs are tightly integrated with the course material and also build on each other. Most of these labs use the Minispec hardware description language and toolchain. You must complete at least the minimum specified requirement for each lab in order to pass the class. You may submit your labs multiple times. Our grading system will automatically use the highest score.

Design Project: At the end of the semester we will release an open-ended design project worth 20 points.

Textbook (Optional)

Computer Organization and Design: The Hardware Software Interface, RISC-V Edition, David A. Patterson and John L. Hennessy, Morgan Kaufmann, 1st ed., 2017.


Digital Design: A Systems Approach, William J. Dally and R. Curtis Harting, Cambridge University Press, 1st ed., 2012.

Schedule and Slides

L1: Introduction and Binary Representation [pdf] [lecture questions] [video] [worksheet] [solutions]

L2: Introduction to Assembly and RISC-V [pdf] [lecture questions] [video] [worksheet] [solutions]

L3: Compilation and Procedures [pdf] [lecture questions] [video] [worksheet] [solutions]

L4: Procedures, Stacks, and MMIO [pdf] [lecture questions] [video] [worksheet] [solutions]

L5: The Digital Abstraction [pdf] [lecture questions] [video] [worksheet] [solutions]

L6: Boolean Algebra and Logic Synthesis [pdf] [lecture questions] [video] [worksheet] [solutions]

L7: CMOS Technology [pdf] [lecture questions] [video] [worksheet] [solutions]

L8: Combinational Logic and Intro to Minispec [pdf] [lecture questions] [video] [worksheet] [solutions]

L9: Complex Combinational Logic [pdf] [lecture questions] [video] [worksheet] [solutions]

L10: Sequential Circuits [pdf] [lecture questions] [video] [worksheet] [solutions]

L11: Sequential Circuits in Minispec [pdf] [lecture questions] [video] [worksheet] [solutions]

L12: Pipelining [pdf] [lecture questions] [video] [worksheet] [solutions]

L13: Design Tradeoffs [pdf] [lecture questions] [video] [worksheet] [solutions]

L14: Instruction Processor [pdf] [lecture questions] [video] [worksheet] [solutions]

L15: Memory Hierarchy [pdf] [lecture questions] [video] [worksheet] [solutions]

L16: Caches [pdf] [lecture questions] [video] [worksheet] [solutions]

L17: OS [pdf] [lecture questions] [video] [worksheet] [solutions]

L18: Virtual Memory [pdf] [lecture questions] [video] [worksheet] [solutions]

L19: Pipelined Processors [pdf] [lecture questions] [video] [worksheet] [solutions]

L20: Data and Control Hazards in Pipeline [pdf] [lecture questions] [video] [worksheet] [solutions]

L21: Synchronization [pdf] [lecture questions] [video] [worksheet] [solutions]

L22: Cache Coherence [pdf] [lecture questions] [video] [worksheet] [solutions]

L23: Modern Processor Architecture [pdf] [split pdf] [video]