This project is intended for you to become familiar with the infrastructure for this course and the rest of the projects for this course. In Project 1, you will walk through the following instructions, use GitLab to access starter code, complete a worksheet, and then practice submitting your work. After these steps, you will have completed Project 1.
If you become unsure of how to proceed at any point in this project and all future projects, please post on the Ed discussion board or email the course staff for clarification.
Navigate to the Project 1 assignment on Canvas (linked here). Download the document template titled p1_Course Resources Worksheet & GitLab Setup.docx
. Open the document, read the instructions on the first page, and estimate the amount of time you think it will take you to complete this project.
Then, complete the course resources part of the worksheet. This activity is intended to help you get organized for the quarter ahead by compiling resources for your courses into one location.
Submission: Save the document when you are done, and move on to Part II below. We will revisit this document in Part III of Project 1 and submit Part I together with Part III.
This project is written from the perspective of a command-line interface (used interchangeably with the word "shell"). If you aren't sure how to open a command-line interface on your computer, UW's eScience Institute has a tutorial on this page that will help familiarize yourself with the command-line interface. If you use this link, skip the "Download Files" and "Install Software" sections, as they are not relevant for this course. Only the "How to open a new shell" section near the bottom is relevant for us. Once you have a shell open, you can move onto the next steps.
This project will require you to use a tool called git
, a tool that manages 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.
Here is some terminology for using git
: A repository is a single directory (including its subdirectories)
that git
can keep 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 (which are outlined in these instructions), or as a GUI application. Before continuing, 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 operating system, whether that's Windows, MacOS, or Linux. If you are using Windows, use the “Git Bash” application you just installed to run the commands below.
cse390b-22sp-students/cse390b-22sp-[CSE NetID]
) created for you already. If not, please contact your instructor as soon as possible so that we can create one for you.SSH stands for "Secure Shell." SSH keys serve as an access credential to connect to a server. This will allow you to access your GitLab repository without having to authenticate (i.e., type your password) every time you connect to your GitLab repository. This allows you to speed up your workflow.
cat ~/.ssh/id_rsa.pub
.ssh-keygen -t rsa -C "[CSE 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:
cd [Preferred local directory to store your repository]
cd /Users/ericfan/Documents/
git clone [Clone with SSH URL]
cd cse390b-22sp-[CSE NetID]
Read the README.md
file located in the root of your repository to learn more about Project 1.
/cse390b-22sp-[CSE NetID]/projects/p1/
.about_me.txt
.Now, from the command-line, execute the following commands:
git status
modified: about_me.txt
git add about_me.txt
git status
, you should see the message: Changes to be committed:
with your modified about_me.txt
file: modified: about_me.txt
git commit -m "Update about_me.txt"
git add
on) with the provided message.git push
git push -u origin master
on the first commit (only).Make commits often! They allow you to make checkpoints in your projects that you can always revisit.
Whenever you submit a project in this course, you’ll “tag” the last commit so the course staff knows what version of your code you would like us to grade. The following instructions are for Project 1 but can be adapted for every project:
git tag project-1
git push --tags
git push
command publishes tags to the GitLab server (viewable in the web interface).p1_Course Resources Worksheet & GitLab Setup.docx
, record an estimation of how long you think the project will take (this step should be completed after reading through the instructions of each project), how long the project actually took, and a short, written reflection on the project went for you.
Submission: With Parts I & III completed, save the document as a PDF and submit the document on Gradescope under the assignment named Project 1: Course Resources Worksheet & GitLab Setup.
Project 1 will be completed once you have submitted this document to Gradescope and pushed your GitLab changes with the project-1
tag.
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.