Credits: 4
Description
We find that the exposure of many economists to programming languages tends to be limited to mastering statistical packages, such as STATA and EViews, just well enough in order to perform simple tasks like running a basic regression. These skills, however, do not scale up in a straightforward manner to handle complex projects. This course is designed to help address this challenge. It is aimed at Masters' students who expect to do research in a field that requires modest to heavy use of computations. In other words, any field that either involves real-world data; or that does not generally lead to models with simple closed-form solutions. Students will be introduced to effective programming practices that will substantially reduce their time spent programming, make their programs more dependable, and their results reproducible without extra effort. The course draws extensively on some simple techniques that are the backbone of modern software development, which most economists are simply not aware of. It shows the usefulness of these techniques for a wide variety of economic and econometric applications by means of hands-on examples.
This course has two distinct but closely intertwined objectives:
1. Providing students with the tools to make their computations reproducible.
2. Enhancing students’ programming efficiency.
Next to your economics background, the will only assume that you have written smaller pieces of code before, like STATA .do-files or Matlab .m-files. Knowledge of a specific programming language is not required. In fact, this course will use Python as an instructional language. Why? Because it is (1) freely available for all operating systems, (2) has numerical abilities closely mirroring those of Matlab but is (3) much more versatile and (4) easily extended with languages such as Fortran or C, which dominate computationally intensive fields. It is not a course about Python — but the course will use it as an example to teach the core concepts you need. You will be able to apply them in other languages with little transfer. A fair share of this course is really about tool choice — pointing out which language is most appropriate for which problem; but it is more instructive to stick to one language for the course.
Learning Outcomes
- Apply effective programming practices that require modest to heavy use of computations.
- Effectively plan and execute a project.
- Solve economic problems by applying programming methods with the aim of reducing time spent programming.
- Write programs that are more dependable and their results reproducible without extra effort.
Teaching Methodologies
This is a lecture-based course, however, students are expected to bring their laptops to perform hands-on exercises during the lecture. There will also be a recitation/lab twice a week that will be even more hands-on covering some material discussed in the lectures, as well as providing new complementary material to the course. Throughout the course, you shall also be provided with five problem sets covering the various topics we will be covering.