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 |
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.
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.
We have worked out a rota of partners for the 12 projects.
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.
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.
Created January 17, 2017
Last revisedJanuary 17, 2018, 07:29:10 AM PST
This work is licensed under a Creative
Commons Attribution-Noncommercial-Share Alike 3.0 United States License.