Course Outline

Systems 1: Hardware Architecture and Design—From circuits to machine code

Professor Dr K Darcy Otto
Title Systems 1: Hardware Architecture and Design
Code CS 2114
Credits 4
Term Fall 2025
Times Tues/Fri 10h30–12h20
Location Dickinson 239
Delivery Fully in-person
Contact Email
Office Hours Mon/Thurs 13h00-14h00, or by appointment

Description

Have you ever wondered what a computer is and how it actually works? In this course, we’ll answer the hardware half of this question. In Systems 2 next term, we’ll answer the software half.

Working from the ground up, we will start with basic circuits and develop elementary logic gates. Taking these gates as our building blocks, we will construct the core components of a modern computer: the central processing unit, registers, and memory chips. We will then follow the principles of modern hardware architecture to integrate these components into a general-purpose computer. Our journey will culminate in using machine code to control the computer we have designed.

By the end of this course, you will understand what a computer is and how it actually works, from the perspective of hardware. You will be able to explain how to go from basic circuits, to a working machine that responds to code you write. You will also have completed the prerequisite for Systems 2: Software Architecture and Design, which explores the software architecture and design of a modern computer.

No previous computer science or programming experience is required. The course assumes comfort with symbolic reasoning (the kind of thinking you do in mathematics or logic). If you’ve taken a math course or another computer science course, you’ll be well-prepared, but it’s not required.

Learning Outcomes

  1. Build from basics: Design electronic circuits and logic gates, then combine them into computer components like processors, memory, and registers.
  2. Understand computer architecture: Explain how hardware components work together to create a functioning computer system.
  3. Write machine code: Create simple programs that directly control the hardware you’ve built.
  4. Think systematically: Break complex systems into manageable parts and understand how abstraction works in computer design.
  5. Connect theory to practice: Move from abstract concepts to working implementations throughout the course.

Readings

  • Nisan, Noam and Shimon Schocken. The Elements of Computing Systems: Building a Modern Computer from First Principles, 2nd ed. Cambridge: The MIT Press, 2021. Available in the Dickinson reading room.

Evaluation

Midterm 35% Comprehensive
Final Examination 45% Comprehensive
Engagement 20% Participation, Exercises
  • Midterm and Final Examination: Both tests will cover everything we’ve discussed in class and read about. You’ll see conceptual questions and problems similar to the exercises.

  • Engagement: Your engagement grade comes from completing exercises on time, active participation, and showing up regularly. The exercises are drawn from our readings, and are listed on the class schedule.

  1. Class Schedule: Current schedule of readings and exercises
  2. Electronic Whiteboard: For information sharing during class
  3. Etherpad: For code sharing during class
  4. Nand2Tetris Online IDE: Our development environment, online (only a browser required)
  5. Nand2Tetris Software Package: Desktop version, written in Java

Course Policies

  1. Outline: This outline is subject to arbitrary change. I shall announce any changes in class; if you are not present, you are still responsible for finding out what I announce.
  2. Late exercises: Exercises will not be accepted late without an acceptable medical or compassionate reason. All exercises are due at the beginning of class for which they are assigned.
  3. Attendance: Come to class. Three unexcused absences might mean a marginal pass; four could mean a failure, even if your other work is fine. Excused absences don’t count.
  4. Laptops and Cell Phones: Don’t use mobile technology in class unless I specifically permit it. Take notes with pencil and paper (unless you have special accommodations).
  5. AI Tools: Don’t use ChatGPT or similar tools for assignments unless I explicitly allow it. If I do allow it, you must cite exactly how you used it according to Chicago style.
  6. Office hours: Office hours are first-come-first-serve, unless you have an appointment. If you want to schedule something, email me a few times that work for you.
  7. College Policies: Be familiar with the college rules on class attendance, as well as academic and artistic ethics.
  8. Grading: If you opt for a letter-grade, your mark in the course will be translated according to the following scale: A+ (90–100), A (85–89), A– (80–84), B+ (77–79), B (73–76), B– (70–72), C+ (67–69), C (63–66), C– (60–62), D (50–59), F (0–49). If you do not opt for a letter-grade, the scale is as follows: Pass (65–100), Marginal Pass (50–62), Fail (0-49).

A Note about AI within Computer Science

Artificial intelligence can generate code, but it cannot decide what problems are worth solving, nor judge whether a solution is effective, ethical, or just. Computer science is less about mastering tools than about cultivating the habits of mind that let us interpret, understand, and evaluate. It asks how abstractions shape systems, how systems shape society, and how we might imagine technology serving human flourishing rather than undermining it. To study CS is therefore not only to learn how machines work, but to engage in broader questions about seeing clearly, reasoning correctly, and imagining responsibly in a world increasingly shaped by computation.

A Note on Liberal Arts Learning

An overarching objective of this course is to help you develop as a student of the liberal arts. True students of the liberal arts are able to reflect on the context in which they live, and reason about what it means to live a meaningful and happy life. Thus, they are able to be more than just children of their own time. But this means we must be willing to put our ideas to the test, see our own errors, and develop intellectual courage and humility. It also helps not to take ourselves too seriously.