<jupyter_start><jupyter_text>Welcome to HDS5210===To help develop some good programming habits during this class, one thing we will do is use GitHub.com to manage weekly assignments. Once you've created a GitHub.com account, you can follow the instructions below to get a current copy of the course materials and exercises.Generate SSH Key---GitHub.com uses a protocol called SSH (Secure SHell) to manage communications between client computers and its services. The SSH protocol uses a private/public key pair to encrypt communications and verify the authenticity of users. For that protocol to work, GitHub.com has to know a public key, whose private key is configured on the computer that will be running git commands, in this case, our Jupyter server. You can also do commenads like this on your own laptop if you want to access the class files on your local machine rather than only through the web interface.<jupyter_code>%%bash
cd ~
rm -rf .ssh
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa -q
cd ~/.ssh
cat id_rsa.pub<jupyter_output>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB<KEY>3NY2ADXwHBvveErMsdDDjSLvXNpAbn paulboal@ip-172-31-48-213<jupyter_text>Add SSH Key to GitHub.com---Take the value you get from above and add it as an SSH key in GitHub.com.* Login to https://GitHub.com* Click your profile image in the upper-right corner and choose `Settings`* Choose SSH and GPG Keys from the left-hand menu* Click New SSH Key in the upper-right corner* Use a title of something like SLUCOR and then paste the text from above into the key text box.* Click Add SSH Key Configure some git settings---Set some basic Git settings like email and name.Replace my example user name and email address with yours.<jupyter_code>%%bash
git config --global user.email "<EMAIL>"
git config --global user.name "<NAME>"<jupyter_output><empty_output><jupyter_text>Clone the class repository---Some terms for understanding git and github.**repository** - A "project" or an area where you can control access and manage a related set of files.  Typically you'll have one project per repository, but that may not be the case on much larger projects.**clone** - Get a brand new copy of an existing repository.**branch** - A way to split off from a single starting version of project code, make separate and potentially independent changes, and then merge those changes made in isolation back together.**chekcout** - Switch from one branch of code to another.**commit** - Take all the file edits you've made and snapshot the code at this point.  Now, you can return to that code at any point in time in the future.**push** - Take the set of changes you've made and synchronize them with the github server.  Now other users that you authorize can see the changes you've made.**pull** - Ask github for any changes that other people may have made since the last time you synchronized, and try to merge them into your local code automatically.<jupyter_code>%%bash
cd ~
rm -rf slucor-hds5210-2018-1
echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
git clone <EMAIL>:paulboal/slucor-hds5210-2018-1.git
ls -l slucor-hds5210-2018-1
%%bash
cd ~/slucor-hds5210-2018-1
git pull<jupyter_output>Already up-to-date.
StarcoderdataJupyterStructuredCleanDedup