# Announcements

1/12/18 Beginning next week (1/17), we will be in HAMP 1252.

11/21/17 Webpage live, but contents still under construction!

# Course Description

This course provides a broad introduction to data analysis and modeling for Engineering majors. Topics covered include:

- How do I tell whether data follows a pattern?
- How do I answer questions about my data? What questions should I be asking in the first place?
- How can I visualize my data?

We are going to take a problem-focused approach to the material, looking at how to use data analysis and modeling algorithms, such as clustering, regression, hypothesis testing, etc., to solve interesting engineering problems. The course will use Python to teach how to write these analyses. There will be programming assignments (in Python) every two weeks during the first part of the course to explore concepts, followed by an end-of-semester mini-project where the students will tackle a larger analysis and modeling problem.

**Prerequisites**: (ENGR 132, 142, or 162, C- or better) and (MA 16600, 16200, or 17300, C- or better)

# Course Details

The syllabus for the course explains the logistical details of the course. The course also uses a Piazza discussion board for course questions.

# Lecture Notes

- Lecture 1: Course Introduction.
- Lecture 2: Python Overview. You may also find the accompanying Jupyter notebook useful.
- Lecture 3: Histograms.
- Lecture 4: Higher Order Functions (Filter, Map, Reduce). You may also find the accompanying Jupyter notebeook useful. The notebook assumes that the math_scores.txt file from HW1 is in the same directory.
- Lecture 5: Probability.
- Lecture 6: Data structures. You may also find the accompanying Jupyter notebeook useful. The notebook assumes that the hw02_problem3.csv file from HW2 is in the same directory.
- Lecture 7: Estimation and Confidence Intervals.
- Lecture 8: Iterators.
- Lecture 9: Regression.
- Lecture 10: Trees.
- Lecture 11: Supervised Learning.
- Lecture 12: Nearest neighbor using KDTrees. The code from class is available here.
- Lecture 13: Unsupervised learning.
- Lecture 14: Perceptrons. This code implements a simple perceptron for functions with arbitrary numbers of inputs. It also includes a testing harness for learning boolean functions.

# Assignments

- HW 0: Environment setup. Due 1/19
- HW 1: Histograms. Due 2/2
- HW 2: Sampling and Distributions. Due 2/16
- HW 3: Estimation and Confidence Intervals. Due 3/2
- HW 4: Regression. Due 3/23
- HW 5: Classification. Due 4/6
- Project Proposal. Due 4/13
- Final Project. Due 5/3