Nisan and Schocken (2005). The Elements of Computing Systems. MIT Press.
It is not free, but it is cheap as textbooks go. The text has a companion web site at http://www.nand2tetris.org.
This class meets twice per week on Tuesday and Thursday, 2:30 - 3:50 p.m., in Olin 165.
Each chapter in the textbook corresponds to one implementation
project, and we will aim to complete one project each week. Classes
will roughly alternate between lecture/discussion to introduce new
topics and lab days in which you will begin to implement what you have
Because our time in class is limited, you should come prepared
to each class. What
does it mean to be prepared? First, check the schedule
for today's class meeting to find out what we will be working
if there is a reading
listed for today's class meeting, read it before class and answer the reading journal questions.
Third, come to class on
time, with paper and a writing instrument, ready to be an
active participant. After class, you should review your notes, and possibly the reading as well, to gain their
As well as practicing new concepts through their implementation, you will have the opportunity to demonstrate your learning through two in-class exams.
To help you prepare for class, most days will have a short pre-class "Readback" form for you to fill out. Your average score on Readbacks is worth 10% of the final grade.
You can find the Readback form on
the class syllabus next to the reading for the day. Remember it's
timestamped and is due at least one hour before the start of class. No
late Readbacks will be accepted.
Class meetings will involve a mix of lectures, discussions, collaborative activities, and hands-on exercises. During every other class, you will have time to get started on the week's project, and you should be prepared to do so. In short: You are expected to attend and actively participate in class. I am expected to make class worth attending. I encourage you to take notes with pen and paper during class.Participating in class involves:
If your participation or non-participation is problematic, I will invite you to visit office hours to discuss the issue.
This is mostly a hands-on course, evolving around building a series
of hardware (simulated) and software modules. Each module development
task is accompanied by a design document, an API, an executable
solution, a test script (illustrating what the module is supposed to do), and a detailed implementation plan (proposing how to build it). Most of this information can be found in your textbook. Some will come in the supporting projects directory in which you will do your work.
The projects are spread out evenly, so there will be no special
pressure during the semester's end. Although the projects build on each
other, you will always have a suitable basis to build on, so that
difficulties in one project will not inhibit your ability to succeed in
subsequent projects. Each project will be due at 11 p.m. the night
before the class in which we start the next project. Projects will be
submitted through a web form. The projects are worth 60% of your overall grade.
Wrappers. To help you
monitor your learning, you will be required to complete a "wrapper" for
most projects. As part of the readback on the day you read the project
specification, you will estimate the amount of time you will need to
complete the project and think about how it will
challenge you. When you submit the project, you will reflect on
your experience and what you learned.
Teamwork. Because students
can often learn and accomplish more in teams, I encourage collaboration
on projects. Moreover, teamwork is an important skill for hardware and
software developers. However, good friends do not always make good
collaborators.During the first week of class, we will assign a rota of team partners for the semester.
When you work with a partner, you must inform me in a comment at the top of your assignment the names of the two contributors to the homework.
A general structure. Because
the projects are fully specified in our textbook, I won't be posting
lengthy homework assignments on the course web site. Instead, find brief instructions
for getting started and submitting your work.
There will be one midterm exam (in class on March 3) and one final
(9 - 11 am, Tuesday, May 17th). Each exam will cover roughly half of
the course material.The two exams together will be worth 25% of your
Here are my policies:
Any form of falsification, misrepresentation of another’s work as one’s own (such as cheating on examinations, reports, or quizzes), or plagiarism from the work of others is academic dishonesty and is a serious offense.
Plagiarism occurs when a student, intentionally or unintentionally, uses someone else’s words, ideas, or data, without proper acknowledgement. College policy regarding plagiarism is more fully explained in the Whitman College Student Handbook. Each student is required to sign the Statement on Academic Honesty and Plagiarism. Cases of academic dishonesty are heard by the Council on Student Affairs.
Do your own work. Programming
is hard. The only way to learn is to do it yourself. As
such, while you may discuss general approaches to homework problems
with anyone, you may discuss code only
with your designated partner(s) and not with other students. You may
also seek help as described below. You may discuss your code with others after the assignment deadline has passed.
When you work with a partner, you should not divide up the problems to work separately. You will not get the full benefit of the assignment if you divide the work. Instead, you should use a pair programming approach to work together on the problems.
All the work you submit to me is implicitly understood to be your own (unless otherwise attributed). If it is discovered that it is not, you will be prosecuted under the College's plagiarism guidelines. If you are tempted to plagiarize to complete a pressing assignment, instead, please talk to me about it.
I also expect you to abide by the textbook author' terms:
Attribute the contributions of others. When you explicitly work as part of a group or team, you need not identify the work of each individual (unless I specify otherwise). It is assumed that each of you contributed to all parts of the assignment. Any conceptual contributions by individuals not in your group should be acknowledged and attributed in your report. That is, you must give specific attribution for any assistance you receive. The suggested acknowledgment format is "[Person X] helped me to [do thing Y] by [explaining Z]."
Exams. Because I intend the
exams to assess
own individual understanding
of the material, collaboration on exams is not permitted. If you have
questions about the exam, bring your questions directly to me. Of
course, I encourage you to collaborate while studying for exams.
I will offer a small amount of extra credit for turning in
a one-page, 8.5"x11", single-sided "cheat sheet", handwritten by you,
along with your exam. Preparing a "cheat sheet" serves at least three
First, it may
save you time and uncertainty during the exam. Second, writing
may help you to remember it, so that you don't even need to look at
your cheat sheet. Third,
and most importantly, preparing a "cheat sheet"
requires you to reflect on what kinds of problems are
appear on the exam and what information will help you solve them.
If you are a student with a disability who will need accommodations
in this course, please meet with either Julia Dunn, Associate Dean of
Students (Memorial 325, 509-527-5213, email@example.com) or Rebecca
Frost, Director of Student Success and Disability Support Services
(Memorial 325, 509-527-5213, firstname.lastname@example.org)
for assistance in developing a plan to address your academic needs. All
information about disabilities is considered private; if I receive
notification from Ms. Dunn or Ms. Frost that you are eligible to
receive an accommodation, I will provide it in as discreet a manner as
Class is time for learning and practice
which you cannot obtain by reading someone else's notes. Thus, 1.5%
be deducted from your overall grade for each unexcused
I will excuse your absence if you have a legitimate reason to miss
and you manage your absence responsibly:
If your absence is planned, as for travel to a conference, email me to make arrangements about a week in advance. Although we can talk in person, I will also need a written reminder of your plans, preferably via email.
If your absence is unplanned, as for illness or in relation to a documented disability, email me as soon as you are able to do so. If you are ill, don't come to class—stay in your room and rest, and seek medical care as needed. If you are absent unexpectedly, I may call or email to check that you are okay.
I understand that sometimes "things happen." Therefore, you will be granted one unexcused absence from class without penalty. However, this rebate is cancelled upon a second unexcused absence.
Readbacks are due one hour before class, without exception.
Projects will be due at 11 p.m. the night before the specified class date. Deadlines may be extended for individuals and groups in accordance with the attendance policies described above or, rarely, by negotiation between the instructor and the entire class.
Because I am concerned about your health and well-being, I will also
accept late homework according to my "health and well-being" policy.
You may invoke this policy under the following conditions:
I encourage you to come see me as soon as possible if you are having
difficulties with the readings, class sessions, or homework. I also
welcome discussions about
course content and assignments, related current events, and your
interests or career plans.
You are welcome to drop in during my official office hours, posted on my home page, and you may knock any time my door is open. If your need is known at least 24 hours in advance, you are very welcome to schedule an appointment with me for a chat in my office, a walk, or lunch.
Want help with your Significant Bits presentation? The COWS has tutoring hours with speaking fellows Tuesday, Thursday, and Sunday, 8 - 10 p.m. Or schedule an appointment online.
Math & CS Technical Specialist Dustin Palmer
in Olin 166 can help with technology problems.
Please see me for everything else.
I will use the following scheme as an initial basis for assigning
|Type of work
|Significant Bits presentation
Letter grades will be assigned according to the following scale:
I do not believe in grading on a curve; I would be thrilled to give you all As. However, I reserve the right to make adjustments if this weighting scheme produces grades which are lower than I believe are deserved. Any such adjustments will only raise your grade, never lower it.
with thanks to Sam Rebelsky, Henry Walker, Jerod Weinman, and Albert