This is a no cheating agreement made between you and the professor. It should be handwritten and is due at the beginning of the next class. On a blank sheet of paper please write the following statement, don't forget to print your name and sign.

If you're not aware, there is a Slack workspace for computer science students here at PSU. If you haven't already, create a Slack account, join the workspace at and add the channel #cs410_510_blockchain All course communication will be done through this platform; check the pinned section for important updates. Note that the course has a corresponding webpage for more permanent information. You can contact the professor via Direct Message @wuchang.

We'll be using GitLab for the course's source control. You can make an account here with your school email address. This can be changed later if you please. Upon completion, use the same credentials to login to GitLab. After logging in you should see the following:

Go to the upper right hand corner and click on the dropdown that is your user profile. You should see the option for "Settings". Click on this option and you'll be taken to a page for customization of your avatar, status, and main settings. In the left hand column there is an entry for SSH Keys. Select that entry and wait here. We're going to create a local public/private key pair to securely transfer data between the local repository and this remote hosted by GitLab.

SSH Keys

The following steps work for Ubuntu and potentially other distros/macOS, although your experience may vary. We'll be using for this example, but feel free to setup SSH keys for your personal machine as well.

Change into the directory where SSH keys are stored:

cd ~/.ssh/

If you have not setup an SSH key before:

ssh-keygen -t rsa

We're specifying rsa here for clarity, although this is the default encryption method. Hitting enter will create a file named id_rsa which we'll use as an example. You can also name your SSH key if you so choose (do note that you may need to add it to a config file). You should now have two more files in the ~/.ssh/ directory. One has a .pub extension- this is your public key. You'll be warned if you mix these two up, but you really should be careful.


Now copy and paste this into the SSH key field on GitLab in your browser. Finally, click "Add Key".

Add Project Members

Next, go to the settings tab and select members. From here you can add members to your project by typing in their username. Add the professor @wu4f as a member to your project, as in the image below. Also, please add the TA @dejef

Create Project

Go back to the projects page by going to the second dropdown tab in the upper left hand corner and selecting "Your Projects". Click "Create a Project" or if you already have a project, "New Project". Name the new project cs410b-<FirstName>-<LastName> even if you're in the 500 section. Make sure the repository is still marked "Private". The instructions provided by GitLab on the next page are great, please use them. They're copied here for convenience. Let's assume you need to make a new repository. So we'll follow the instructions for "Create a new repository".

Git global setup

git config --global "FirstName LastName"
git config --global ""

Create a new repository

git clone
cd cs410b-<FirstName>-<LastName>
git add
git commit -m "add README"
git push -u origin master

Push an existing folder

cd existing_folder
git init
git remote add origin
git add .
git commit -m "Initial commit"
git push -u origin master

Push an existing Git repository

cd existing_repo
git remote rename origin old-origin
git remote add origin
git push -u origin --all
git push -u origin --tags

Adding Necessary Files

So you've added and pushed a Well we'll need to add a few more course related folders. But first, let's deal with the things we don't want in our remote Git repository.

echo -e "env/\n*.pyc\nlib\n__pycache__/" > .gitignore
git add .gitignore
git commit -m "Adding .gitignore"
git push -u origin master

Now we'll create a directory for homework one.

mkdir hw1

Within that directory make file that expresses some understanding of Markdown.

cd hw1

We'll create another file for storing your wallet's public key and your username. This is so we can uniquely identify you and confirm your completion of the exercises. Leave it empty for now.

touch wallet.txt
git add .
git commit -m "Adding hw1"
git push -u origin master

All of the course submissions will be handled via Git. Part of the rubric is that you commit changes to Git frequently. We ask that you also use descriptive commit messages.

Bring up an "Incognito" or "Private Browsing" browser window to setup your account. Go to and login using your account to enable GCP. If you haven't used GCP yet and do not mind temporarily putting your credit card on the account, apply for the $300 coupon and use it to create a new billing account. Otherwise, wait for the instructor to email you a course coupon.

Create Project

First we'll create a Google Cloud project with this name: cs410b-<FirstName>-<LastName> Ensure that all of your screenshots include a unique identifier that can be used to prove you did the work. Your public key in MetaMask, a tool we'll use later, would suffice. This project name is also sufficient.

Associate the billing account for this project with either the $300 coupon or the course coupon.