This repo houses my self-study material for UCB course: CS61C: Great Ideas in Computer Architecture. I am doing the Fall 2020 version to be coherent with the available material
This is the last course in Berkeley's CS61 series, which dives into the internal of computer architecture and will make you understand how the C language is translated into RISC-V assembly language and executed on the CPU.
More on the course, resources and recordings can be found in csdiy.wiki
The Fall 2020 website with all the links to videos, discussions, labs and projects can be found here
I will just put this quote by Julia Evans as the main drive for learning:
I have one main opinion about programming, which is that deeply understanding the underlying systems you use (the browser, the kernel, the operating system, the network layers, your database, HTTP, whatever you're running on top of) is essential if you want to do technically innovative work and be able to solve hard problems.
- Lab 0 – Intro and Set Up
- Lab 1 – Number Rep, C and CGDB
- Lab 2 – Advanced C
- Lab 3 – RISCV Assembly
- Lab 4 - RISCV Functions, Pointers
- Lab 5 - Logisim
- Lab 6 - Pipelining and CPU
- Lab 7 - Caches
- Lab 8 - OS (context switch), I/O, DMA, Disks, Networking & Virtual Memory
- Lab 9 - SIMD Instructions
- Lab 10 - Thread Level Parallelism
- Lab 11 - Spark/Dependability
- Project 1 – Conway's Game of Life, in RGB!
- Project 2 - Artificial Neural Network (ANN) in RISC-V assembly
- Project 3 - CS61CPU - Building a two-stage pipeline CPU with Logisim
-
Project 4 - Numc