
Capstone Design
By the end of this session, you will be able to:
main.
Before writing code, you need a GitHub identity.
Important
Why 2FA matters for engineers
Losing access to your GitHub is like losing access to your lab notebook, code, and design files at once. 2FA is required in many companies and research labs.
To work efficiently, install these three tools:
| Tool | Purpose |
|---|---|
| Git | Version control engine tracking changes to your code. |
| GitHub Desktop | GUI to manage repositories without the command line. |
| VS Code | Editor/IDE where you write and edit code. |
Once your instructor adds you to the GitHub Organization:
Team-A-Project.Tip
If “Open with GitHub Desktop” doesn’t appear, first install GitHub Desktop and sign in with the same GitHub account.
When you “Open with GitHub Desktop,” it will ask: Where should I save this?
Documents/GitHub/Team-A-Project.Conceptual View

With the repo cloned:
Inside VS Code:
index.html, script.js, main.c, filter.py).Warning
Git only tracks saved changes. If you forget to save, your work is not in the next commit.
Once you’ve completed a small task or feature:
Add UART initialization or Fix FFT windowing bug.Note
Think of a commit as a checkpoint in your lab notebook. Push sends that checkpoint to the shared notebook on GitHub.
You are not working alone. Before you start each session:
This updates your local files with your teammates’ latest work.
Important
Pull before you start coding each day. This reduces merge conflicts and keeps everyone aligned.
So far: you can clone, edit, commit, push, and pull.
In many student projects:
main.main.In professional teams:
main is often protected.main.Tip
You can already start using this professional model in class projects, even if GitHub doesn’t force it. Just agree as a team to use branches + PRs.
mainA protected branch (usually main):

Important
On real engineering teams, main often represents production code:
Instead of pushing to main:
feature-login-uibugfix-adc-saturationlab3-filter-implementationTypical workflow:
main.main.In GitHub Desktop:
main.feature-sensor-readout.main.You’re now on that branch:
feature-sensor-readout.Tip
Include your initials or issue number if helpful: feature-sensor-readout-az or issue-42-sensor-calibration.
On your feature branch:
sensor.c and sensor.h.main.py to add plotting.Then in GitHub Desktop:
Once your feature is ready:
main (or the protected branch).feature-sensor-readout).Add temperature sensor readout.Note
A PR is a request for review, not just a “merge button.”
In a three-person team:
GitHub settings can:
Important
Cultural rule used by many teams: > “No one merges their own code without review.”

Detailed steps:
feature-login.main.Reviewers should:
Common GitHub review actions:
Tip
As a reviewer, try to understand the intent: “If I had to maintain this code later, would I understand what it does?”
After approvals:
Result:
main.main now has the new functionality.
Conflicts happen when:
GitHub will:
The person attempting to merge must:
main.main into their feature branch locally.Warning
Ignoring conflicts is not an option—Git will not merge until they are resolved.
Let’s walk through a complete cycle:
feature-login.feature-dashboard.bugfix-sensor.Each student:
main.main.Question for students: How would you decide who reviews which PR to balance workload?
Imagine your team is building a signal acquisition and processing pipeline:
feature-adc-driver).feature-dsp-filter).feature-logging).Professional workflow:
Protecting main ensures:
Even if your instructor allows direct pushes to main, adopt this team rule:
No one merges their own code into
mainwithout at least one teammate’s review.
This helps you:
Tip
Write this rule in your repository’s README.md as part of your team contract.
Before next lab, try this with your team:
TEAM.md file).main.main.