Skip to content

Berkeley CS61C: Great Ideas in Computer Architecture

Descriptions

  • Offered by: UC Berkeley
  • Prerequisites: CS61A (Python), CS61B (Data Structures) or equivalent
  • Programming Language: C, RISC-V Assembly
  • Difficulty: 🌟🌟🌟🌟
  • Class Hour: 80+

Berkeley CS61C is Berkeley's computer architecture course, widely regarded as one of the best architecture courses in the world. It starts from high-level languages (C) and gradually goes down to the machine level (RISC-V assembly, digital logic, CPU design).

CS61C's greatest strength is its exceptional lab design. The course has 6 labs, progressing from C pointer operations to RISC-V CPU design. By the end, you'll have designed a CPU capable of running RISC-V instructions using Logisim.

Course Resources

  • Website: cs61c.org
  • Lectures: YouTube
  • Notes: Available on the course website
  • Textbook: Based on Computer Organization and Design: The Hardware/Software Interface (RISC-V Edition)

Lab List

Lab Content Difficulty
Lab 1: C and pointers C basics, pointers, memory operations 🌟🌟
Lab 2: RISC-V assembly Assembly language, function calls 🌟🌟
Lab 3: Floating point IEEE 754, floating-point arithmetic 🌟🌟
Lab 4: CPU design Design RISC-V CPU in Logisim 🌟🌟🌟🌟
Lab 5: SIMD optimization Vectorized computation 🌟🌟🌟
Lab 6: Cache optimization Cache-friendly code 🌟🌟🌟

Self-Study Tips

Master C and pointers first. CS61C has high C language requirements, especially pointers and memory management. Learn C well before starting.

Do the CPU design lab seriously. Lab 4 is the course climax — designing a RISC-V CPU from scratch in Logisim. This lab gives you a true understanding of how CPUs work.

Draw datapath diagrams. The CPU datapath is the course's core. Draw how each instruction executes through the datapath.

Notes

CS61C is one of the best courses for architecture beginners. The lecture notes and lab guides on the course website are excellent, making self-study possible even without enrolling.

The course uses RISC-V (not x86), which is cleaner and easier to understand.