Thanks for your interest in helping to develop Python 200! We're excited to have you on board! 🎉 If you ever need help with any of the steps here, please reach out and ask for help! Contributors are expected to adhere to our Code of Conduct.
GitHub contributions will mainly come through PRs. Before making a PR, you need to first set up a local version of the repo. There, you can work on feature branches, such as individual lesson plans, that will get merged into main.
Firs, set things up so you have a local copy of the repo based on a fork of the CTD repo:
-
Fork the Python 200 repo at GitHub
-
Clone your fork locally
git clone https://github.com/YOUR-USERNAME/python-200.git
cd python-200 -
Set the upstream remote
git remote add upstream https://github.com/Code-the-Dream-School/python-200.git
Once you are set up with the repo, you can start your work by making a local feature branch (let's call it week1_module2).
Before creating a branch, be sure your local
mainis up to date with the upstreammain(for this you can dogit pull upstream main).
-
Create and switch to feature branch
git checkout -b week1_module2
-
Make your edits and commit Once you are in your branch, make the edits you want, and make your commits. Please be sure to use clear and descriptive commit messages.
git commit -m "Add explanation of p-value for week1 lesson"
See Pull request guidelines below for details when working on features.
-
Push branch to your fork
git push origin week1_module2
-
Open a pull request At your fork on GitHub, click on "Compare & Pull Request" and open a PR to merge your branch into the
mainbranch of the upstream repo. Any additional commits you push to that same branch will automatically be added to the open PR.
The PR will go through review before being merged into main. Thank you for your efforts!
- Please keep PRs focused and not too large (avoid bundling unrelated changes).
- Our lessons are in individual markdown files in the
lessonsfolder. Images should be in theresourcesfolder within each lesson's folder. - Do not commit sensitive data (such as API keys or passwords).
- Add a short summary of what you are changing in the PR description.
- Use
snake_casefor file and folder names- Exception: capitalizing abbreviations (
AI) is ok for folders if it helps readability (but please not for files).
- Exception: capitalizing abbreviations (
- If relevant, please mention related issues in the PR by mentioning the
#issue-number. - Some modules have associated jupyter notebooks. These should go in
resources/. - For jupyter notebooks, it is very important to clear outputs before committing changes. You can do this with the following command before commiting:
jupyter nbconvert --clear-output --inplace path-to-nb.ipynb - Each lesson directory contains a
resourcesfolder to place essential images, data (CSV/JSON files), etc. for the lesson. A few guidelines for resources:-
Keep file sizes small (under 1MB); large datasets should live outside the repo to be downloaded in individual lessons.
-
Use jpg for images to keep files small.
-
Use descriptive filenames, e.g.
histogram_example.jpgorsales_data_sample.csv. -
Reference resources with relative paths. For example:

-
Again, thank you for helping with Python 200! ❤️
As mentioned above, please reach out if you need help getting started, or get stuck with any of the above steps. We are happy to provide support.