This project is intended to be short and is not assigned for credit. Instead, it is meant to get your infrastructure set up for the quarter so you can complete the rest of the project series. For this project, you will run through the following instructions, which use Git to access starter code, fill out a brief worksheet, and then practice submitting your work. After these steps, you will have completed Project 0.
If at any point in these instructions you aren't sure how to proceed in your specific setup, please post on the discussion board or email the course staff for clarification!
This project is written from the perspective of a command-line interface. You may also hear the word "shell" used when referring to a command-line interface (these can be used interchangeably). If you aren't sure how to open a command-line interface on your computer, that is totally ok! UW's eScience Institute has a solid how-to on this page. If you use this link, please skip the "Download Files" and "Install Software" sections, they are not relevant for this course. All you care about is the "How to open a new shell" section found near the bottom. Once you have a shell open, you can move onto the next steps!
This project will require you to use a tool called git
, which helps you manage
changes to files and handles syncing them with a server (GitLab). If you're already
familiar with git, you can skip to the next section.
Some git terminology: A repository is a single directory (including its subdirectories) that git is keeping track of. One version is stored on the server (sometimes called the remote or origin) and you use the git program, installed on your computer, to create a local copy (clone) of that repository. The real power of git is that it tracks changes to files, where a commit is a set of those changes.
You can use git as a command-line tool (these instructions), or as a GUI application. Before continuing, please ensure git is installed on the computer where you intend to complete projects for this class by following the instructions at this link: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git. You should be able to complete the project series on any computer, whether Windows, MacOS, or Linux. If using Windows, please use the “Git Bash” application you just installed to run the commands below.
cse390b-22wi-students/cse390b-22wi-<CSE NetID>
) created for you already. If not, please contact your instructor as soon as possible to have one created.This will allow you to access your repo without having to authenticate (i.e. type your password) every time and will greatly speed up your workflow.
cat ~/.ssh/id_rsa.pub
ssh-keygen -t rsa -C "<netid>@cs.washington.edu"
(include the quotes)cat ~/.ssh/id_rsa.pub
ssh-
and ending with your username and host)From the command-line, execute the following commands:
git clone <repo url from project page>
cd cse390b-22wi-<CSE NetID>
Read the README.md
file located in the root of your repo to learn more about the project organization.
After cloning your repo following the steps above, navigate to projects/0 and find the file course_setup_worksheet.docx. Open with Microsoft Word, Pages, or another document editor (you can also upload to Google Docs as long as you download it again when you're done). This document is intended to help you get organized for the quarter ahead by compiling all the links for your courses in one place. We've created suggested sections for each type of link, but feel free to rearrange or delete if you find it more useful to you. When you are done, make sure the edited .docx file is located in the same spot—this is similar to how you'll submit worksheets for the rest of the quarter. Git is capable of handling a .docx file just like it can handle source code.
From the command-line, execute the following commands:
git status
zoom_links.docx
git add zoom_links.docx
git status: verify.txt staged for commit
git commit -m "Finish project 0"
git status: Your branch is ahead by 1 commit
git push
git push -u origin master
on the first commit (only).Whenever you submit a project in this course, you’ll “tag” the last commit so course staff knows what version of your code you’d like them to grade. The following instructions are for project 0, but can be adapted for every project:
git tag project-0
git push --tags
git push
command publishes tags to the central repo (viewable in the web interface).Congratulations, you've completed project 0! You're ready to follow along with the project 1 demo in lecture on Thursday.
The course tools we distribute deal only with running, testing, and debugging your code. They are not good for editing code. To complete the coding portions of the projects in this course, you may use any text editor of your choosing. However, please note that we will be using programming languages that were invented for this course, so we don't recommend big heavy IDEs (Integrated Development Environments) like IntelliJ, Eclipse, Visual Studio, or JGrasp. They won't understand the languages well, and you won't need them to run code anyway because the course tools handle that.
Instead, we recommend you use a lightweight text editor like VSCode, Atom, or Sublime Text. Fortunately, there are third-party extensions that can provide syntax highlighting to make your experience more pleasant. Follow the directions below if you'd like to get set up with one of these editors! Note that the extensions listed below are not created by the course staff, and may not have been thoroughly vetted.
You are also welcome to use a command-line editor like Vim or Emacs if you prefer, although syntax highlighting support may be harder to find.
Note: Visual Studio Code (this tool, lightweight editor) is different than Visual Studio (heavy IDE).
Download the latest version at https://code.visualstudio.com/Download.
roblourens.vscode-nand2tetris-hdl
Download the latest version at https://atom.io/.
language-nand2tetrisHDL
Download the latest version at https://www.sublimetext.com/3. Technically, the full editor costs money, but you may download and use a full-featured free trial for an unlimited period of time.