Digital systems are at the heart of the information age in which we live, allowing us to store, communicate and manipulate information quickly and reliably. This computer science course is a bottom-up exploration of the abstractions, principles, and techniques used in the design of digital and computer systems. If you have a rudimentary knowledge of electricity and some exposure to programming, roll up your sleeves, join in and design a computer system!
The course is divided into four two-week sections:
- Designing an Instruction Set, Assembly Language, Assignment 1
- Compilers, Procedures and Stacks, Assignment 2
- Building the Beta, Assignment 3
- Memory Hierarchy, Hardware Caches, Assignment 4
Each section consists of one to two lecture chapters and an assignment. The lecture chapters are divided into three sections:
- Lecture Videos — include lecture videos and exercises.
- Worked Examples — include video of a sample tutorial problem being solved for you, and the sample problem itself.
- Tutorial Problems — lots of practice problems with detailed solutions to help you master the material.