Below you will find core and elective classes offered by our Computation faculty in the **Autumn, ****Winter**, and **Spring** quarters. We will continue to add relevant course descriptions for the 2018-2019 academic year as they are made available. Please note that course offerings, instructors, dates, and times are all subject to change.

## Autumn Quarter

**Perspectives on Computational Analysis**

(MACS 30000). *Rick Evans, M/W 11:30-1:20 p.m. & Weekly Lab Wednesdays 4:30-5:20 p.m.*

Massive digital traces of human behavior and ubiquitous computation have both extended and altered classical social science inquiry. This course surveys successful social science applications of computational approaches to the representation of complex data, information visualization, and model construction and estimation. We will reexamine the scientific method in the social sciences in context of both theory development and testing, exploring how computation and digital data enables new answers to classic investigations, the posing of novel questions, and new ethical challenges and opportunities. Students will review fundamental research designs such as observational studies and experiments, statistical summaries, visualization of data, and how computational opportunities can enhance them. The focus of the course is on exploring the wide range of contemporary approaches to computational social science, with practical programming assignments to train with these approaches.

**Computer Science with Applications - 1**

(CAPP 30121). *Borja* *Sotomayor, M/W/F 9:30-10:20 a.m.* *& Weekly Lab Mondays at (1) 3:30-4:50 p.m., (2) 5-6:20 p.m., or (3) 6:30-7:50 p.m.*

This three-quarter sequence teaches computational thinking and skills to students who are majoring in the sciences, mathematics, and economics. Lectures cover topics in (1) programming, such as recursion, abstract data types, and processing data; (2) computer science, such as clustering methods, event-driven simulation, and theory of computation; and to a lesser extent (3) numerical computation, such as approximating functions and their derivatives and integrals, solving systems of linear equations, and simple Monte Carlo techniques. Applications from a wide variety of fields serve both as examples in lectures and as the basis for programming assignments. In recent offerings, students have written programs to evaluate betting strategies, determine the number of machines needed at a polling place, and predict the size of extinct marsupials. Students learn Java, Python, R, and C++.

**Mathematics and Statistics for Computational Social Science**

(MACS 33001). *Benjamin Soltoff, M/W 2-3:20 p.m.*

This course aims to provide students with a core understanding of mathematics and statistics for computational social science. Students who complete this course should be prepared to take more advanced computational methods courses. Completion of the Computational Math Camp in September is recommended, but not required.

**Computing for the Social Sciences**

(MACS 30500). *Benjamin Soltoff, M/W 1:30-2:50 p.m. & Weekly Lab Wednesdays 3-4:20 p.m.*

This is an applied course for social scientists with little-to-no programming experience who wish to harness growing digital and computational resources. The focus of the course is on generating reproducible research through the use of programming languages and version control software. Major emphasis is placed on a pragmatic understanding of core principles of programming and packaged implementations of methods. Major topics to be covered include data wrangling, data exploration, functional programming, statistical modeling, and data visualization. Students will also learn how to parse and analyze text files, scrape data from other sources, create and query relational databases, implement parallel processes, and manage digital projects. Class meetings will be a combination of lecture and laboratory sessions, and students will complete weekly programming assignments. Assignments will be completed primarily using the open-source R programming language and the version control software Git.

**MA Research Commitment**

(MACS 35000). *Marc Berman, By Arrangement*.

Student-Initiated research and writing for the MA research component. Open only to MACSS students.

**Introduction to Spatial Data Science**

(MACS 54000). *Luc Anselin, Wednesdays 1:30-2:50 p.m. & Weekly Lab Mondays 1:30-2:50 p.m.*

Spatial data science is an evolving field that can be thought of as a collection of concepts and methods drawn from both statistics and computer science. These techniques deal with accessing, transforming, manipulating, visualizing, exploring and reasoning about data where the locational component is important (spatial data). The course introduces the types of spatial data relevant in social science inquiry and reviews a range of methods to explore these data. The types of data considered include observations at the point level (e.g., locations of crimes, commercial establishments, traffic accidents), data gathered for aggregate units, such as census tracts or counties (e.g., unemployment rates, disease rates by area, crime rates), and data measured at spatially located sampling points (such as air quality monitoring stations and urban sensors). Specific topics covered include the implementation of formal spatial data structures, geovisualization and visual analytics, spatial autocorrelation analysis, variogram analysis, cluster detection, regionalization, point pattern analysis and spatial data mining. An important aspect of the course is to learn and apply open source geospatial software tools, such as R and GeoDa.

**Computational Social Science Workshop**

(MACS 50000).* Marc Berman, Thursdays 11-12:20 p.m. Kent Chem Lab 120. PQ: Computation students must register for an R. Other faculty and graduate students welcome.*

High performance and cloud computing, massive digital traces of human behavior from ubiquitous sensors, and a growing suite of efficient model estimation, machine learning and simulation tools are not just extending classical social science inquiry, but transforming it to pose novel questions at larger and smaller scales. The Computational Social Science (CSS) Workshop is a weekly event that features this work, highlights associated skills and data, and explores the use of CSS in the world. The CSS Workshop alternates weekly between research workshops and professional workshops. The research workshops feature new CSS work from top faculty and advanced graduate students from UChicago and around the world, while professional workshops highlight useful skills and data (e.g., machine learning with Python’s scikit-learn; the Twitter firehose API) and showcase practitioners using CSS in the government, industry and nonprofit sectors. Each quarter, the CSS Workshop also hosts a distinguished lecture, debate and dinner, and a student conference.

**Linear Algebra**

(MATH 19620). *TBD*

This course takes a concrete approach to the basic topics of linear algebra. Topics include vector geometry, systems of linear equations, vector spaces, matrices and determinants, and eigenvalue problems.

**Mathematical Methods for Biological Sciences - 1**

(PSYC 36210/ CPNS 31000). *Dmitry Kondrashov, T/TH 2-3:20 p.m. & Weekly Lab Thursdays at (1) 3:30-5:50 p.m. or (2) 3-4:50 p.m. PQ: BIOS 20151 or BIOS 20152 and three quarters of a Biological Sciences Fundamentals sequence or consent of the instructor.*

This course builds on the introduction to modeling course biology students take in the first year (BIOS 20151 or 152). It begins with a review of one-variable ordinary differential equations as models for biological processes changing with time, and proceeds to develop basic dynamical systems theory. Analytic skills include stability analysis, phase portraits, limit cycles, and bifurcations. Linear algebra concepts are introduced and developed, and Fourier methods are applied to data analysis. The methods are applied to diverse areas of biology, such as ecology, neuroscience, regulatory networks, and molecular structure. The students learn computation methods to implement the models in MATLAB.

**Nonparametric Inference**

(STAT 37400). *Tingran Gao, T/TH 3:30-4:50 p.m.*

Nonparametric inference is about developing statistical methods and models that make weak assumptions. A typical nonparametric approach estimates a nonlinear function from an infinite dimensional space, rather than a linear model from a finite dimensional space. This course gives an introduction to nonparametric inference, with a focus on density estimation, regression, confidence sets, orthogonal functions, random processes, and kernels. The course treats nonparametric methodology and its use, together with theory that explains the statistical properties of the methods.

**Price Theory I**

(ECON 30100). *Kevin Murphy, T/TH 12:30-1:50 p.m. & Discussion on Fridays 12:30-2:50 p.m.*

Theory of consumer choice, including household production, indirect utility, and hedonic indices. Models of the firm. Analysis of factor demand and product supply under competitive and monopolistic conditions. Static and dynamic cost curves, including learning by doing and temporary changes. Uncertainty applied to consumer and producer choices. Property rights and the effects of laws. Investment in human and physical capital.

**Empirical Analysis I**

(ECON 31000). *Azeem Shaikh, M/W 2-3:20 p.m. & Discussion on Tuesdays 4:30-5:20 p.m.*

This course introduces students to the key tools of econometric analysis. It covers basic OLS regression model, generalized least squares, asymptotic theory and hypothesis testing for maximum likelihood estimation, extremum estimators, instrumental variables, decision theory and Bayesian inference.

**Theory of Income I**

(ECON 33000). *Fernando Alvarez, M/W 9:30-10:50 a.m. & Discussion on Fridays 8-9:20 a.m.*

This course will use dynamic general equilibrium models to study macroeconomic questions. The first half of the quarter will focus on applications of the neoclassical growth model, including variants useful for studying the effects of capital, labor, and consumption taxes; the effects of general and investment-specific technical change; the role of human capital accumulation, and the q-model of investment. On the technical side, this part of the course will rely heavily on the tools of optimal control theory (Hamiltonians) and on the First and Second welfare theorems. The second part of the course will focus on applications of stochastic dynamic programming. On the substantive side, particular topics include models of job search and asset pricing; models with idiosyncratic (insurable) and aggregate (uninsurable) risk; and dynamic tax smoothing. On the technical side, this part of the course will rely heavily on Bellman equations and other recursive modeling techniques.

**Gender, Health, & Medicine**

(CHDV 44214). *Anna Mueller, Wednesdays 9:30-12:20 p.m. *

From the day we are born until the day we die, we experience a gendered world that shapes our opportunities, our social interactions, and even our physical health and wellbeing. This course will provide an introduction to sociological perspectives on gender, physical and mental health, and medicine while also providing a deep interrogation of the social, institutional, and biological links between gender and health. We will discuss inequalities in morbidity, mortality, and health behaviors of women, men, and transgendered individuals from different race, ethnic, and class backgrounds, and we will use sociological concepts, theories, and methods to understand why these differences appear. Finally, we will examine how medicine as an institution and medical practices as organizations sometimes contribute to and combat gender inequality in health. By the end of the course, you will be familiar with social scientific perspectives on (1) gender, (2) mental and physical health, and (3) the practice of medicine, as well as some of the fundamental debates in current medical sociology and sociology of gender.

**Introduction to Machine Learning**

(TTIC 31020). *Gregory Shakhnarovich, T/TH 2-3:20 p.m. PQ: Knowledge of basic linear algebra, probability, calculus, and undergraduate algorithms.*

A systematic introduction to machine learning, covering theoretical as well as practical aspects of the use of statistical methods. Topics include linear models for classification and regression, support vector machines, regularization and model selection, and introduction to structured prediction and deep learning. Application examples are taken from areas like information retrieval, natural language processing, computer vision and others. Expected outcomes: Understand the notion of fitting a model to data and concepts such as model complexity, overfitting and generalization, and bias-variance tradeoff in estimation. Learn and be able to apply some of the fundamental learning methods, such as logistic regression, support vector machines, boosting, decision trees, neural networks. Learn the basics of optimization techniques such as gradient descent and the general EM algorithm. Familiarity with multivariate Gaussians and mixtures of Gaussians. Understand fundamental concepts in information theory (entropy, KL-divergence) and their relationship to machine learning.

**Statistical and Computational Learning Theory**

(TTIC 31120). *Nathan Srebro and Mary Stofcik, M/W 1:30-3:20 p.m. PQ: Mathematical maturity, as obtained, e.g., in a rigorous analysis course. Discrete Math (specifically combinatorics and asymptotic notation) Probability Theory Introduction to Machine Learning Algorithms; Basic Complexity Theory (NP-Hardness) Familiarity with Convex Optimization, Computational Complexity and background in Statistics can be helpful, but is not required.*

The purpose of this course is to gain a deeper understanding of machine learning by formalizing learning mathematically, studying both statistical and computational aspects of learning, and understanding how these two aspects are inseparable. We will discuss classic results & recent advances in statistical learning theory (mostly under the agnostic PAC model), touch on computational learning theory, explore the relationship with stochastic optimization and online regret analysis. Emphasis will be on concept development and obtaining a rigorous quantitative understanding of machine learning. We will also study techniques for analyzing and proving performance guarantees for learning methods.

**Mathematical Toolkit**

(TTIC 31150). *Madhur Tulsiani, T/TH 9:30-10:50 a.m. *

Introduction to mathematical techniques of linear algebra and probability used in different areas of computer science. Topics in include Linear Algebra (Hilbert spaces, eigenvalues and eigenvectors, SVD, least squares), discrete probability, Gaussian variables, concentration inequalities and dimension reduction, Linear Programming and LP duality. Time permitting, martingales, stochastic processes.

**Special Topics: Spectral Techniques for Machine Learning**

(TTIC 41000). *Karl Stratos, M/W 3-4:20 p.m. *

A spectral technique refers to a technique that makes use of the eigenvalues of a matrix. Thanks to the rich theory underlying linear algebra and matrix perturbation, these techniques can offer a precise and satisfying understanding of a wide class of problems such as dimensionality reduction and model estimation. Moreover, the existence of powerful algorithms for computing eigenvalues makes the approach also practical, with applications ranging from robotics to natural language processing. This seminar-like course will supply an inventory of mathematical tools to understand and derive spectral techniques used in modern machine learning. It will apply these tools to examine some of the most recent developments in the literature. In the latter part of the course, the course will “flip” and students will take a turn to present a paper on recent research in this area. A student can choose any relevant work under this topic, but personal guidance and references will be provided.

**Large Scale Data Methods**

(CAPP 30525). *Alex Engler, M/W 3-4:20 p.m. PQ: CAPP 30122*

This course introduces students to the tools, skills, and concepts necessary for making compelling data visualizations for political analysis and public policy research. Students will learn about the theory of graphical design, including the grammar of graphics, and the science of visual perception such as to inform making visualizations that are intuitive, effective, and memorable.

**Political Economy I: Introduction to Applied Game Theory**

(PPHA 41101). *Konstantin Sonin, M/W 9:30-10:50 a.m. Instructor permission required.*

This course is an introduction to game theory, along with applications to democratic policy making and applied microeconomics. There are no formal prerequisites. This course is optimized for Harris School PhD students, who are taking microeconomics concurrently, and can solve simple optimization problems using calculus.

**Databases**

(MPCS 53001).* TBD, Non-MPCS students must receive approval from program prior to registering.*

Students will learn database design and development and will build a simple but complete web application powered by a relational database. We start by showing how to model relational databases using the prevailing technique for conceptual modeling -- Entity-Relationship Diagrams (ERD). Concepts covered include entity sets and relationships, entity key as a unique identifier for each object in an entity set, one-one, many-one, and many-many relationships as well as translational rules from conceptual modeling (ERD) to relational table definitions. We also examine the relational model and functional dependencies and their application to the methods for improving database design: normal forms and normalization. After design and modeling, students will learn the universal language of relational databases: SQL (Structured Query Language). We start by introducing relational algebra -- the theoretical foundation of SQL. Then we examine in detail the two aspects of SQL: data definition language (DDL) and the data manipulation language (DML). Concepts covered include subqueries (correlated and uncorrelated), aggregation, various types of joins including outer joins and syntax alternatives. Students will gain significant experience with writing and reading SQL queries throughout the course in the detailed discussions in class, online homework, and the real-world individual project.

**Algorithms**

(MPCS 55001).* TBD. Non MPCS students must meet prerequisites and complete the request form http://tinyurl.com/mpcs-courseform.*

The course is an introduction to the design and analysis of efficient algorithms, with emphasis on developing techniques for the design and rigorous analysis of algorithms rather than on implementation. Algorithmic problems include sorting and searching, discrete optimization, and algorithmic graph theory. Design techniques include divide-and-conquer methods, dynamic programming, greedy methods, graph search, as well as the design of efficient data structures. Methods of algorithm analysis include asymptotic notation, evaluation of recurrences, and the concepts of polynomial-time algorithms. NP-completeness is introduced toward the end the course. Students who complete the course will have demonstrated the ability to use divide-and-conquer methods, dynamic programming methods, and greedy methods, when an algorithmic design problem calls for such a method. They will have learned the design strategies employed by the major sorting algorithms and the major graph algorithms, and will have demonstrated the ability to use these design strategies or modify such algorithms to solve algorithm problems when appropriate. They will have derived and solved recurrences describing the performance of divide-and-conquer algorithms, have analyzed the time and space complexity of dynamic programming algorithms, and have analyzed the efficiency of the major graph algorithms, using asymptotic analysis.

**Advanced Data Analytics**

(MPCS 53112).* TBD. Non MPCS students must meet prerequisites and complete the request form http://tinyurl.com/mpcs-courseform.*

This course explores selected advanced themes in data mining and analytics. These include the recent "model-free" techniques for mining massive datasets, foundations of natural language processing, and time series analysis. Topics include frameworks such as MapReduce; algorithmic ideas such as locality-sensitive hashing, Bloom lters, random walks, and competitive analysis; and applications such as link analysis, social-network analysis, recommendation systems, streaming data, and advertising on the web. In natural language processing, the course introduces fundamentals of language models, text classification, and information retrieval and extraction. In time series analysis, the course examines stationary processes and the ARIMA and GARCH models.

**Python Programming**

(MPCS 51042). *TBD. Non MPCS students must meet prerequisites and complete the request form http://tinyurl.com/mpcs-courseform.*

This course provides a thorough overview of the Python 3 language with an emphasis on writing idiomatic code in Python and object-oriented design patterns and is suitable for students with some prior programming experience. We will develop an understanding of the core features of the languages and gain exposure to commonly used standard-library and third-party modules.

**C Programming**

(MPCS 51040).

This is an accelerated introduction to the C (not C++) Programming Language designed for students with prior programming experience. C is in many ways the lingua franca of computing, and a broad range of programming languages and related technologies derive from the basic principles of C memory management, control flow, and abstraction. Though there are many subtleties, C is not a big language, and it is expected that students will leave the course with a relatively deep understanding of the key concepts, which will then form a solid foundation for studying higher-level technologies. At the same time, C itself remains a very practical language, particularly so in areas such as scientific programming, high-performance computing, application level library design, systems programming, network programming, multi-threaded programming, etc. Students who successfully complete the course will be well prepared for subsequent MPCS courses in these areas. The course studies both fundamental and advanced C language constructs in the abstract and reinforces them through a range of exercises in the design of basic and advanced data structures, rudiemntary algorithms, and API design.

**Advanced Programming**

(MPCS 51100).

Advanced Programming fulfils the MPCS Core Programming requirement, but is intended for students who are joining the program with an existing degree in Computer Science, or with substantial experience in programming. This course will be taught primarily in C, including an accelerated introduction to the C language for students who have not used C before. The course will cover advanced data structures and topics in concurrent and multicore programming not covered in the Java Programming or C Programming courses.

**Compilers**

(MPCS 51300).

This class teaches the theory and practice of how to write a compiler, including lexical analysis, grammars, lexers and parsers, type checking, and code generation. For decades, compilers have been the most dynamic and challenging branch in computer science. The main part of this class will focus on providing the basics of the different phases of compilation. Through the course, students will develop appreciation for the implementation strategies behind making an efficient and robust compiler.

**Introduction to Computer Systems**

(MPCS 52011).

This course is all about constructing your own knowledge of computer systems by building a general-purpose computer system from the ground up. The objective is to integrate key ideas from algorithms, computer architecture, operating systems, compilers, and software engineering into one unified framework. Along the way, we'll explore ideas and techniques used in the design of modern hardware and software systems, and discuss major trade-offs and future trends. Throughout this journey, you'll gain lots of cross-section views of the field of computer science, from the bare-bone details of switching circuits to the high-level abstraction of object-based software design. By the end of the course, you will have written a computer game in an object-oriented programming language; compiled that program into machine language using the compiler, the virtual machine language translator, and the assembler that you wrote; and run your program on (virtual) hardware that you designed.

## Winter Quarter

**Perspectives on Computational Modeling**

(MACS 30100). *Benjamin Soltoff, M/W 1:30-2:50 p.m. & Weekly Lab Wednesdays 3-4:20 p.m.*

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 the wide range of different types of models used. We then 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 linear and nonlinear regression, machine learning (e.g., parametric, Bayesian and nonparametric), agent-based and structural models. We will also explore the wide range of computational strategies used to estimate models from data and make statistical and causal inference. Students will study both good examples and bad examples of modeling and estimation and will have the opportunity to build their own model in their field of interest.

**Perspectives on Computational Modeling for Economics**

(MACS 30150). *Rick Evans, M/W 11:30-1:20 p.m. & Weekly Lab Wednesdays 4:30-5:20 p.m.*

This course will be specifically tailored to students concentrating in Economics. All others should take the course that Benjamin Soltoff is offering this quarter. 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 the wide range of different types of models used. We then 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 linear and nonlinear regression, machine learning (e.g., parametric, Bayesian and nonparametric), agent-based and structural models. We will also explore the wide range of computational strategies used to estimate models from data and make statistical and causal inference. Students will study both good examples and bad examples of modeling and estimation and will have the opportunity to build their own model in their field of interest.

**Computer Science with Applications – 2**

(CAPP 30122). *Anne Rogers, M/W/F 9:30-10:20 a.m. & Weekly Lab Mondays at (1) 3:30-4:50 p.m., (2) 5-6:20 p.m., or (3) 6:30-7:50 p.m.*

This three-quarter sequence teaches computational thinking and skills to students who are majoring in the sciences, mathematics, and economics. Lectures cover topics in (1) programming, such as recursion, abstract data types, and processing data; (2) computer science, such as clustering methods, event-driven simulation, and theory of computation; and to a lesser extent (3) numerical computation, such as approximating functions and their derivatives and integrals, solving systems of linear equations, and simple Monte Carlo techniques. Applications from a wide variety of fields serve both as examples in lectures and as the basis for programming assignments. In recent offerings, students have written programs to evaluate betting strategies, determine the number of machines needed at a polling place, and predict the size of extinct marsupials. Students learn Java, Python, R, and C++.

**MA Research Commitment**

(MACS 35000). *Marc Berman, By Arrangement.*

Student-Initiated research and writing for the MA research component. Open only to MACSS students.

**Structural Estimation**

(MACS 40200). *Rick Evans, M/W 1:30-2:50 p.m.*

Structural estimation refers to the estimation of model parameters by taking a theoretical model directly to the data (this is in contrast to reduced form estimation, which often entails estimating a linear model that is either explicitly or implicitly a simplified, linear version of a related theoretical model). This class will survey a range of structural models, then teach students estimation approaches including the generalized method of moments approach and maximum likelihood estimation. We will then examine the strengths and weaknesses of both approaches in a series of examples from the fields of economics, political science, and sociology. We will also learn the simulated method of moments approach. We will explore applications across the social sciences.

**Introduction to Causal Inference**

(MACS 51000). *Guanglei Hong and Kazuo Yamaguchi, Wednesdays 1:30-4:20 p.m. & Weekly Lab Fridays 1:30-2:50 p.m.*

This course is designed for graduate students and advanced undergraduate students from the social sciences, education, public health science, public policy, social service administration, and statistics who are involved in quantitative research and are interested in studying causality. The goal of this course is to equip students with basic knowledge of and analytic skills in causal inference. Topics for the course will include the potential outcomes framework for causal inference; experimental and observational studies; identification assumptions for causal parameters; potential pitfalls of using ANCOVA to estimate a causal effect; propensity score-based methods including matching, stratification, inverse-probability-of-treatment-weighting (IPTW), marginal mean weighting through stratification (MMWS), and doubly robust estimation; the instrumental variable (IV) method; regression discontinuity design (RDD) including sharp RDD and fuzzy RDD; difference in difference (DID) and generalized DID methods for cross-section and panel data, and fixed effects model. Intermediate Statistics or equivalent such as STAT 224/PBHS 324, PP 31301, BUS 41100, or SOC 30005 is a prerequisite. This course is a pre-requisite for “Advanced Topics in Causal Inference” and “Mediation, moderation, and spillover effects.”

**Computational Social Science Workshop**

(MACS 50000).* James Evans, Thursdays 11-12:20 p.m. PQ: Computation students must register for an R. Other faculty and graduate students welcome.*

High performance and cloud computing, massive digital traces of human behavior from ubiquitous sensors, and a growing suite of efficient model estimation, machine learning and simulation tools are not just extending classical social science inquiry, but transforming it to pose novel questions at larger and smaller scales. The Computational Social Science (CSS) Workshop is a weekly event that features this work, highlights associated skills and data, and explores the use of CSS in the world. The CSS Workshop alternates weekly between research workshops and professional workshops. The research workshops feature new CSS work from top faculty and advanced graduate students from UChicago and around the world, while professional workshops highlight useful skills and data (e.g., machine learning with Python’s scikit-learn; the Twitter firehose API) and showcase practitioners using CSS in the government, industry and nonprofit sectors. Each quarter, the CSS Workshop also hosts a distinguished lecture, debate and dinner, and a student conference.

**Methods in Computational Neuroscience**

(CPNS 34231). *Silvan Bensmaia, T/TH 3:30-4:50 p.m., Fridays 1:30-2:50 p.m., & Weekly Lab Wednesdays 9:30-11:20 a.m. PQ: PSYC 36210 and PSYC 36211 which must be taken concurrently, or consent of instructor.*

Topics include (but are not limited to): Hodgkin-Huxley equations, Cable theory, Single neuron models, Information theory, Signal Detection theory, Reverse correlation, Relating neural responses to behavior, and Rate vs. temporal codes.

**Data Visualization For Policy Analysis**

(CAPP 30239). *Alex Engler, T/TH 9:30-10:50 a.m.*

This course introduces students to the tools, skills, and concepts necessary for making compelling data visualizations for political analysis and public policy research. Students will learn about the theory of graphical design, including the grammar of graphics, and the science of visual perception such as to inform making visualizations that are intuitive, effective, and memorable. Data Visualization for Policy Analysis will cover exploratory data analysis and static graphics in R, aesthetic design using Adobe Illustrator, and interactive web graphics using the powerful JavaScript library D3. Throughout the course, each student will create an aesthetically compelling and analytically sound visualization portfolio on a public policy topic of their own choosing.

**Linear Algebra**

(MATH 19620). *TBD*

This course takes a concrete approach to the basic topics of linear algebra. Topics include vector geometry, systems of linear equations, vector spaces, matrices and determinants, and eigenvalue problems.

**Mathematical Methods for Biological Sciences - 2**

(PSYC 36211). *Dmitry Kondrashov, T/TH 2-3:20 p.m. & Weekly Lab Fridays 3:30-5:20 p.m. PQ: PSYC 36210.*

This course is a continuation of PSYC 36210. The topics start with optimization problems, such as nonlinear least squares fitting, principal component analysis and sequence alignment. Stochastic models are introduced, such as Markov chains, birth-death processes, and diffusion processes, with applications including hidden Markov models, tumor population modeling, and networks of chemical reactions. In computer labs, students learn optimization methods and stochastic algorithms, e.g., Markov Chain, Monte Carlo, and Gillespie algorithm. Students complete an independent project on a topic of their interest.

**Network Analysis**

(PLSC 57200). *John Padgett, Mondays 1:30-4:20 p.m.*

This seminar explores the sociological utility of the network as a unit of analysis. How do the patterns of social ties in which individuals are embedded differentially affect their ability to cope with crises, their decisions to move or change jobs, their eagerness to adopt new attitudes and behaviors? The seminar group will consider (a) how the network differs from other units of analysis, (b) structural properties of networks, consequences of flows (or content) in network ties, and (c) dynamics of those ties.

**Game Theory I**

(PLSC 30901). *Monika Nalepa, T/TH 2-3:20 p.m.*

This is a course for graduate students in Political Science. It introduces students to games of complete information through solving problem sets. We will cover the concepts of equilibrium in dominant strategies, weak dominance, iterated elimination of weakly dominated strategies, Nash equilibrium, subgame perfection, backward induction, and imperfect information. The course will be centered around several applications of game theory to politics: electoral competition, agenda control, lobbying, voting in legislatures and coalition games.

**Organizational Decision Making**

(PLSC 37500). *John Padgett, M/W 9:30-10:20 a.m. & Weekly Discussion Fridays 9:30-10:20 a.m.*

This course examines the process of decision making in modern, complex organizations (e.g., universities, schools, hospitals, business firms, public bureaucracies). We also consider the impact of information, power, resources, organizational structure, and the environment, as well as alternative models of choice.

**Mathematical Models**

(SOCI 30157). *Kazao Yamaguchi, Mondays 1:30-4:20 p.m.*

This course examines mathematical models and related analyses of social action, emphasizing a rational-choice perspective. About half the lectures focus on models of collective action, power, and exchange as developed by Coleman, Bonacich, Marsden, and Yamaguchi. Then the course examines models of choice over the life course, including rational and social choice models of marriage, births, friendship networks, occupations, and divorce. Both behavioral and analytical models are surveyed.

**Introduction to Causal Inference**

(SOCI 30315). *Kazao Yamaguchi & Guanglei Hong, Wednesdays 1:30-4:20 p.m. & Weekly Lab Fridays (1) 1:30-2:50 p.m. or (2) 3-4:20 p.m. **PQ:** Intermediate Statistics or equivalent such as STAT 224/PBHS 324, PP 31301, BUS 41100, or SOC 30005.*

This course is designed for graduate students and advanced undergraduate students from the social sciences, education, public health science, public policy, social service administration, and statistics who are involved in quantitative research and are interested in studying causality. The goal of this course is to equip students with basic knowledge of and analytic skills in causal inference. Topics for the course will include the potential outcomes framework for causal inference; experimental and observational studies; identification assumptions for causal parameters; potential pitfalls of using ANCOVA to estimate a causal effect; propensity score-based methods including matching, stratification, inverse-probability-of-treatment-weighting (IPTW), marginal mean weighting through stratification (MMWS), and doubly robust estimation; the instrumental variable (IV) method; regression discontinuity design (RDD) including sharp RDD and fuzzy RDD; difference in difference (DID) and generalized DID methods for cross-section and panel data, and fixed effects model. Intermediate Statistics or equivalent such as STAT 224/PBHS 324, PP 31301, BUS 41100, or SOC 30005 is a prerequisite. This course is a prerequisite for "Advanced Topics in Causal Inference" and "Mediation, moderation, and spillover effects."

**Topics in Cognition I**

(PSYC 40450). *Marc Berman, Wednesdays 11:30-1:20 p.m. *

Discussion of current research in psychology.

**Fundamentals of Deep Learning**

(TTIC 31230). *David Mcallester, T/TH 2-3:20 p.m. *

Introduction to fundamental principles of deep learning. Although deep learning systems are evolving rapidly, this course attempts to teach material that will remain relevant and useful as the field changes. The course will emphasize theoretical and intuitive understanding to the extent possible. Expected outcomes: Ability to design and train novel deep learning architectures. An understanding of the general issues and phenomenon sufficient to guide architecture design and training.

**Machine Learning**

(PPHA 30545). *Guillaume Pouliot, (1) M/W 9:30-10:50 a.m. or (2) M/W 11-12:20 p.m. *

The objective of the Data Science sequence is to train students to be successful and autonomous applied economists and data scientists in government and industry. In the first two courses of the sequence, students learned programming, as well as how to handle, summarize, and visualize modern datasets. The objective of this course is to train students to be insightful users of modern machine learning methods. The class covers regularization methods for regression and classification, as well as large-scale approaches to inference and testing. In order to have greater flexibility when analyzing datasets, both frequentist and Bayesian methods are investigated.

**iOS Application Development**

(MPCS 51030).

Advances in mobile technologies are changing the way that individuals and businesses use computing devices. This course will instruct students on the fundamentals of mobile application development using Apple's iOS SDK. An introduction to the Objective-C programming language, including memory management, object-oriented design, and the model-view-controller pattern, will be covered. Using iOS APIs and tools, such as Xcode, Interface Builder and Instruments, students will be able to create fully-featured iPod Touch, iPhone, and iPad applications. User interface and application design considerations specific to mobile technologies will also be explored. The course will consist of lectures, hands-on coding exercises and discussion. Weekly programming assignments will culminate into the development of a fully functioning iOS application. As a final project, each student will design and implement an application of their choice to be presented in class. Each student will also be required to present a case study featuring an app from the Apple's App Store. The studies will include a technical decomposition of the implementation (i.e. features, functionality, design, etc.) and a market analysis (i.e. competition, pricing, positioning, etc.) for the app. These case studies are designed to encourage students to gain an appreciation for the decisions companies and developers face when entering the app market.

**Introduction to Computer Systems**

(MPCS 52011).

This course is all about constructing your own knowledge of computer systems by building a general-purpose computer system from the ground up. The objective is to integrate key ideas from algorithms, computer architecture, operating systems, compilers, and software engineering into one unified framework. Along the way, we'll explore ideas and techniques used in the design of modern hardware and software systems, and discuss major trade-offs and future trends. Throughout this journey, you'll gain lots of cross-section views of the field of computer science, from the bare-bone details of switching circuits to the high-level abstraction of object-based software design. By the end of the course, you will have written a computer game in an object-oriented programming language; compiled that program into machine language using the compiler, the virtual machine language translator, and the assembler that you wrote; and run your program on (virtual) hardware that you designed.

## Spring Quarter

**Perspectives on Computational Research**

(MACS 30200). *Benjamin Soltoff, M/W 11:30-1:20 p.m. *

This course focuses on applying computational methods to conducting social scientific research through a student-developed research project. Students will identify a research question of their own interest that involves a direct reference to social scientific theory, use of data, and a significant computational component. The students will collect data, develop, apply, and interpret statistical learning models, and generate a fully reproducible research paper. We will identify how computational methods can be used throughout the research process, from data collection and tidying, to exploration, visualization and modeling, to the final communication of results. The course will include modules on theoretical and practical considerations, including topics such as epistemological questions about research design, writing and critiquing papers, and additional computational tools for analysis.

**Perspectives on Computational Research For Economics**

(MACS 30250). *Rick Evans, M/W 1:30-2:50 p.m. & Weekly Lab Wednesdays 4:30-5:20 p.m.*

This course will be specifically tailored to students concentrating in Economics. All others should take the course that Benjamin Soltoff is offering this quarter. This course focuses on applying computational methods to conducting social scientific research through a student-developed research project. Students will identify a research question of their own interest that involves a direct reference to social scientific theory, use of data, and a significant computational component. The students will collect data, develop, apply, and interpret statistical learning models, and generate a fully reproducible research paper. We will identify how computational methods can be used throughout the research process, from data collection and tidying, to exploration, visualization and modeling, to the final communication of results. The course will include modules on theoretical and practical considerations, including topics such as epistemological questions about research design, writing and critiquing papers, and additional computational tools for analysis.

**Computer Science with Applications-3**

(CAPP 30123). *TBD*

This three-quarter sequence teaches computational thinking and skills to students who are majoring in the sciences, mathematics, and economics. Lectures cover topics in (1) programming, such as recursion, abstract data types, and processing data; (2) computer science, such as clustering methods, event-driven simulation, and theory of computation; and to a lesser extent (3) numerical computation, such as approximating functions and their derivatives and integrals, solving systems of linear equations, and simple Monte Carlo techniques. Applications from a wide variety of fields serve both as examples in lectures and as the basis for programming assignments. In recent offerings, students have written programs to evaluate betting strategies, determine the number of machines needed at a polling place, and predict the size of extinct marsupials. Students learn Java, Python, R and C ++.

**Computing for the Social Sciences**

(MACS 30500). *Benjamin Soltoff, M/W 1:30-2:50 p.m. & Weekly Lab Wednesdays 3-4:20 p.m.*

This is an applied course for social scientists with little-to-no programming experience who wish to harness growing digital and computational resources. The focus of the course is on generating reproducible research through the use of programming languages and version control software. Major emphasis is placed on a pragmatic understanding of core principles of programming and packaged implementations of methods. Students will leave the course with basic computational skills implemented through many computational methods and approaches to social science; while students will not become expert programmers, they will gain the knowledge of how to adapt and expand these skills as they are presented with new questions, methods, and data.

**MA Research Commitment**

(MACS 35000). *Marc Berman, By Arrangement.*

Student-Initiated research and writing for the MA research component. Open only to MACSS students.

**Computational Social Science Workshop**

(MACS 50000). *Marc Berman, Thursdays 11-12:20 p.m. PQ: Computation students must register for an R. Other faculty and graduate students welcome.*

High performance and cloud computing, massive digital traces of human behavior from ubiquitous sensors, and a growing suite of efficient model estimation, machine learning and simulation tools are not just extending classical social science inquiry, but transforming it to pose novel questions at larger and smaller scales. The Computational Social Science (CSS) Workshop is a weekly event that features this work, highlights associated skills and data, and explores the use of CSS in the world. The CSS Workshop alternates weekly between research workshops and professional workshops. The research workshops feature new CSS work from top faculty and advanced graduate students from UChicago and around the world, while professional workshops highlight useful skills and data (e.g., machine learning with Python’s scikit-learn; the Twitter firehose API) and showcase practitioners using CSS in the government, industry and nonprofit sectors. Each quarter, the CSS Workshop also hosts a distinguished lecture, debate and dinner, and a student conference.

**Spatial Regression Analysis**

(MACS 55000). *Luc Anselin, M/W 1:30-2:50 p.m. PQ: Graduate level econometrics or multivariate regression, matrix algebra.*

This course covers statistical and econometric methods specifically geared to the problems of spatial dependence and spatial heterogeneity in cross-sectional data. The main objective of the course is to gain insight into the scope of spatial regression methods, to be able to apply them in an empirical setting, and to properly interpret the results of spatial regression analysis. While the focus is on spatial aspects, the types of methods covered have general validity in statistical practice. The course covers the specification of spatial regression models in order to incorporate spatial dependence and spatial heterogeneity, as well as different estimation methods and specification tests to detect the presence of spatial autocorrelation and spatial heterogeneity. Special attention is paid to the application to spatial models of generic statistical paradigms, such as Maximum Likelihood, Generalized Methods of Moments and the Bayesian perspective. An important aspect of the course is the application of open source software tools such as R, GeoDa and PySal to solve empirical problems.

**Databases for Public Policy**

(CAPP 30235). *Aaron Elmore, T/TH 2-3:20 p.m. PQ: CAPP 30122.*

The course will cover the foundations of Database Management Systems (DBMS). This includes data models, database design, SQL, core database system components (e.g. transactions, recovery, query processing), distributed databases, NewSQL/NoSQL, and systems for data analytics (e.g. column-orientated databases, data warehouses). The goals for this class are for you to have the ability to model and design a database, an understanding of the core components of a database management system, the ability to write SQL, and an understanding of the differences between databases and data models.

**Machine Learning for Public Policy**

(CAPP 30254). *Rayid Ghani, T/TH 9:30-10:50 p.m. & Weekly Lab Wednesdays (1) 5:30-6:50 p.m. or (2) 5-6:20 p.m. PQ: PPHA 31100 or PPHA 31300 and CAPP 30122 or PPHA 30550.*

This course will be an introduction to machine learning and how it can be applied to public policy problems. It’s designed for students who are interested in learning how to use modern, scalable, computational data analysis methods and tools, and apply them to social and policy problems. This course will teach students: what role machine learning can play in designing, implementing, evaluating, and improving public policy; machine Learning methods and tools; how to solve policy problems using machine learning methods and tools. This is a hands-on course where students will be expected to use Python (as well as other computational tools) to implement solutions to various policy problems. We will cover supervised and unsupervised learning algorithms and will learn how to use them with data from a variety of public policy problems in areas such as education, public health, sustainability, economic development, and public safety.

**Computational Approaches to Cognitive Neuroscience**

(PSYC 34410). *Nicholas Hatsopoulos, T/TH 3:30-4:50 p.m. & Weekly Lab Wednesdays 3-4:50 p.m. PQ: BIOS 24231 or CPNS 33100.*

This course is concerned with the relationship of the nervous system to higher order behaviors (e.g., perception, object recognition, action, attention, learning, memory, and decision making). Psychophysical, functional imaging and electrophysiological methods are introduced. Mathematical and statistical methods (e.g. neural networks and algorithms for studying neural encoding in individual neurons and decoding in populations of neurons) are discussed. Weekly lab sections allow students to program cognitive neuroscientific experiments and simulations.

**Machine Learning**

(CMSC 35400). *Imre Kondor, T/TH 3-4:50 p.m. *

This course provides hands-on experience with a range of contemporary machine learning algorithms, as well as an introduction to the theoretical aspects of the subject. Topics covered include: the PAC framework, Bayesian learning, graphical models, clustering, dimensionality reduction, kernel methods including SVMs, matrix completion, neural networks, and an introduction to statistical learning theory.

**Machine Learning and Large Scale Data Analysis **

(CMSC 25025). *Yali Amit, T/TH 2-3:20 p.m. & Weekly Lab Wednesdays (1) 2-3:30 p.m., (2) 2:30-3:50 p.m., or (3) 4-5:20 p.m. PQ: CMSC 15400 or CMSC 12200 and STAT 22000 or STAT 23400, or by consent.*

This course is an introduction to machine learning and the analysis of large data sets using distributed computation and storage infrastructure. Basic machine learning methodology and relevant statistical theory will be presented in lectures. Homework exercises will give students hands-on experience with the methods on different types of data. Methods include algorithms for clustering, binary classification, and hierarchical Bayesian modeling. Data types include images, archives of scientific articles, online ad clickthrough logs, and public records of the City of Chicago. Programming will be based on Python and R, but previous exposure to these languages is not assumed.

**Optimization**

(STAT 28000).* Lek-Heng Lim, T/TH 3:30-4:50 p.m.*

This is an introductory course on optimization that will cover the rudiments of unconstrained and constrained optimization of a real-valued multivariate function. The focus is on the settings where this function is, respectively, linear, quadratic, convex, or differentiable. Time permitting, topics such as nonsmooth, integer, vector, and dynamic optimization may be briefly addressed. Materials will include basic duality theory, optimality conditions, and intractability results, as well as algorithms and applications.

**Modeling and Signal Analysis for Neuroscientists**

(CPNS 32111). *Wim Van Drongelen, M/W 1:30-2:50 p.m. & Weekly Lab Fridays 9:30-11:30 a.m. PQ: BIOS 26210, BIOS 26211 or instructor approval.*

Nervous systems far surpass any artificial system yet devised in their ability to generate flexible, intelligent behavior. The objective of this course is to survey state of the art in our understanding of how nervous systems achieve this remarkable feat. We will examine the major structures in and basic circuitry of the brain, spinal cord, and peripheral nervous system. A major focus will be on how information is encoded in different populations of neurons, how populations of neurons implement computations to extract behaviorally relevant information about the environment, and how neural circuits process this information to guide behavior.

**Topics in Cognition III**

(PSYC 40452). *Marc Berman, Wednesdays 11:30-1:20 p.m.*

Discussion of current research in psychology.

**Planning, Learning, and Estimation for Robotics and Artificial Intelligence**

(TTIC 31170). *Matthew Walter, T/TH 9:30-10:50 a.m., PQ: Basic familiarity with basic linear algebra; background in probability theory; basic programming experience; TTIC 31180 (or equivalent) is recommended.*

This course concerned with fundamental techniques in robotics and artificial intelligence (AI), with an emphasis on probabilistic inference, learning, and planning under uncertainty. The course will investigate the theoretical foundations underlying these topics as rigorous mathematical tools that enable solutions to real-world problems drawn broadly from robotics and AI. The course will cover topics that include: Bayesian filtering (Kalman filtering, particle filtering, and dynamic Bayesian networks), simultaneous localization and mapping, planning, Markov decision processes, partially observable Markov decision processes, reinforcement learning, and graphical models.

**Advanced Natural Language Processing**

(TTIC 31210). *Kevin Gimpel, M/W 1:30-2:50 p.m., PQ: TTIC 31190 or permission of the instructor.*

This course is a follow-up to TTIC 31190. It will go into more depth into the fundamentals of natural language processing (NLP) and cover a broader range of applications. Some class meetings will be hands-on, guided laboratory-style meetings; a laptop is strongly recommended for these class meetings, but not strictly required. Topics include: Neural methods in NLP: word embeddings, language modeling, recurrent/recursive/convolutional networks, similarity functions, ranking/margin objectives, negative sampling, encoder-decoder architectures, attention and memory, copy and coverage mechanisms, neural machine translation; Latent-variable modeling in NLP: generative modeling, topic models, Bayesian inference, Bayesian nonparametrics, EM, MCMC, variational methods, unsupervised NLP; Structured prediction in NLP: algorithms (shift-reduce, cube pruning), grammatical formalisms (CFG, CCG), semantic formalisms (abstract meaning representation), losses for structured prediction; NLP applications: machine comprehension, textual entailment, dialogue systems, machine translation, question answering, and summarization. Assignments include formal exercises as well as practical exercises involving implementing algorithms and using NLP and deep learning toolkits.

**Seminar: Skill Acquisition And Sensorimotor Learning**

(PSYC 33750). *Howard Nussbaum, Tuesdays 12:30-3:20 p.m., PQ: Consent only.*

Skill acquisition has been studied scientifically for well over a hundred years although the vast majority of memory research focuses on learning facts and declarative memory. This seminar will examine how we learn skills both the kind we use routinely without much thought such as walking and language use and the kind that represent expertise resulting from practice and experience. We will read and discuss the research literature on the cognitive and neural mechanisms underlying sensorimotor learning. We will consider specific topics such as the interaction of sensory systems and motor systems in learning and the role of sleep in consolidation of learning. Course requirements will include class presentations of research papers, weekly writing assignments, and a final paper.

**Behavioral Neuroscience**

(PSYC 40107). *Daniel Margoliash, M/W 3-4:20 p.m.*

This course is concerned with the structure and function of systems of neurons, and how these are related to behavior. Common patterns of organization are described from the anatomical, physiological, and behavioral perspectives of analysis. The comparative approach is emphasized throughout. Laboratories include exposure to instrumentation and electronics, and involve work with live animals. A central goal of the laboratory is to expose students to in vivo extracellular electrophysiology in vertebrate preparations. Laboratories will be attended only on one day a week but may run well beyond the canonical period.

**Environmental Neuroscience**

(PSYC 38655). *Marc Berman and Sarah London, Mondays 9:30-12:20 p.m., PQ: Consent only.*

In this course, we will be examining how the physical and social environment affects brain and behavior. This course will span biological psychology with non-human animals to large Epidemiological studies examining how environments affect brain and behavior.

**Computational Models of Cognitive Development**

(PSYC 43360). *Daniel Yurovsky, Mondays 1:30-4:20 p.m., PQ: Consent only.*

Computational models are powerful tool for integrating empirical research, and for making novel predictions about cognition and development. This course will survey computational models of attention, Learning, Decision Making, and Language Processing, aiming to develop students’ understanding of what models are for broadly, as well as what kinds of models are used and useful in their individual research areas.

**Co-evolution of State sand Markets**

(PLSC 46401). *John Padgett, Mondays 1:30-4:20 p.m.*

This course will focus on the emergence of alternative forms of organization control (e.g., centralized bureaucracy, multiple hierarchies, elite networks, and clientage) in different social structural contexts (e.g., the interaction of kinship, class, nation states, markets and heterodox mobilization). Themes will be illustrated in numerous cross-cultural contexts.

**Advanced Machine Learning for Public Policy**

(CAPP 30255). *Amitabh Chaudhary, M/W 1:30-2:50 p.m. PQ: CAPP 30254 and CAPP 30123*

In this course we apply advanced machine learning techniques to application areas common in policy analysis, focusing on text mining and network analysis, and emphasizing computational efficiency and software development. In text mining, we use Markov chains to succinctly represent language models, term frequency and inverse document frequency to find the most relevant documents for information retrieval, regular expressions to extract specific information in a document, and specialized supervised and unsupervised techniques for sentiment analysis. In network analysis we see, e.g., how random walks are used to rank nodes based on their "importance" (Google's PageRank), how graph clustering helps identify sub-communities in a social network, and how the Apriori algorithm can quick discover frequently occurring subgraphs. In addition, we study a couple of other advanced machine learning topics based on student interest. Possible choices are optimization, dimensionality reduction, online learning, reinforcement learning, artificial neural networks, and large-scale data mining. A major component of the course is a quarter-long project in which students build a prototype system for solving a real-world problem.

**Next Generation Data: Sources, Access**

(PPHA 30525). *Colm O**’**Muircheartaigh and Robert Goerge, Tuesdays 3:30-6:20 p.m. *

For decades, sample surveys have produced the data that provide the basis for decisions of policy makers and decision makers in both the public and the private sectors. Traditional surveys are however coming under a dual threat: decreasing response rates and increasing costs. At the same time a wide array of new sources of data is emerging. Although survey researchers and methodologists are actively seeking to adapt to an ever changing social and technological environment, it is increasingly difficult to maintain the desired relevance, accuracy, and timeliness of survey-based statistics. At the same time, there are many potentially valuable non-survey data sources, such as federal, state, and local government administrative records, credit card and store transactions, sensor data, and a wide and growing variety of web-based data, such as social media, price data, etc. This class will discuss the new forms of data that are being collected to conduct social, economic, behavioral, and policy research, while at the same time addressing innovations in traditional methods, such as survey research. Issues of access, quality, ethics/privacy, analysis, and storage will be discussed. A range of policy domains will be addressed, including education, finance, transportation, welfare programs, and health care. We hope to invite guest speakers to present the perspective of data generators, data providers, and data users. This course counts toward the Survey Research Certificate.

**Machine Learning for Public Policy**

(PPHA 30540). *Rayid Ghani, T/Th 9:30-10:50 a.m. & Weekly Lab Wednesdays 5:30-6:50 p.m. *

For decades, sample surveys have produced the data that provide the basis for decisions of policy makers and decision makers in both the public and the private sectors. Traditional surveys are however coming under a dual threat: decreasing response rates and increasing costs. At the same time a wide array of new sources of data is emerging. Although survey researchers and methodologists are actively seeking to adapt to an ever changing social and technological environment, it is increasingly difficult to maintain the desired relevance, accuracy, and timeliness of survey-based statistics. At the same time, there are many potentially valuable non-survey data sources, such as federal, state, and local government administrative records, credit card and store transactions, sensor data, and a wide and growing variety of web-based data, such as social media, price data, etc. This class will discuss the new forms of data that are being collected to conduct social, economic, behavioral, and policy research, while at the same time addressing innovations in traditional methods, such as survey research. Issues of access, quality, ethics/privacy, analysis, and storage will be discussed. A range of policy domains will be addressed, including education, finance, transportation, welfare programs, and health care. We hope to invite guest speakers to present the perspective of data generators, data providers, and data users. This course counts toward the Survey Research Certificate.

**GIS Applications in the Social Sciences**

(PPHA 38520). *Edward English, Thursdays 3:30-6:20 p.m.*

Geographic Information Systems (GIS) refers to tools and techniques for handling, analyzing, and presenting spatial data. GIS has become a powerful tool for social sciences applications over the past thirty years, permitting lines of scientific inquiry that would not otherwise be possible. This course provides an introduction to GIS with a focus on how it may be applied to common needs in the social sciences, such as economics, sociology, and urban geography, as distinct from physical or environmental sciences. Students will learn basic GIS concepts as applied to specific research questions through lectures, lab exercises, and in-class demonstrations. Examples of the kinds of topics we will pursue include how we can use GIS to understand population trends, crime patterns, asthma incidence, and segregation in Chicago.

**Machine Learning and Policy**

(PPHA 38820). *Jens Ludwig, Thursdays 2-4:50 p.m. *

The goal of this course is to make students better producers and consumers of machine learning tools designed to help solve public policy problems. One thing this goal requires is some understanding of the basics of machine learning: how it works, what makes it different from the usual sort of statistical and econometric tools that we tend to use in social science studies of public policy problems, and how to implement these prediction models (which we will be doing in R, a free statistical program that now includes many machine learning packages). But this goal also requires some understanding of issues that are outside the usual machine learning toolkit, such as: what sorts of public policy problems are right for these tools, and which are not; how do we know whether a new prediction tool is capable of actually improving policy decisions, not just predicting outcomes accurately within some hold-out set; what additional considerations around fairness and other normative values may arise in using machine learning tools for public policy applications; and what challenges are associated with getting policymakers, front-line practitioners or individual citizens to make use of prediction tools and resulting decision aids.

**Databases**

(MPCS 53001). *TBD, Non-MPCS students must receive approval from program prior to registering.*

Students will learn database design and development and will build a simple but complete web application powered by a relational database. We start by showing how to model relational databases using the prevailing technique for conceptual modeling -- Entity-Relationship Diagrams (ERD). Concepts covered include entity sets and relationships, entity key as a unique identifier for each object in an entity set, one-one, many-one, and many-many relationships as well as translational rules from conceptual modeling (ERD) to relational table definitions. We also examine the relational model and functional dependencies and their application to the methods for improving database design: normal forms and normalization. After design and modeling, students will learn the universal language of relational databases: SQL (Structured Query Language). We start by introducing relational algebra -- the theoretical foundation of SQL. Then we examine in detail the two aspects of SQL: data definition language (DDL) and the data manipulation language (DML). Concepts covered include subqueries (correlated and uncorrelated), aggregation, various types of joins including outer joins and syntax alternatives. Students will gain significant experience with writing and reading SQL queries throughout the course in the detailed discussions in class, online homework, and the real-world individual project.

**Algorithms**

(MPCS 55001).

The course is an introduction to the design and analysis of efficient algorithms, with emphasis on developing techniques for the design and rigorous analysis of algorithms rather than on implementation. Algorithmic problems include sorting and searching, discrete optimization, and algorithmic graph theory. Design techniques include divide-and-conquer methods, dynamic programming, greedy methods, graph search, as well as the design of efficient data structures. Methods of algorithm analysis include asymptotic notation, evaluation of recurrences, and the concepts of polynomial-time algorithms. NP-completeness is introduced toward the end the course. Students who complete the course will have demonstrated the ability to use divide-and-conquer methods, dynamic programming methods, and greedy methods, when an algorithmic design problem calls for such a method. They will have learned the design strategies employed by the major sorting algorithms and the major graph algorithms, and will have demonstrated the ability to use these design strategies or modify such algorithms to solve algorithm problems when appropriate. They will have derived and solved recurrences describing the performance of divide-and-conquer algorithms, have analyzed the time and space complexity of dynamic programming algorithms, and have analyzed the efficiency of the major graph algorithms, using asymptotic analysis.

**Python Programming**

(MPCS 51042).

This course provides a thorough overview of the Python 3 language with an emphasis on writing idiomatic code in Python and object-oriented design patterns and is suitable for students with some prior programming experience. We will develop an understanding of the core features of the languages and gain exposure to commonly used standard-library and third-party modules.

**C Programming**

(MPCS 51040).

This is an accelerated introduction to the C (not C++) Programming Language designed for students with prior programming experience. C is in many ways the lingua franca of computing, and a broad range of programming languages and related technologies derive from the basic principles of C memory management, control flow, and abstraction. Though there are many subtleties, C is not a big language, and it is expected that students will leave the course with a relatively deep understanding of the key concepts, which will then form a solid foundation for studying higher-level technologies. At the same time, C itself remains a very practical language, particularly so in areas such as scientific programming, high-performance computing, application level library design, systems programming, network programming, multi-threaded programming, etc. Students who successfully complete the course will be well prepared for subsequent MPCS courses in these areas. The course studies both fundamental and advanced C language constructs in the abstract and reinforces them through a range of exercises in the design of basic and advanced data structures, rudimentary algorithms, and API design.

**Compilers**

(MPCS 51300).

This class teaches the theory and practice of how to write a compiler, including lexical analysis, grammars, lexers and parsers, type checking, and code generation. For decades, compilers have been the most dynamic and challenging branch in computer science. The main part of this class will focus on providing the basics of the different phases of compilation. Through the course, students will develop appreciation for the implementation strategies behind making an efficient and robust compiler.