Teaching Python package development: A structured course with learning resources and an instructor’s guide
Journal of Open Source Education · 2026 · 9(97), 292
student-paper, teaching
Abstract
Although there are many open online courses aimed at teaching Python programming, few educational resources focus on the specific skills required for understanding and developing Python packages. Existing materials typically emphasize programming basics, but the development of Python packages, an essential skill for contributing to the open source community requires deeper knowledge of packaging infrastructure, dependency management, development environments, and best coding practices. This gap leaves learners unprepared for the practicalities of structuring packages, managing dependencies, implementing version control, and ensuring code quality.
To address this, we present educational resources designed to teach Python package development. Our materials include a course plan, detailed syllabus, slides, and practice notebooks that cover introductory sessions on Git and Python, an initial session on identifying project topics, a session on best practices, and a code review session. Additionally, we provide a detailed playbook for instructors to guide course delivery. In the course project, students develop Python packages that extend an existing open source system through a plugin architecture. This approach allows them to implement a standalone package from scratch while integrating their work into a functioning ecosystem.
The course materials were developed as part of the “Open Source Project” offered by the Digital Work Lab at Otto-Friedrich-Universität Bamberg. Informed by iterations and refinements over four semesters, these resources provide a well-structured and engaging learning experience. The course repository consists of a landing page, featuring course pages, instructor notes, slides, and practice notebooks. A preconfigured development setup is offered for GitHub Codespaces, ensuring that the required development environment is preinstalled. The course materials are hosted on GitHub and available for reuse and adaptation.
Open access PDF
Citation (APA)
Wagner, G., Thurner, L., Tang, C., & Ott, S. (2026). Teaching Python package development: A structured course with learning resources and an instructor's guide. Journal of Open Source Education 9(97), 292. https://doi.org/10.21105/JOSE.00292
Citation: BibTeX
@article{WagnerThurnerTangEtAl026,
title = {Teaching Python package development: A structured course with learning resources and an instructor's guide},
author = {Wagner, Gerit and Thurner, Laureen and Tang, Carlo and Ott, Stella},
journal = {Journal of Open Source Education},
year = {2026},
volume = {9},
number = {97},
pages = {292},
url = {https://jose.theoj.org/papers/10.21105/jose.00292},
abstract = {Although there are many open online courses aimed at teaching Python programming, few educational resources focus on the specific skills required for understanding and developing Python packages. Existing materials typically emphasize programming basics, but the development of Python packages, an essential skill for contributing to the open source community requires deeper knowledge of packaging infrastructure, dependency management, development environments, and best coding practices. This gap leaves learners unprepared for the practicalities of structuring packages, managing dependencies, implementing version control, and ensuring code quality.\nTo address this, we present educational resources designed to teach Python package development. Our materials include a course plan, detailed syllabus, slides, and practice notebooks that cover introductory sessions on Git and Python, an initial session on identifying project topics, a session on best practices, and a code review session. Additionally, we provide a detailed playbook for instructors to guide course delivery. In the course project, students develop Python packages that extend an existing open source system through a plugin architecture. This approach allows them to implement a standalone package from scratch while integrating their work into a functioning ecosystem.\nThe course materials were developed as part of the “Open Source Project” offered by the Digital Work Lab at Otto-Friedrich-Universität Bamberg. Informed by iterations and refinements over four semesters, these resources provide a well-structured and engaging learning experience. The course repository consists of a landing page, featuring course pages, instructor notes, slides, and practice notebooks. A preconfigured development setup is offered for GitHub Codespaces, ensuring that the required development environment is preinstalled. The course materials are hosted on GitHub and available for reuse and adaptation.},
doi = {10.21105/JOSE.00292}
}Citation: RIS
TY - JOUR
AU - Wagner, Gerit
AU - Thurner, Laureen
AU - Tang, Carlo
AU - Ott, Stella
TI - Teaching Python package development: A structured course with learning resources and an instructor's guide
T2 - Journal of Open Source Education
PY - 2026
VL - 9
IS - 97
SP - 292
DO - 10.21105/JOSE.00292
UR - https://jose.theoj.org/papers/10.21105/jose.00292
ER -