These topics aren't for primary scientific purposes, but help you to become better rounded.
The things we cover today aren't direct, small tools that you can apply to your projects, like most other talks. Instead, these are important for general education purposes. On goal of this course is designed to help you transfer to a professional company doing software development, and today does that.
- Free software: One should know how and why code should be released under a Free license, so that others can use it and build on your work. Science isn't just algorithms in papers, but code can greatly increase the pace, too. Of course, the code needs to be good for this to be useful. That's what all the rest of the course is about.
- Software development strategies: This isn't going to be immediately useful, since trying to impose structure on your work is hard. Instead, you will learn about some development strategies so that in the future, you can join and work on larger teams. Perhaps it will even help you to work with your colleagues better. This is kind of academic/theoretical.
- Project management and participation: This is the practical side of the previous topic. It has concrete ideas that can even help your group to work together.
- How to design software: This is a bit abstract. It packages a lot of the tools we have learned so far, and provides some closing lessons on code modularity, reuse, and so on.
Not the same as:
https://en.wikipedia.org/wiki/Waterfall_model
Main document: Agile Manifesto
https://en.wikipedia.org/wiki/Agile_software_development#The_Agile_Manifesto
(this applies to programs, packages, functions, modules, etc)
If you make releases, it's a good idea to have documentation on how to make a release. Otherwise, each time you want to release you'll be figuring out the process all over again.