CodeUW gives UW students the opportunity to gain hands-on coding experience by contributing to scientific software. The repo maintains a collection of tasks across a variety of projects from the Scientific Software Engineering Center (SSEC). The tasks are defined by SSEC engineers and are meant to be small and self-contained pieces of work that can be done in under a week.
By working on these tasks, students have the opportunity to work with SSEC engineers, who will act as mentors, review the code and provide feedback.
- Being a UW student
- Familiarity with GitHub:
- Having a github account
- Knowledge of basic operations, such as pulling/forking a repo, creating branches, making commits and pushing.
- This is a good resource for getting started on GitHub.
- Programming experience
- Fluency in the task's programming language. Most tasks will use
python
, although certain tasks may require other languages. - For python, familiarity with virtual environments and package managers such as
venv
,pip
andconda
.
- Fluency in the task's programming language. Most tasks will use
- Search through the list of tasks in the repo to find a suitable one. Tasks are categorized in 3 levels:
- L1: Simple task that can be done in a few hours. These tasks have low coding complexity and won't require much project ramp-up time. Great task to practice the life-cycle of a pull request.
- L2: Moderate task which may take a couple of days. Will likely require setting up a virtual environment to run the project and get a good understanding of a portion of it, e.g. a module.
- L3: A step up from L2, likely to take about a week. This type will be either higher coding complexity or have broader scope (ie. multiple modules).
- Assign the task to yourself. The expectation is that you'll complete the task within the expected timeline (per level) so make sure you'll be able to devote a few hours a day to this.
- Email the the task owner (SSEC engineer) to let them know you'll be working on this and to ask any initial questions/clarifications
It may be helpful to review this tutorial on how to contribute to open source projects. A typical task workflow is:
- Fork the code repository specified in the task and clone it locally.
- Review the repo's README.md and CONTRIBUTING.md files to understand what is required to run and modify this code.
- Create a branch in your local repo to implement the task.
- Commit your changes to the branch and push it to the remote repo.
- Create a pull request, adding the task owner as the reviewer.