# Digital Design and Computer Architecture

## Descriptions

- Offered by: ETH Zurich
- Prerequisites: CS50 or same level course; Better have a basic knowledge of C
- Programming Languages: C, Verilog, MIPS, LC3
- Difficulty: 🌟🌟🌟
- Class Hour: 100 hours

In this course, Onur Mutlu, a great expert in the field of Computer Architecture, will teach you about digital circuits and computer architecture. The course is entirely from the perspective of a computer designer, starting with transistors and logic gates and extending to microarchitecture, caches, and virtual memory. It also covers many of the latest research advances in the field of computer architecture. After learning, you will master digital circuits, hardware description language Verilog, MIPS instruction set, CPU design and performance analysis, pipelining, cache, virtual memory, and so on.

There are 9 labs in the course. You will use the Basys 3 FPGA board and [Vivado](https://china.xilinx.com/products/design-tools/vivado.html) to design and synthesize the circuits, starting from combinational and sequential circuits, and eventually assembly into a complete CPU. Except for assignment solutions, all the course materials are open source.

## Course Resources

- Course Website: <https://safari.ethz.ch/digitaltechnik/spring2020/>
- Recordings: <https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2>
- Textbook1: Patt and Patel, Introduction to Computing Systems
- Textbook2: Harris and Harris, Digital Design and Computer Architecture (MIPS Edition)
- Assignments: refer to the course website.
