Software Development [DAT.B31UB]
Lecture with integrated exercisesThis 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.
Resources
- Exercise Problems
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.
- Project Guidelines
Guidelines and requirements for the course project, including submission deadlines and evaluation criteria. Relevant in the second half of the semester.
- Motivation and Administrative Information
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.
- Chapter 1: Highway to Shell
Some fundamentals on using the command line / terminal ("shell"), in particular in the form of bash.
- Chapter 2: Version Control and Git
Introduction to version control concepts and practical usage of Git (mainly from the command line).
- Chapter 3: Unpacking Python, Part I
Python Tooling essentials (uv, ...), virtual environments, packaging, dependency management. And Jupyter notebooks.
- Chapter 4: Unpacking Python, Part II
Documentation via sphinx, profiling and debugging.
- Chapter 5: The Good, The Bad, and The Ugly (Code)
A bit on code quality and various best practices. Testing and CI/CD.
- Chapter 6: ... but it works on my machine!
Reproducible software environments (conda et al.) and container technologies (Docker/Podman and Apptainer aka. Singularity).
- Chapter 7: Writing Software in Teams
Collaboration workflows. Code reviews (like a human). And a bit about agile software development.
- Chapter 8: Licenses and FAIR Software Practices
An overview of popular software licenses and their implications. F(indable), A(ccessible), I(nteroperable), R(eusable) principles for software development and data management.
- (Bonus) Chapter 9: Agentic Coding and You
Introduction to LLMs and agentic coding workflows. Covers how agent harnesses work (tools, context windows, memory), a survey of providers and pricing models, and hands-on demos. Includes personal takeaways and reflections on the ethical and societal implications.