Building a computer from first principles
The objective of this project is to integrate key notions from algorithms, computer architecture, operating systems, compilers, and software engineering in one unified framework. This will be done constructively, by building a general-purpose computer system from the ground up. In the process, I will explore many ideas and techniques used in the design of modern hardware and software systems. The project will be a journey from the bare bone details of switching circuits to the high level abstraction of object-based software design.