Effective Programming Practices for Economists, Autumn 2024, Bonn#

Hans-Martin von Gaudecker#

Welcome to the course Effective Programming Practices for Economists, where we aim to teach basic software engineering principles that should be useful for economists.

Software engineering skills are essential for anyone who does applied econometrics, machine learning or computational economics. They are also helpful for theorists who want to do simulations. After attending this class you will be able to do fully reproducible research projects in Python or other languages. See below for more detailed learning objectives.

The course will be taught in the flipped classroom format. This means that you work through materials before the class and in the actual class you apply the knowledge you gained in hands-on exercises.

A typical preparation for a class involves:

  • Watch multiple short videos at your own pace

  • Do multiple choice quizzes to test what you have learned

  • Prepare questions for the lecture about anything that remains unclear

The typical class will then consist of:

  • Q&A session

  • Simple exercises where you apply the exact things you learned from videos

  • More demanding exercises where you deepen your knowledge

  • Work on the current assignment or discuss solutions to previous assignments

All practical exercises and assignments are solved in groups.

Course learning objectives#

Here we explain at very high level what you may expect to learn in this course. The teaching style and the work you need to do in order to get credit are designed to make reaching these objectives efficient. We have a separate page on grading, however.

We group the learning objectives into two categories:

Methods (core concepts and abstract coding skills)#

  • Students master the basic techniques to make current and past versions of their research reproducible

  • Students solve reasonably complex economic problems using the help of a computer

  • Students are able to write correct code in an efficient manner employing modern software engineering techniques

  • Students reason about the structure of economic data and handle such data efficiently

Tools (specific programmes, which you may want to use in the long run or not)#

  • Students use a shell for navigating the directory system and for starting programmes

  • Students routinely use Git for version control and collaborating with coauthors

  • Students manage economic data using basic pandas functionality

  • Students automate repetitive tasks using Python

  • Students run their analysis pipelines using pytask

  • Students find solutions to specific programming problems through sensible use of AI, search engines, and websites like Stack Overflow

  • Students visualize data using plotly

  • Students speed up their code using numpy and numba

  • Students write automated unit tests using the pytest framework