A synthesis course in hardware architecture, compilers, and software engineering

Shimon Schocken*, Noam Nisan, Michal Armoni

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

5 Scopus citations


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.

Original languageAmerican English
Pages (from-to)443-447
Number of pages5
JournalSIGCSE Bulletin Inroads
Issue number1
StatePublished - 2 Apr 2009


  • Abstraction
  • architecture
  • compilers
  • design
  • meaningful learning
  • software


Dive into the research topics of 'A synthesis course in hardware architecture, compilers, and software engineering'. Together they form a unique fingerprint.

Cite this