Tyler Ransom | |
---|---|
[email protected] | |
Office | 322 CCD1 |
Office Hours | M 9-10am, Th 12-1pm |
GitHub | tyleransom |
- Meeting day/time: T,Th 1:30-2:45pm, CCD1, Room 174
- Office hours also available by appointment
- This course takes inspiration and extensively borrows materials from similar courses taught by Jason DeBacker (U of South Carolina) and Rick Evans (U of Chicago). Thanks to them for providing a framework for using GitHub as a class collaboration tool and for insights into teaching programming skills.
Data science is a rapidly developing field that combines the recent Big Data revolution with ever-developing statistical algorithms to inform business and policy decisions. Nearly every company you've heard of uses data science to optimize its services: Netflix uses it to recommend new programs to its viewers, Amazon uses it to determine how much it should charge for its Prime services. This class will provide students with an overview of the data science workflow, from collecting raw data to drawing a set of insights from which a decision maker can make informed decisions. Along the way we will broadly cover a variety of advances in data collection, data storage, visualization, machine learning and econometrics topics, as well as teaching and reinforcing good programming practices. The primary goal of this course is to provide you, the student, with a set of skills that will allow you to compete for a data science job.
By the end of the course, students should be able to do the following:
- Explain the data science workflow from start to finish
- Be able to collect data from online sources via APIs or scraping
- Describe similarities and differences between econometrics and machine learning
- Explain what data science is, and how Big Data differs from other types of data
- Demonstrate good programming practices by writing code that can allow for easy collaboration with others
- Understand the differences between prediction and causality, and the cases in which each is useful
In this course students, through lecture and application, will learn about:
- Good programming practices, including how to write code collaboratively with others
- Software to increase research productivity including:
- LaTeX/Markdown
- git
- Software to collect & clean data, and estimate statistical models:
- R
- Julia
- Python
- Software to manage big data sets:
- SQL
- RDDs (Resilient Distributed Datasets) --- Spark, Hadoop
- How to access and utilize cluster computing resources
- SSH (Secure Shell)
- SFTP (Secure File Transfer Protocol)
- SLURM (Simple Linux Utility for Resource Management)
- Methods to gather and handle data including:
- Costs and benefits of different data structures
- Using APIs
- Web scraping
- Best practices for cleaning and visualizing data
- Computational methods to:
- Optimize and find roots of functions
- Perform Monte Carlo simulations
- Run computations in parallel using multiple processors (time permitting)
- Basics for modeling different types of data
- Machine learning basics:
- Supervised vs. unsupervised learning
- The five "tribes" of machine learning: how they are interconnected, and how they differ
- Machine learning vs. econometrics: prediction vs. causality
- Evaluating model performance
- Using economic models to inform policy decisions
- Computing structural models
Grades will be based on the categories listed below with the corresponding weights.
Component | Percent |
---|---|
Class Participation | 10% |
Problem Sets | 35% |
Exam & Quizzes | 20% |
Final project | 35% |
Total points | 100% |
Final grades will be assigned according to the standard cutoffs (90%+ for an A, 80%-89.99% for a B, etc.).
-
Participation:
- An important part of learning is face-to-face interaction. Thus, some of your grade will depend on attendance and active participation in class meetings.
-
Problem sets: will be assigned approximately weekly throughout the semester.
- You must write and submit your own computer code, although I encourage you to collaborate with your fellow students. I DO NOT want to see a bunch of copies of identical code. I DO want to see each of you learning how to code these problems so that you could do it on your own.
- Problem set solutions, both written and code portions, will be turned in via a pull request from your private GitHub.com repository which is a fork of the class master repository on my account. (You will need to set up a GitHub account if you do not already have one.)
- Written solutions must be submitted as PDF documents or Jupyter Notebooks.
- Problem sets will be due on the day listed in the Daily Course Schedule section of this syllabus (see below) unless otherwise specified. Late problem sets will not receive any credit. Partially completed problem sets will receive partial credit.
-
Exam & Quizzes:
- We may periodically have in-class quizzes as low-stakes ways to get feedback
- There will be a written final exam, but no midterm
-
Final Project:
- Collect data on and analyze a research question of your choosing, using methods taught in this course
- Write up a ~10 page (12pt font, double spaced, excluding References, Figures, and Tables) summary of your findings, including discussion about what prior studies of the same topic have found, as well as citations to prior studies
- Turn in the written summary report and a GitHub repository containing all materials required to reproduce the results
- Summary report should be written in LaTeX or RMarkdown and turned in as a PDF (source code for the summary report should also be included in your GitHub repository)
- An example of what the final product should look like is here, with LaTeX source code here and BibTeX source code here.
- A detailed rubric for the final project is here
- I will always be available via email, and in person during office hours.
- Additionally, I have set up a Gitter community (see the badge at the top of this document) where I am hoping you can chat with each other about programming or other questions you have regarding the course. I will also be a participant in that community.
(Will be continuously updated throughout the semester)
Date | Day | Topic | Due |
---|---|---|---|
Jan 16 | T | What is data science / big data / why is it important? (Slides) | |
Jan 18 | Th | Git, GitHub, computing environment, and Coding best practices (Notes) | Read Gentzkow & Shapiro's handbook; Ch. 1 of The Master Algorithm; register for GitHub account |
Jan 23 | T | Linux command line, SSH, accessing OSCER (Notes) | PS 1 |
Jan 25 | Th | Overview of Data Scientists' tools (Notes) | |
Jan 30 | T | Using data: data types, storage (Notes) | PS 2 |
Feb 1 | Th | Big Data: SQL (Notes) & RDDs (link); running jobs on the OSCER cluster | |
Feb 6 | T | Sampling & storing Big Data (Notes) | PS 3 |
Feb 8 | Th | Web scraping/APIs to gather data (Notes) | |
Feb 13 | T | Web scraping/APIs to gather data (Notes) | PS 4 |
Feb 15 | Th | No class: career fair (Julia notes) | |
Feb 20 | T | No class (snow day) | PS 5 |
Feb 22 | Th | No class (snow day) | |
Feb 27 | T | Getting to know your data: descriptive statistics, cleaning, tips, tricks, transformations, visualization (Notes; HTML slides) | |
Mar 1 | Th | Modeling continuous and discrete variables (Notes) HTML slides) | |
Mar 6 | T | Introduction to optimization (Notes) | PS 6 |
Mar 8 | Th | Writing and optimizing functions in R, Python, and Julia (Notes) | |
Mar 13 | T | Writing and optimizing functions in R, Python, and Julia (Notes) | PS 7 |
Mar 15 | Th | Debugging strategies and simulations (Notes) | |
Mar 20 | T | No class (Spring break) | |
Mar 22 | Th | No class (Spring break) | |
Mar 27 | T | Intro to Machine Learning (Notes) | PS 8 |
Mar 29 | Th | Supervised ML: Regularization, measuring model fit, tuning with cross-validation, the elastic net model (Notes) | |
Apr 3 | T | Supervised ML: The 5 Tribes of Machine Learning (Notes) | PS 9 |
Apr 5 | Th | Unsupervised ML: Clustering (Notes) | |
Apr 10 | T | Unsupervised ML: Dimensionality reduction and reinforcement learning (Notes) | PS 10 |
Apr 12 | Th | Machine learning vs. econometrics (Notes) | |
Apr 17 | T | Structural modeling (Notes) | PS 11 |
Apr 19 | Th | Field Trip to Sonic HQ | |
Apr 24 | T | Structural modeling (Notes) | PS 12 |
Apr 26 | Th | Final Project presentations (Rubric) | |
May 1 | T | Final Project presentations (Rubric) | |
May 3 | Th | Final Project presentations (Rubric) | |
May 8 | T | Final Exam (in class, 1:30-3:30pm) | Final project due (Scoresheet) |
- QuantEcon
- Notes on Machine Learning & Artificial Intelligence by Chris Albon
- R data wrangling cheatsheet
- R tidyverse
- Julia vs. Python for Data Science
- Machine Learning "Mind Map"
- JP Morgan massive overview of Big Data & Machine Learning
- Why it's becoming increasingly more difficult to learn to program
- The Master Algorithm (Amazon link)
- Julia for Data Science (Amazon link)
- R for Data Science (Free PDF)
- Data Science at the Command Line (Free eBook)
I do not tolerate academic misconduct, and neither does the University of Oklahoma. I will not hesitate to fail students who do not fully comply with the University's academic misconduct policy. If you find yourself contemplating cheating, plagiarism, or other forms of academic misconduct, please come see me first. Help is available if you are struggling. I want everyone in the class to try their best and to do their own work. Please be advised that I reserve the right to utilize anti-plagiarism resources such as TurnItIn when grading assignments.
If a student requires an accommodation based on disability, the student should meet with me in my office during the first week of the semester. Student responsibility primarily rests with informing faculty at the beginning of the semester and in providing authorized documentation through designated administrative channels. The Disability Resource Center is located in Goddard Hall (405-325-3852).