Assignments

Getting started with the Nand to Tetris projects

On the Linux cluster

On the Linux cluster, make a local copy of the project framework to your home directory. Open a Terminal and do the following, substituting XX for whatever project you're starting
mkdir sysfun
cd sysfun
cp -a /home/strattja/share/cs210/projects/XX .

That's it. The projects directory contains a series of folders, numbered 00 through 13, for each of the projects, including an introductory tutorial (00) and a final open-ended project (13).

You can edit the project files using vi, emacs, gedit (Text Editor), Sublime, or other editor of your choice.

You can execute the Nand to Tetris tools using the following commands in the Terminal:

Tool
Command
Hardware simulator
hardwaresimulator
CPU emulator
cpuemulator
VM emulator
vmemulator
Assembler
assembler
Compiler
jackcompiler

On your own computer

To do the projects on your own computer, follow the instructions on the Nand to Tetris web site to download and install the tools and projects.

Programming language and style

The programming language for the hardware projects is HDL (you will learn this language during the course). The recommended programming language for the software projects is Python. If you want to use another programming language, you must first get the instructor's permission.

You are expected to follow common programming conventions and style (documentation, indentation, descriptive variable names, etc.). Messy, unmodular, under-documented, or over-documented works will get point penalties.  However, this is not, primarily, a software development course, so I won't be spending lots of time commenting on your programming style.  If you want detailed feedback on your programming style, please come to my office hours or make an appointment to discuss your code in person.

Partners

We have worked out a rota of partners for the 12 projects.

What to submit

For each project, you will submit the entire contents of the project directory.

You will also write a short README file addressing the following points: 

If you can't finish the project on time, submit what you've managed to do, and relax. All the projects in this course are highly modular, with incremental test files. Each hardware project consists of many chip modules (*.hdl programs), and each software project consists of many software modules (classes and methods). It is best to treat each project as a modular problem set, and try to work out as many problems as you can. You will get partial credit for partial work.

What if your chip or program is not working? It's not the end of the world. Hand in whatever you did, and explain what works and what doesn't. If you want, you can also supply test files that you developed, to demonstrate working and non-working parts of your project. Instead of trying to hide the problem, be explicit and clear about it. You will get partial credit for your work.

If you just can't let it go, you may invoke the health and wellness policy to obtain an extension and get help with your work.

How to submit

In general, projects will be due at 11 p.m. the night before the date specified on the course schedule.

To submit your work, first create an archive of the project directory. For example, for project 01, you might do the following:

cd compsys/projects
tar cvfz submission-01.tgz 01

The upload the archive file using the course turn-in form. Submit one archive for your entire team representing your joint work on the project.

You will also individually submit a post-project Wrapper as a Google form, linked from the course schedule.

Other assignments


John Stratton (strattja@whitman.edu) with thanks to Janet Davis, Noam Nisan and Shimon Schocken

Created January 17, 2017
Last revisedJanuary 17, 2018, 07:29:10 AM PST
CC-BY-NC-SA This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.