| Checkpoint | Done up to | Due (11:59pm) |
|---|---|---|
| A | Task 0.1: your name, repository link and seed; and upload your repository URL to Canvas | Saturday, Oct 10 |
| B | Task 3.1 | Saturday, Oct 31 |
| C | Task 5.1 | Saturday, Nov 7 |
| Final | The whole report, .ipynb and .html, also uploaded to Canvas |
Saturday, Dec 5 |
Example of a good disclosure: โI tried to fit a model with function X and got error Y. AI helped me see the error came from a missing value.โ
Important
Not disclosing AI use is academic misconduct. Submissions suspected of inappropriate use of AI will be flagged by the teaching team, and handeled by a case-by-case basis.
Tip
If you prefer a video walkthrough, you can watch this video.
Follow along on your laptop. Every step stays on this page, so you can come back to it.
| Part | Where | What you do | Git word |
|---|---|---|---|
| 1 | GitHub | Make your own copy of the project template | |
| 2 | JupyterHub | Copy your repository into JupyterHub | clone |
| 3 | JupyterHub | Fill in your name, link and seed | |
| 4 | JupyterHub | Take a snapshot | add, commit |
| 5 | JupyterHub โ GitHub | Send the snapshot to GitHub, with a token | push |
| 6 | GitHub โ JupyterHub | Bring a change made on GitHub back | pull |
| 7 | JupyterHub โ GitHub | Add a new file of your own | add, commit, push |
Open the project template. Click Use this template, then Create a new repository.
Name it dsci-100-project- plus your first and last name, e.g. dsci-100-project-sky-sheng. Leave it Public. Click Create repository.
Click the green Code button. Under HTTPS, click the copy icon. You need this address three times: to clone, in your notebook, and on Canvas.
On Canvas, click JupyterDSCI100 in the menu on the left.
Click Start My Server. It can take a minute.
You should see / at the top and the dsci-100-student folder below it. Stay here. Donโt open dsci-100-student.
Click the Git icon (the diamond) on the far left, then Clone a Repository.
Paste the HTTPS address from step 3. Leave both boxes as they are. Click Clone.
You see Successfully cloned, and a folder with your repositoryโs name appears on the left.
Double click your repositoryโs folder, then double click dsci-100-project-notebook.ipynb.
Scroll to Part 0. Double click the cell with First and Last Name to edit it.
Fill in your name and your repositoryโs HTTPS address from step 3. Change the seed to your student number. Run both cells, then save.
โ ๏ธ Save with Cmd+S (Mac) or Ctrl+S (Windows). Git only sees what is saved.
Click the Git icon again. Hover over your notebook under Changed and click its +.
Your notebook is now under Staged. Write a short message about what you did, then click Commit.
First time only. Type your name and the email you used to make your GitHub account. Click Ok.
Git writes your name and email on every snapshot. GitHub uses the email to match the snapshot to your account.
Your repository on GitHub still shows 1 Commit. Open the notebook there: your name is not filled in yet.
Commit saves the snapshot in JupyterHub only. GitHub has not heard about it yet.
Back in JupyterHub, click the cloud with the up arrow. That is push. The orange dot means you have commits GitHub doesnโt have yet.
A window asks for two things.

Important
skysheng7. Not your real name.On GitHub, click your profile picture in the top right, then Settings.
Scroll to the bottom of the menu on the left. Click Developer settings.
Click Personal access tokens, then Tokens (classic). Click Generate new token, then Generate new token (classic).
Under Note, give it a name you will recognize, e.g. DSCI 100. Set Expiration to 90 days, so it lasts past the final deadline.
repo onlyTick the box next to repo. Its sub-boxes tick themselves. Leave every other box empty.
repo?
repo. The other boxes are for things like running automated workflows, managing organizations, or deleting repositories, which this course never uses. If a token with every box ticked ever leaks, someone could delete all your repositories with it.
Scroll to the bottom and click Generate token.
Click the copy icon next to your token, and save it somewhere safe, like a password manager or a note on your own laptop.

Important
Back in JupyterHub, click push again. Type your GitHub username, paste your token, tick Save my login temporarily, and click Ok.
With the box ticked, JupyterHub remembers your token for a while, so you donโt paste it on every push. When it asks again, paste the same token.
You see Successfully pushed.
Refresh your repository on GitHub. It now shows 2 Commits, with your message at the top.
The time shown is when you committed in JupyterHub, not when you pushed.
Click the notebook on GitHub. Your name, link and seed are there.
That is Checkpoint A done. ๐
Sometimes you change a file on GitHub instead of JupyterHub. Letโs try it. On your repository, click the pencil next to README.
Type a new sentence at the bottom. Click Commit changesโฆ.
Write a commit message, then click Commit changes. This snapshot is made on GitHub, so there is nothing to push.
Open README.md in JupyterHub. Your new sentence is not there.
In the Git tab, the cloud with the down arrow has an orange dot: GitHub has a snapshot you donโt. Click it. That is pull.
You see Successfully pulled.
Open README.md again. Your sentence is there.
โ ๏ธ If you ever edit on GitHub, pull in JupyterHub before you start working. Otherwise your next push gets rejected.
Check you are inside your repositoryโs folder (see the path at the top). Right click on the empty space below your files, then New File.
Type a name, e.g. my_note.txt, and press Enter. Double click it to open it.
Type a sentence. Then File โ Save Text, or Cmd+S (Mac) / Ctrl+S (Windows).

Open the Git tab. my_note.txt is under Untracked: Git has never seen it before. Hover over it and click its own +.
The files with checkpoint in their name are backups JupyterHub saves on its own, so you can go back to an earlier version. They are not part of your project, so they stay untracked.

my_note.txt is now under Staged. The A next to it means a new file is being added.
Write a message and click Commit.
The push button has an orange dot again: 1 commit GitHub doesnโt have. Click it.
You ticked Save my login temporarily in step 26, so JupyterHub pushes without asking. Refresh your repository on GitHub: my_note.txt is there.
If it is not on GitHub, we canโt see it.
| You see | What it means | Fix |
|---|---|---|
Authentication failed, or the sign in box keeps coming back |
Wrong username, or a password instead of a token | GitHub username, then paste the token. Expired? Make a new one. |
Repository not found when cloning |
Typo in the address, or the repository is private | Copy the address again from the green Code button. Check it is public. |
Updates were rejected because the remote contains work that you do not have locally |
GitHub has a snapshot you donโt, e.g. an edit made on GitHub | Pull, then push. |
nothing to commit, working tree clean |
Nothing new to save | Save your notebook first, then stage it with +. |