The Elements of Computing Systems: Building a Modern Computer from First Principles
The Elements of Computing Systems: Building a Modern Computer from First Principles
An integrated course in Architecture and Compilers
Journal of Computing Sciences in Colleges
Virtual machines: abstraction and implementation
ITiCSE '09 Proceedings of the 14th annual ACM SIGCSE conference on Innovation and technology in computer science education
Taming complexity in large-scale system projects
Proceedings of the 43rd ACM technical symposium on Computer Science Education
Hi-index | 0.00 |
We describe a synthesis course that provides a hands-on treatment of many hardware and software topics learned in computer science (CS) programs. Using a modular series of twelve projects, we walk the students through the gradual construction of a simple hardware platform and a modern software hierarchy, yielding a basic yet powerful computer system. In the process of building the computer, the students gain a first-hand understanding of how hardware and software systems are designed and how they work together, as one enterprise. The course web site contains all the materials necessary to run this course in open source, and students and instructors are welcome to use and extend them freely. The course projects are modular and self-contained, and any subset of them can be implemented in any order and in any programming language. Therefore, they comprise a flexible library of exercises that can be used in many applied CS courses. This paper gives a description of the approach and the course, juxtaposed against general educational principles underlying meaningful learning.