Computational Modeling

Perspectives on Computational Modeling (MACS 30100), University of Chicago, M.A. Program in Computational Social Science: Winter 2017 and Winter 2018

Perspectives on Computational Modeling is the second course of the three-course core sequence in the M.A. Program in Computational Social Science at the University of Chicago. I developed this course and taught it Winter 2017 and Winter 2018 terms. Students are often well trained in the details of specific models relevant to their respective fields. This course presents a generic definition of a model in the social sciences as well as a taxonomy of a wide range of different types of models used. We cover principles of model building, including static versus dynamic models, linear versus nonlinear, simple versus complicated, and identification versus overfitting. Major types of models implemented in this course include systems of nonlinear equations, linear and nonlinear regression, supervised learning (decision trees, random forests, support vector machines, neural nets), and unsupervised learning. The course also explores the wide range of computational strategies used to estimate models from data and make statistical and causal inference. Students study both good examples and bad examples of modeling and estimation. This course gives a quick overview of many topics and applied practice in problem sets with the hope that the students will later pursue deeper study into specific areas of interest. All the syllabus, references, and assignments for the course are available in the GitHub repository for the Winter 2018 section of MACS 30100.

The problem sets in this course are heavily weighted toward programming problems and implementation of methods. Although the examples the students execute in the problem sets are taken from a wide range of fields of social science. One of the principles that is encouraged in this course is collaboration. I detail an encouragement that the students work together on problem sets with a warning that they will be penalized if they turn something in that is exactly the same as one of their classmates. Because of this, I also give the students an in-class, timed Midterm in which they have to download a dataset and perform some of the methods that we studied in class. This assures that each student can create and execute the requisite computational solutions on their own.