MAC.5017 Building Computer Systems
The primary objective of this course is to synthesize foundational principles from algorithms, computer architecture, operating systems, compilers, and software engineering within a cohesive framework. This objective is pursued through a constructive approach in which a general-purpose computer system is developed from first principles. In undertaking this process, students engage with a broad spectrum of concepts and methodologies central to the design and implementation of contemporary hardware and software systems. The course further provides students with cross-sectional perspectives of the computing discipline, ranging from the fundamental mechanics of assembly language to the higher-order abstractions of object-oriented software design. For each project or topic, students are expected to undertake either an extended implementation or a research-based investigation into the relevant theoretical foundations.