Prerequisite (if any): Foundations of Computing Systems (prerequisite/corequisite)

This is a companion lab to Foundations of Computing Systems that enables the students to build a computer from first principles. A typical offering of this course will illustrate examples of

(i) combinational circuits such as adders and multipliers (1 week)

(ii) sequential circuits for real world tasks such as vending machines (1 week)

(iii) a simple register-based CPU (3 weeks)

(iv) assemblers for the CPU introduced (3 weeks)

(v) abstract stack-based machines (2 weeks)

(vi) simple compilers and translators (2 weeks)

**Learning Outcomes: **

Understand the implementation of the different components of a computer system (digital hardware, microarchitecture, operating systems and compilers) and their interconnection.