Computer Science 61C — Machine Structures (4 Units)
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.)
- 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
- Caching / memory hierarchy
- Virtual Memory
- Basic OS concepts (I/O, Memory Management, Networking)
- Parallelism (data-level, thread-level, request-level)
- Warehouse-Scale Computing
- 6-7 Homework Assignments (Problem Sets)
- 1 lab per week
- 4-5 projects
- 2 midterms
- 1 final
- 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.
- 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
- 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.
- 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