Due Tue, 10/27 at 11:59pm
Project overview
As a class, you will build a terminal app for searching UNCA course sections and planning a schedule. The app uses Python and Textual. You will begin with small, independent tasks, then connect those pieces to the app.
The starter project is in the project01-fall2026
repository. Find tasks in the issue tracker
and read the README
for setup and a preview of the app.
1. What you are required to do
Complete three Round 1 issues and submit one pull request (PR) for each issue. Each PR must implement its issue and include tests. Work on one issue at a time, in your own branch. Do not edit another student’s files or another issue’s files unless your instructor asks you to.
Claim an issue
- Open the project’s GitHub Issues page.
- Filter by the “Round” label (for the first round, select Round 1).
- Choose an issue that has no assignee. Read its requirements and confirm it is still unassigned before claiming it.
- Assign the issue to yourself. If GitHub will not let you assign it, comment that you want to claim it and ask your instructor to assign it.
- Start as soon as possible. Open a finished, review-ready PR within 7 calendar
days of claiming the issue. If you are blocked, comment on the issue before the 7 days are up and explain what you tried and what is blocking you.
- If you do not open a review-ready PR within 7 days, the instructor may unassign the issue so another student can claim it. Keep the issue updated as you work.
All PRs must be submitted, approved, and merged into main by the deadline
These are suggested checkpoints to help you make steady progress:
| PR | Suggested submission date |
|---|---|
| First PR | Before Thursday, October 8, 2026 |
| Second PR | Before Thursday, October 15, 2026 |
| Third PR | Before Thursday, October 22, 2026 |
Hard deadline: Tuesday, October 27, 2026. All three PRs must be approved and merged into main by this date. Therefore, Oct 23 is the very last day you should be submitting to allow for me to review your code, provide comments if necessary, and allow you to merge. A PR is not complete until it is ready
for review (all tests and linters pass). If you are getting stuck, it is your responsibility to attend office hours and ask questions – most problems are small, so don’t be afraid to ask for help. This stuff can be confusing!
2. Get started
- Accept the GitHub assignment and open your team’s repository.
- Follow the setup steps in that repository’s README.
- Read your assigned issue and the relevant sections of
docs/contracts.md. - Read
course_lookup/tui/README.mdfor a widget issue. - Start a branch from the latest
main. Use one branch per issue and include your name, such asissue-14-<your_name>. Do not commit directly tomain.
For your first issue, start with:
git checkout main
git pull
git checkout -b issue-14-<your_name>
Replace the example branch name with one for your issue and your name.
3. Start each work day by saving and updating your branch
Before you begin work each day, save any changes from your last session in a commit
on your issue branch. Then update your branch with the latest main:
git status
git add path/to/your/changed_file.py path/to/your/test_file.py
git commit -m "Work on issue 14"
git checkout main
git pull
git checkout issue-14-<your_name>
git rebase main
Replace the example file paths, issue number, and branch name with your own. If
git status shows no changes to commit, skip git add and git commit; do not make
an empty commit. Run these commands from the project repository. If a rebase reports
conflicts, resolve them, stage the resolved files, and run git rebase --continue.
If you have already pushed this branch to GitHub, update it after rebasing with
git push --force-with-lease. Ask your instructor for help if you are unsure how to
resolve a conflict.
4. Complete and check your issue
-
Follow the acceptance criteria in your issue.
-
Add tests in the test file named in your issue. Use
make_courseto build test courses and cover normal behavior, edge cases, and unknown data where relevant. -
Run your test file while you work. For example:
poetry run pytest tests/test_filters_identity.py -
Before opening a PR, run the full test suite and both code checks from the README:
poetry run pytest poetry run black --check course_lookup tests poetry run flake8 course_lookup tests -
Fix any failures before you submit. If Black reports formatting changes, run
poetry run black course_lookup tests, then run all three checks again.
5. Submit a pull request
Use this checklist for each issue:
main as the base branch.Implement issue 14: calendar export.## What changed
Describe the code change.
## Why
Explain how it meets the issue requirements.
## How I tested it
List the tests and checks you ran, and why those test cases cover the behavior.
## Issue
Closes #14
#14 with your issue number so GitHub links and closes the issue.Do not merge your PR unless your instructor tells you to. The instructor reviews and
merges the work. See CONTRIBUTING.md in the project repository for the complete PR
instructions.
Sarah will review each review-ready PR within two business days. If a PR needs revisions, Sarah will review your updated PR within two business. Submitting a PR is not the same thing as completing the PR. Completeness is necessary to receive any credit.
6. AI and outside-help policy
You may use AI tools such as ChatGPT or GitHub Copilot to:
- Explain a Python concept, an error message, or a part of the starter code.
- Brainstorm an approach or suggest edge cases for your tests.
- Review code you wrote and point out possible problems.
- Generate a small example or code snippet that you adapt and understand.
You may discuss concepts and debugging strategies with classmates, but each student must write and understand their own issue’s implementation and tests.
Do not ask an AI tool or another person to complete the whole issue, generate the entire implementation or test suite, or make design decisions you cannot explain. Do not submit code you cannot explain. You are responsible for checking that all suggestions are correct and that your tests and code checks pass.
If you use an AI tool, disclose it in your PR description: name the tool and briefly say what you used it for (for example, “ChatGPT helped me understand a pytest error; I wrote and verified the fix”). If you did not use AI, write “AI assistance: none.” Be prepared to explain your code and tests during review.
Grading
- Your project grade is based on completing your three issues, the quality and correctness of your code and tests, and your contribution to the class app.
- Submit your PRs by the suggested checkpoints when possible.
- This is a hard deadline and no late work will be accepted.
- This project is worth 20% of your grade.