1 Before the First Class
This page tells you everything to set up before the first lecture of CMSC 389A. None of it is hard, but some steps (GitLab accounts, SSH keys) have a delay built in, so do this early. Extension requests caused by not being able to obtain the first assignment will be denied.
The golden rule of this course: ASK AI WHEN STUCK. This is a course about developing software with GenAI, and your setup is your first chance to practice. If a command fails, paste the exact error message into Claude (or the Claude Code extension once you have it installed), say what OS you are on and what you were trying to do, and follow the conversation until it works. Only email the course staff if AI and the linked troubleshooting docs both fail you.
1.1 Checklist
By the first day of class you should have:
Installed Git, VS Code, the Claude Code VS Code extension, and Python 3.12.
A working UMD CS GitLab account whose username is exactly your directory ID.
SSH authentication set up between your machine and GitLab.
Project 0 checked out, cloned, and verified with ./public.sh.
A submission of Project 0 on Gradescope.
Read the syllabus, and Chapters 1 and 2 of Pro Git.
1.2 Install the Tools
Keep this short: install each tool the standard way for your OS, then
verify it from a terminal. Ask AI when stuck —
Git: Download from git-scm.com (macOS users can also run xcode-select –install). Verify with git –version.
WSL (Windows only): Install WSL with Ubuntu. All course work on Windows happens inside WSL, not PowerShell or CMD.
VS Code: Download from code.visualstudio.com. Windows users should also install the WSL extension.
Claude Code: In VS Code, open the Extensions panel, search for Claude Code, and install it. Sign in when prompted.
Python 3.12: Download from python.org (or use your package manager; Windows users install it inside WSL with sudo apt install python3.12). Verify with python3 –version.
1.3 Set Up Your GitLab Account
We use the UMD CS GitLab (not GitLab.com!) to distribute starter code and to collect your work. Log in ASAP so your account exists before the first assignment goes out.
One known quirk: GitLab sometimes appends a stray 1 to newly created usernames. Our grading scripts match on your directory ID, so check that your username is exactly your directory ID and fix it in Preferences if not. For example, if your directory ID is student but GitLab created student1, change it to student. (If your directory ID really is student1, you should have exactly one 1 at the end.)
1.4 Set Up SSH Authentication
Windows users: do all of this in WSL, not PowerShell/CMD.
Open a terminal and run (with your GitLab email —
terpmail or personal both work): ssh-keygen -t ed25519 -C "your_email@example.com"Press Enter to accept the default file location. If it asks whether to overwrite an existing key, press Ctrl-C —
you already have one. Choose a short passphrase; you will type it often, and a weak passphrase beats no passphrase. Print and copy your public key:
cat ~/.ssh/id_ed25519.pubGo to your GitLab SSH keys page, click Add a new SSH key, and paste it. It should look like ssh-ed25519 <hash> <your email>.
Optional: use ssh-add so you don’t retype the passphrase on every push/pull (Windows users: follow the Linux instructions in WSL; skip the hardware security key section).
If something goes wrong, ask AI first, and see GitLab’s SSH troubleshooting page.
1.5 Check Out Project 0
These steps apply to every project in the course.
Check out the project at cs.umd.edu/cmsc389a to create your repository (each project has its own link), then click the generated link to visit your repository page.
Windows users: clone into the WSL filesystem, not the Windows filesystem. Your path should not start with /mnt; run cd ~ first.
Create a course directory and clone with the SSH link (not HTTP), substituting your directory ID:
mkdir ~/cmsc389A cd ~/cmsc389A git clone git@gitlab.cs.umd.edu:cmsc389A/a-hero-zero-with-a-capital-z-YOUR_DIRECTORY_IDYou can also copy the SSH link from the blue Code button on your project’s GitLab page.
1.6 Verify Your Setup
From inside the cloned project directory, run:
./public.shYou should see no errors, and it will create a p0.report file that the autograder processes when you submit.
Windows users: if you see /bin/bash^M: bad interpreter, first confirm you are in WSL and your path does not start with /mnt (if it does, delete the folder and re-clone in WSL). Then fix the line endings and rerun:
vim public.sh -c "set ff=unix" -c ":wq"
git config --global core.autocrlf input
./public.shAnything else fail here? Ask AI —
1.7 Submit to Gradescope
Push your latest changes with git add, git commit, and git push. (If you get an author identity error, run the git config commands it shows, with your GitLab email and name.)
On Gradescope, click the project, then click GitLab at the bottom right of the popup window.

Sign in, then click Submit Project next to the project you want to submit.

The timestamp shown may not be synced with GitLab; that’s fine —
1.8 Reading
Read the syllabus before arriving on Tuesday.
Read Pro Git, Chapters 1 and 2.