Elements of Computing Systems

E81 CSE 365S


All computers are made up of 0s and 1s. However, the conceptual gap between the 0s and 1s and the day to day operation of modern computers is enormously wide. This fast-paced course aims to bridge the divide by starting with simple logic gates and building up the levels of abstraction until one can create games like Tetris. There is no specific programming language requirement, but some experience with programming is needed.

Prerequisite: CSE 131 and CSE 241 (or equivalent).

This course is based on and uses infrastructure from nand2tetris.org.

When and Where

Lectures: Mondays, 2:30-4:00PM - McDonnell 361
Labs: Wednesdays, Fridays, 2:30-4:00PM - Lopata Hall 400/401 and Urbauer 216


David V. Lu
Email: cse365@cse.wustl.edu, but use Piazza first. Office Hours by appointment, or during lab time.


The Elements of Computing Systems. The book is recommended, not required. The first few chapters of the book are available online.

Academic Integrity Policy

The standard Academic Integrity Policy applies in this class. However additionally, it is important to note that this class is based on a increasingly widely used textbook, and thus it may be possible to find code online for the assignments. As noted in the authors' terms, this class is about discovering all of the elements of computing systems for yourself. As such, in taking this class you agree to the following provisions.
  • All projects (except the final project) will be done individually.
  • You will not share your code for this class in any form, except for project submission and as otherwise allowed by the instructor.
  • You may help other students in this class only by discussion, without sharing/copying code. On occasion, you can also help someone else debug tricky bits, assuming you don't touch the keyboard or dictate any code.