
DATA 510: Data Science Capstone
June 8, 2026
By the end of this session, you will be able to:
deliverables/.Encouraged: Quarto (.qmd) for write-ups, with rendered HTML/PDF committed in deliverables/ (see the Block 1 lecture today).
Also permitted: Google Docs, Microsoft Word, LaTeX, or any editor that exports PDF. Drop the PDF (and optional source) in the correct milestone folder:
deliverables/M1-proposal/
deliverables/M2-data-summary/
deliverables/M3-poster-draft/
deliverables/M4-writeup-draft/
deliverables/M5-final/
Git still tracks whatever you commit. I grade the milestone artifact, not your toolchain religion.
Your DS3 repo is not just file storage. Git is a time machine and evidence log:
final_v2_REAL.pdf.Course weight: Git workflow is part of Project process and practices (5%) on the syllabus. Commit quality matters weekly, especially in the last five weeks.
| Term | What it is |
|---|---|
| Git | Version control on your machine (commits, history, merges) |
| GitHub | Hosting + collaboration (remote repo, access control, pull requests) |
You run Git locally. You push to GitHub so collaborators, peer POs, and I can read your repo.

Charter, backlog, code, notebooks, and deliverables/ all live in one repo. Commit often so the story is visible.
You are the only author. Workflow is linear:

Rule: If it took more than 30 minutes and you might need it back, commit. Small commits beat heroic Sunday dumps.
Minimum rhythm I expect:
README.md Iteration Review before classsrc/, notebooks/, or data/processed/ as appropriate.qmd source if you use Quarto) under deliverables/CHARTER.md / BACKLOG.md updates when they changeDo not commit: secrets, huge raw data (check .gitignore), .quarto/ cache, personal notes outside the repo structure.
Write commit messages a peer could understand in one line. fixed stuff is not a message.
One GitHub repo per project. Everyone clones the same remote. You coordinate so two people do not silently overwrite each other’s work on main.

Before you edit: git pull. After you finish a logical chunk: git add, git commit, git push.
| Strategy | When to use |
|---|---|
| Different files | Teo owns src/ingest/, Ben owns notebooks/03_viz.ipynb |
| Quarto includes | One writeup.qmd; each person edits _sections/methods.qmd, _sections/results.qmd |
| Different milestone folders | One person leads M2 data doc, another M3 poster (still review together) |
Take turns on main |
Pull, edit, push quickly; communicate in #standup |
If two people edit the same line of the same file without pulling, Git will ask you to merge.
From the Quarto lecture: split large write-ups with include shortcodes (each teammate owns a section file):
{{< include _sections/methods.qmd >}}
Parent writeup.qmd stays stable; merges happen in smaller files. Fewer conflicts than one 3,000-line document.
If you write in Word or export from Google Docs:
deliverables/, commits)..docx with the same filename from two laptops without pulling first.Option A (recommended): Install Xcode Command Line Tools (includes Git):
Option B: Install Homebrew then:
Verify:
Optional: GitHub Desktop for a GUI. I still want you comfortable with commit / push in the terminal for README reproducibility.
Set once per machine (use your Willamette email):
Install the Git built-in features (and GitHub Pull Requests extension if you use PRs). Source Control panel shows changed files; integrated terminal runs the same commands below.
After you create a repo from the DS3 template on GitHub:
Replace the URL with your repo (HTTPS or SSH if you have keys set up). Open the folder in VS Code: File > Open Folder.
Clone once. After that, use git pull and git push, not clone again.

| Command | Purpose |
|---|---|
git status |
See modified and untracked files |
git add <file> |
Stage a file for the next commit |
git add . |
Stage all changes (use carefully) |
git commit -m "message" |
Save a snapshot locally |
git push |
Send commits to GitHub |
git pull |
Download and merge remote changes |
git log --oneline -5 |
Recent history (sanity check) |
Good:
M1: add proposal PDF and charter alignment noteIngest: AQS pull script and raw snapshot 2026-06-08README: week 5 iteration reviewWeak:
updatesasdffixed mergeIf you and a teammate edit the same lines in a text file (.qmd, .py, .md, .R), the second person to push may need to merge:
git pull<<<<<<<, =======, >>>>>>>git add the resolved filegit commit (merge commit)git pushVS Code has a merge editor that color-codes choices. Ask for help the first time; it is a rite of passage.
PDF, PNG, .docx, and most binaries cannot be merged line-by-line. Git can store them, but if two people commit different versions of proposal.pdf, Git picks one history or forces you to choose a file, not blend contents.
Team practice for PDF milestones:
proposal-draft-2026-06-08.pdf) until you agree on final, orMerge: Preserves branching history; creates a merge commit. Default and fine for this course.
Rebase: Rewrites history to look linear. Advanced; optional for solo polish, avoid on shared main unless your team knows what they are doing.
You do not need rebase to pass DATA 510. You need pull, resolve, push.
For parallel feature work without blocking main:
Open a Pull Request (PR) on GitHub: teammate reviews, then merge into main. Everyone git pull on main afterward.

Solo students: optional. Working directly on main with frequent commits is acceptable.
Minimum bar for the course: visible commits on main (or merged PRs) before milestones. Empty repos on due dates hurt everyone.
deliverables/ and GitEach milestone folder should contain:
.qmd, refs.bib, figures)README.md in the folder (optional but kind): status, date submitted, known gapsCommit both source and rendered PDF when using Quarto so peer POs can open HTML/PDF without rendering.
| Bad habit | Better habit |
|---|---|
| One 200-file commit Sunday night | Daily commits per task or PBI |
| “It works locally” but never pushed | Push at end of each work session |
| Email files to teammates | Push to GitHub; link in Discord |
If your laptop dies, unpushed commits are gone. GitHub is the backup your team shares.
LucasCordova and peer POs have access.gitignore surprisesThis is the hands-on we deferred from the Quarto lecture because many of you have not cloned your repo yet. You will:

From the Block 1 Quarto lecture (course site):
.qmd)Save both to your laptop. You will copy them into your repo in Step 3.
If you already have the repo locally, open that folder in VS Code and run git pull. Otherwise:
Create the repo from the DS3 template on GitHub first if you have not already.
deliverables/M4-writeup-draft/Adjust paths to where you saved the downloads. Rename the skeleton to writeup.qmd so the output PDF is writeup.pdf.
Optional tonight: paste a sentence or two from your M1 proposal into the Introduction stub. Empty stubs are fine for this exercise; I am checking that render + Git + Canvas work.
From your repo root in the VS Code terminal:
Or Command Palette: Quarto: Render with writeup.qmd open.
Success: deliverables/M4-writeup-draft/writeup.pdf exists and opens. If PDF fails, run quarto install tinytex once, then try again. HTML output is a bonus; Canvas wants the PDF.
Commit source and PDF so peer POs and I can open artifacts without re-rendering.
Open the Week 5: Write-Up Skeleton PDF assignment on Canvas. Upload writeup.pdf from deliverables/M4-writeup-draft/.
Solo: you submit your own PDF.
Team: one person uploads for the team; list every member in the Canvas comment or text box as the assignment instructs.
Block 2 continues with data engineering consultations after this exercise. Use Git between conversations, not instead of talking to your team.
Questions: Discord #general or #blockers, or grab me in studio.