Why this course?

Just another online Python course? Don’t we have enough of these? Sure we have. Still, each has its own focus and merits, and to a large part, the author of such a course gets the most out of it and learns a lot by himself.

This course started off as an attempt to fill in the gap between the basic level of programming experience and the understanding necessary to discuss some far more fundamental aspects of programming (as discussed in the author’s lecture about programming concepts taught in German). At the same time, this is the place to document some design decisions for Python projects of its author.

What makes this course different?

As said already, it is opinionated. Rather than going into much detail of different ways how to solve a given problem, usually only one solution will be shown – the solution preferred by its author. Furthermore, although the Python community is quite inclusive, there is often a preferred way of doing certain things, as wonderfully laid out in the “Zen of Python”.

Additionally, this course aims not at merely introducing the reader to Python as a programming language, but addresses scientists that need to program software for their research. Having in mind reproducible research and all its prerequisites, using a version control system, version numbers, as well as tests is not an option, but a strict requirement for any serious project.

Larger projects usually require more internal organisation, and scientific software should be modular and as modular as possible. Furthermore, an appropriate documentation is another important requirement. Therefore, this course will go straight into object-oriented programming as a paradigm that allows for building modular software that is reusable, and it introduces the reader to the dos and don’ts of proper documentation (content-wise) and the Sphinx documentation system.