Computer Science 61C — Machine Structures (4 Units)

Course Overview

Summary

The course focuses on concepts that drive computing architecture. Students will explore the software-hardware connection starting with high-level software with C and low-level assembly language with RISC-V (developed at Berkeley), as well as explore circuit and processor design. Students will then look at modern developments, such as different levels of parallelisms in computer processors, distributed computing, and warehouse scale computers (WSCs). Lastly, students will be introduced to basic operating system concepts. (Note: In some versions of the course OS concepts are covered before distributed computing and WSCs.)

Prerequisites

  • CS61A
  • CS61B

Topics Covered

  • C Programming Language
  • Compiling and Debugging
  • Bit manipulation
  • Integer/floating point representation
  • Assembly language (RISC-V)
  • The CALL process (Compiling, Assembling, Linking, Loading)
  • Boolean algebra, Synchronous Digital Systems and Finite State Machines
  • Combinatorial Hardware/Logic
  • CPU structure and processor design
  • Pipelining
  • Caching / memory hierarchy
  • Virtual Memory
  • Basic OS concepts (I/O, Memory Management, Networking)
  • Parallelism (data-level, thread-level, request-level)
  • Warehouse-Scale Computing

Workload

Course Work

  • 6-7 Homework Assignments (Problem Sets)
  • 1 lab per week
  • 4-5 projects
  • 2 midterms
  • 1 final

Time Commitment

  • Homework assignments are online question-answer and take around 2-4 hours to complete.
  • Labs can mostly be completed during lab. However, many students choose to complete the lab early and then go to lab just to get checked off.
  • The projects are two-week long projects and can take a significant time to complete.

HKN Tips

  • Start early on the projects, especially since some of the projects require the use of the school servers. As the deadline approaches, the servers become clogged with traffic, and potentially very slow.
  • The projects are also what most people view as the hardest portion of the class, and depending on your interest in the subject, you may need to devote most of your time doing 61C projects.

Choosing the Course

Category

  • Computer Architecture
  • Low Level Systems

When to take

If you are considering focusing on hardware or the hardware-software interface, take this class as soon as possible. CS61A and CS61B opens up much more academic and professional opportunities in software engineering, and this class is more important for software that is geared towards utilizing all available computing resources and computer architecture design.

What next?

  • EECS151: expands on the hardware components used in digital systems.
  • CS152: investigates computer architecture and engineering in more depth.
  • CS162: examines operating system concepts, such as concurrency, synchronization, and memory.
  • EECS 149: embedded system design, when software collides with hardware

Usefulness for Research or Internships

  • Many elementary internship interviews may ask technical questions based on 61C knowledge, depending on the company you're interviewing at (i.e., logic, bit manipulation, CPU design).
  • The concepts in this course are critical if you're pursuing a computer architecture research position.

Last edited: Summer 2020