This course is part of the Master's curriculum Data Science implemented jointly by TU Graz and the University of Graz. It is intended as a practical introduction to software development practices, workflows and tools commonly used in industry and academia alike.
A collection of exercise problems to supplement the lecture material. Uploading solutions and presenting them in class is part of the course requirements. Updated weekly* for the first half of the semester.
Guidelines and requirements for the course project, including submission deadlines and evaluation criteria. Relevant in the second half of the semester.
Some motivation explaining in how far the contents of this course are relevant in real-world scenarios, as well as administrative information regarding the course structure.
Some fundamentals on using the command line / terminal ("shell"),
in particular in the form of bash.
Introduction to version control concepts and practical usage of Git (mainly from the command line).
Python Tooling essentials (uv, ...), virtual environments,
packaging, dependency management. And Jupyter notebooks.
Documentation via sphinx, profiling and debugging.
A bit on code quality and various best practices. Testing and CI/CD.
Reproducible software environments (conda et al.) and container technologies (Docker/Podman and Apptainer aka. Singularity).
Collaboration workflows. Code reviews (like a human). And a bit about agile software development.
An overview of popular software licenses and their implications. F(indable), A(ccessible), I(nteroperable), R(eusable) principles for software development and data management.