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 MIPS, 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.
- C Programming Language
- Compiling and Debugging
- Bit manipulation
- Integer/floating point representation
- Assembly language (MIPS)
- 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
- Parallelism (data-level, thread-level, request-level)
- Warehouse-Scale Computing
- Basic OS concepts (I/O, Memory Management, Networking)
- 6-7 Homework Assignments (Problem Sets)
- 1 lab per week
- 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.
- 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. However, CS61A and CS61B probably open up much more academic and professional opportunities, and those classes should take priority especially if you plan to work on high level programming/theory and you don't need CS61C as a required class.
- 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.
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.