# CS61C: Great Ideas in Computer Architecture ## Descriptions - Offered by: UC Berkeley - Prerequisites: CS61A, CS61B - Programming Languages: C - Difficulty: 🌟🌟🌟🌟 - Class Hour: 100 hours This is the final course in Berkeley's CS61 series, which dives into the details of computer hardware and takes you progressively to understand how the C language is translated step by step into RISC-V assembly language and executed on the CPU. Unlike [Nand2Tetris](https://github.com/PKUFlyingPig/cs-self-learning/blob/master/docs/%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T.md), this course is much more difficult and more in-depth, covering pipelining, Cache, virtual memory, and concurrency-related content. The Project for this course is also very innovative and interesting. Project1 will let you write a small program in C. Project 1 of Fall Semester 20 was to let you write the famous game *Game of Life* in C. Project2 requires you to write a neural network in RISC-V assembly to classify handwritten digits from the MNIST benchmark set, which is a great exercise in understanding and using assembly code. In Project3 you will use Logisim, a digital circuit simulation software, to build a two-stage pipeline CPU and run RISC-V assembly code on it. In Project4 you will be implementing a slower version of Numpy, using OpenMP, SIMD and other methods to optimize matrix operations in parallel. ## Course Resources - Course Website: - Recordings: [Youtube](https://www.youtube.com/playlist?list=PLDoI-XvXO0aqgoMQvogzmf7CKiSMSUS3M) - Textbook: None - Assignments: 11 Projects, 4 Labs, the course website has specific requirements ## Personal Resources All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/- summer20 - GitHub](https://github.com/PKUFlyingPig/CS61C-summer20)