# SWE course discussion
**Group:** Anthony Arendt, Vikas Pejaver, Johann Brehmer, Stéfan van der Walt
## Target audience
Scientists who want to build their own libraries, research pipelines.
## Basic requirements
Proficiency in the programming language taught is required.
## Course outline
### Session 1
For this day, we will need a good example package; something that doesn't require too much coding, but would be fun to build up.
Building a basic package: file structure, licensing, requirements.
Documenting package (e.g. Sphinx + sphinx-api)
Testing (e.g. pytest)
### Session 2
Collaboration: Git, GitHub PR workflow
- Using branches, making a PR from that branch, updating PRs
- How do write an effective issue
- How to structure your pull request
- How to review other people's code
### Session 3
Deeper knowledge around programming & QA. How to write *good* code, not just *working code*.
- Continuous integration via GitHub actions
- Code style; what does healthy code look like (similarly, what are warning signs in bad code)
## Practical implementation
By compressing these sessions, they can be fit into three days of teaching. Or, by adding a practical project, it can be expanded to five days.