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 three times per week on Monday, Wednesday and Friday,
8:00 - 8:50 a.m., in Olin 124.
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 learned.
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 each class meeting to find out what we will be working on.
Second, 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 full benefit.
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. Each week, some class time will be used 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 2) and one final exam.
Each exam will cover roughly half of the course material.The two exams
together will be worth 25% of your final grade.
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 your 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 functions: First, it
may save you time and uncertainty during the exam. Second, writing
important information 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 likely
to 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, dunnjl@whitman.edu)
or Antonia Keithahn, Assistant Director of Academic Resources: Disability
Support (Memorial 326, 509.527.5767, keithaam@whitman.edu)
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 possible.
Class is time for learning and practice which you cannot obtain by
reading someone else's notes. Thus, 1.5% will be deducted from your overall
grade for each unexcused absence.
I will excuse your absence if you have a legitimate reason to miss class
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, 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.
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 final
grades:
Type of work |
Weight |
---|---|
Readbacks |
10% |
Projects |
60% |
Significant Bits presentation |
5% |
Exams |
25% |
Letter grades will be assigned according to the following scale:
Grade | Percentage | |
---|---|---|
A | - | 92-100 |
A- | - | 90-91 |
B+ | - | 88-89 |
B | - | 82-87 |
B- | - | 80-81 |
C+ | - | 78-79 |
C | - | 72-77 |
C- | - | 70-71 |
D+ | - | 68-69 |
D | - | 62-67 |
D- | - | 60-61 |
F | - | 0-59 |
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.
John Stratton (strattja@whitman.edu)
with thanks to Janet Davis and Albert Schueller