Material relative to a 5-days training about good practices in software development offered as HGS-HIRe power week in a joined effort with the CRC-TR 211 collaboration. Refer to the lecture table of content to have an overview of the discussed topics.
The course has been structured in many small lecture-like sessions, each followed by an practical one. Participants have been split into small groups and have worked together on different tasks, reporting to the whole attendees at the end of each day. All material has been here uploaded and slides have been created on purposed for later reading. There is a natural significant overlap between the «Good practices in general programming» presentations and this material. The content has been reviewed and improved, though.
The beamer theme used for this lecture is the same used for this Bash lecture.
If you wish to compile LaTeX source code, the TeXnicalities package and the used beamer theme are needed and can be found here.
You will need the Yanone Kaffeesatz font available on your machine, too.
Tip
There is a Makefile in the TeX folder and the lualatex compiler (and a TeX distribution not older than 2020) is required to compile the documents.
Use e.g. DAY=1 make slide from within the TeX folder to compile Day 1 material.
The LICENSE file included in this repository refer to authors original material and work. Third-party content included in the slides with respective source might undergo to different licenses and the reader is expected to verify this aspect and comply with those.
Here you can find the list of the topics discussed in the various days, so that you can directly open the right file if you are looking for a specific argument. Practical sessions have been omitted (refer to the training schedule in the slides about Day 1 for a detailed overview).
- Training format
- The idea of clean code
- Clean testing (I)
- Why (automated) testing?
- Types of tests
- Testing frameworks
- Clean code principles (I)
- Meaningful names
- Comments and formatting
- Documentation
- Functions and classes
- IOSP
- Clean testing (II)
- The curse of the unit word
- White- and black-box testing!?
- Test the behaviour, not the implementation
- Clean testing (III)
- Tests goals – properties – good principles
- Clean code principles (II)
- The DRY principle
- The KISS principle
- The YAGNI principle
- Optimisation
- Boy scout philosophy
- Git in real life
git tag- Semantic versioning
- Git-flow
- Clean testing (IV)
- Test driven development as discipline
- Behavior driven development as alternative
- GitHub features
- Pull requests
- Issues
- Branches
- Special files
- Wiki and Webpage
- Projects
- Releases
- Actions and CI
- Data validation and data cleaning
- Statistical analysis and plotting
- Code review
- On a technical level
- On a more abstract level
- Software development in academia
- Summary and outlook
-
Lecture slides
- Day 1
- Day 2
- Day 3
- Day 4
- Day 5
-
Review/improve slides examples
- Day 1
- Day 2
- Day 3
- Day 4
- Day 5
-
Practical sessions
- Try some Day 3 TDD tasks
- Solve Day 4 tasks