TR 9:45am - 11:00am (B2)
Dr. Brent Yorgey
This course is a study of the layers of abstraction composing the design of modern computing systems. Topics include numeric representation, digital logic, CPU design, machine and assembly language, the program stack, virtual machines, compilers, assemblers, memory management and device drivers.
Upon completing this course, you will be able to:
From Nand to Tetris
The Elements of Computing Systems, 2nd ed. (1st ed. is OK too)
If you get an error like “Permission denied” when attempting to run
one of the nand2tetris tools on OSX or Linux, you may need to make
the .sh files executable, by running
chmod +x *.sh
at a terminal prompt.
If you get an error like “cannot find javaw”, you need to install
Java. Visit this page to download and run the appropriate
This course uses specifications grading. Briefly, this means that
grading of individual projects is on a credit/no-credit basis, with a
specification that tells you what you must do in order to get
credit. Your final letter grade in the course, in turn, is based
simply on the number of projects successfully completed. There will
be 15 projects available to complete throughout the semester.
Every project has a specific date and time (usually 5pm) at which it
Assignments may be turned in any time up to the deadline. I will
try my best to return graded assignments, with feedback, within two
weekdays of being turned in.
Projects will not be accepted after the deadline.
However, I will automatically grant extensions to anyone who
asks. Simply send me an email prior to the deadline, asking for an
extension on a particular project, and informing me what your new
deadline will be. The new deadline should be a specific day and
time (“11pm this Saturday, March 5”, not “in a couple days”). I
will hold you to the new deadline.
If you do not get credit for a project, you may revise and
resubmit the project until you do. There is no deadline for
However, the above only applies if you made a reasonable attempt at
the project the first time. You cannot turn in a half-finished
project before the deadline and then “revise” it by completing the
rest. If your project is only half-finished, you must request an
The absolute latest any project may be turned in is 5pm on Tuesday,
As always, exceptions to this policy can be made in cases of
emergency, mental health issues, etc. Please come talk to me!
Your work in this course will consist of a series of challenging
projects from our textbook. Taken all together, they will result in a
complete working (simulated) computer. See the links below for the
details and specification for each project.
Projects must be completed individually. Your experience of
learning how a computer works depends directly on your independent
completion of these projects.
You may discuss the projects with other students.
You may not:
Read any solution to any project, whether from another
student, found online, or from any other source.
Show your solution to any other student.
Give or receive help in debugging a project solution. Requests
for debugging help must be directed to the professor.
Any violations of this policy will be referred to the Committee on
Academic Integrity as a major violation, with a recommended sanction
of failure in the course.
Although you and I play different roles in the course, we both have
your learning as a common goal. There are things I expect from you as
a student in the course, but there are also things you can expect of
me as the course instructor and facilitator.
If I am not fulfilling my responsibilities outlined below, you are
welcome (and encouraged!) to call me out, perhaps via the anonymous
feedback form. I will also
initiate a conversation if you are not fulfilling yours. However, none
of us will meet all of the expectations perfectly—me included!—so
it’s also important that we have grace and patience with one another.
Attendance in this class is not required as part of your grade.
However, I do expect you to attend and appreciate knowing in advance
if you will need to miss class.
If you have a documented disability or some other reason that you
cannot meet the above expectations, and/or your learning would be best
served by a modification to the usual course policies, I would be
happy to work with you—please get in touch (via Teams or email)! The
course policies are just a means to an end; I don’t care about the
policies per se but I do care about you and your learning.
It is the policy of Hendrix College to accommodate students with
disabilities, pursuant to federal and state law. Students should
contact Julie Brown in the Office of Academic Success (505.2954;
email@example.com) to begin the accommodation process. Any student
seeking accommodation in relation to a recognized disability should
inform the instructor at the beginning of the course.
Hendrix College values a diverse learning environment as outlined in
the College’s Statement on Diversity. All members of this community
are expected to contribute to a respectful, welcoming, and inclusive
environment for every other member of the community. If you believe
you have been the subject of discrimination please contact Dean Mike
Leblanc at firstname.lastname@example.org or
501-450-1222 or the Title IX Coordinator Allison Vetter at
email@example.com 501-505-2901. If
you have ideas for improving the inclusivity of the classroom
experience please feel free to contact
me. For more information on
Hendrix non-discrimination policies, visit
Hendrix recognizes that many students face mental and/or physical
health challenges. If your health status will impact attendance or
assignments, please communicate with me as soon as possible. If you
would like to implement academic accommodations, contact Julie Brown
in the office of Academic Success
(firstname.lastname@example.org). To maintain
optimal health, please make use of free campus resources like the
Hendrix Medical Clinic or
Counseling Services (501.450.1448). Your health is important, and I
care more about your health and well-being than I do about this class!