Technological advances in data gathering and storage have led to a rapid proliferation of large amounts of data in diverse areas such as climate studies, cosmology, medicine, Web data processing, and engineering. Making sense of this data deluge requires a set of skills which have become fundamental in any major corporation and any almost any scientific discipline.

## Learning objectives

From web scraping and data wrangling to advanced topics like machine learning and deep learning, in this course you will learn a variety of skills by working on real examples.

**Gather and organize**. Learn how to use Python to gather and organize data programmatically and prepare it for deeper analysis. Key technologies: Beautiful Soup, Pandas.**Analyze**. Discover patterns and trends lurking in the data and extract conclusions. Key technologies: NumPy, SciPy, Pandas.**Model**. From linear regression to deep learning, learn to model complex phenomena and use data to automate decisions. Key technologies: scikit-learn, Keras, PyTorch, Tensorflow.**Report**. Display information visually and communicate your findings in a way that is clear and compelling. Software packages: Matplotlib, Jupyter, Bokeh.

## Instructors

Fabian Pedregosa, <f@bianp.net>, Postdoctoral Researcher, UC Berkeley.

Laurent El Ghaoui, Professor, UC Berkeley.

*Teaching assistant*: Bowen Yin Wang

*Invited speaker* (September 26th): Nelle Varoquaux, Postdoctoral Researcher, Berkeley Institute for Data Science.

**Office Hours**: Office hours are available for students who need further clarification of concepts presented in lecture, or have made solid attempts on the homework assignment or other practice problems and require further assistance understanding how to approach such problems.

The office hours are usually Fridays from 15h to 17h. The google calendar below always has the latest information.

## Course requirements

This course only requires an undergraduate level on statistics, linear algebra and calculus. I will assume basic understanding of the Python language.

Students are required to come with a laptop to the the lab sessions. Please come with a Python distribution such as Anaconda installed to minimize set up time. If you would like to attend but you don’t have access to computing resources, contact me and we will figure something up.

## Course Schedule

The course is organized in sessions of 3 hours, from 14h to 17h. Each session is split in 1h of theory (presentation and whiteboard) and 1h45 of lab practice, with a 15min break in-between. The course will take place in Saturdjia Dai Hall room 250.

### Session 1 (September 12th): Foundations of data science

Pioneers of data science. Introduction to regression models. Dimensionality and structured models. Model selection and bias-variance tradeoff. Classification.

**Practical session**: The Jupyter (formerly IPython) interactive environment. NumPy, Python’s array computing library. As material we will use chapters 1 and 2 of Jake VanderPlas’ excellent Python Data Science Handbook.

### Session 2 (September 19th): Analysis of dataset

Analysis of dataset. Work by paired programming. Lecture material

### Session 3 (September 26th): Visualization with Matplotlib

**This session will be given by invited speaker Nelle Varoquaux**. slides

### Session 4 (October 3rd): Introduction to supervised learning.

Permutation tests. Logistic regression. Slides: part 1, part 2

*Session 5 (October 10th): First student presentation*

In this session, students will present their first assignment. In this assignment, the students should make a 15-min presentation (10 min presentation + 5 min questions) on the project of their choice.

### Session 6 (October 17th): Supervised learning.

Supervised learning models. Overfitting. Model selection. Class material.

### Session 7 (October 24th): Unsupervised learning.

Clustering, dimensionality reduction, feature extraction. Class material

### Session 8 (October 31st): Introduction to deep learning.

Deep convolutional networks. Pretrained networks. Library used: Keras. Class material

### Session 9 (November 7th): Practical machine learning

Working with text and time series. Class material

### Session 10 (November 14th): Generative Adversarial Networks (GANs)

Tutorial on Generative Adversarial Networks (GANs)

### Session 11 (November 21st): Coding sprint

We will contribute to scikit-learn by fixing issues and improving the code.

### Session 12 (December 1st): Final milestone

Final presentation of projects.

## Rules for Success (Student Responsibilities)

This course has three important rules. If you choose to follow these rules, your odds of learning the material and earning a good grade in this class will improve greatly.

**Work**. To succeed in this class, you must choose to do your very best on all your assignments. See the course Assignments, for additional information on completing assignments.**Participate actively**. To succeed in this class, you must choose to stay focused and involved, offering your best comments, questions, and answers. This is a seminar class, not a lecture class – active discussion is expected of all students.**Respect**. You will be exposed to a variety of viewpoints, values and opinions in college that will differ from your own. All students in this class should feel comfortable expressing their viewpoints and concerns in class. You are an important part of creating an atmosphere that makes this possible. This applies to me too!

## Instructor Responsibilities

What you can expect from me:

- Attend every class period and arrive to class on time.
- Provide access to quality learning material adapted to the level and background of all students.
- Use a variety of teaching techniques and modalities to accommodate different learning styles.
- Return written assignments in class and online in a timely fashion and provide helpful feedback.
- Come to class with a positive and friendly attitude.
- Be respectful of your ideas and value the diversity you bring to the classroom.
- Be open to dialogue that challenges me.
- Answer any appropriate questions you may have.
- Be present during my stated office hours.

# Bibliography

### General Data Science

Ani Adhikari and John DeNero, Inferential thinking

Jake VanderPlas, Python Data Science Handbook

Trevor Hastie and Robert Tibshirany, Statistical Learning, Stanford MOOC on data science and machine learning. I will be reusing some of their slides.

Joel Grus, Data science from scratch: First principles with Python, O’Reilly Media, 2015.

Wes McKinney, Python for data analysis, O’Reilly Media, 2013.

Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani, An Introduction to Statistical Learning

### Machine Learning

Trevor Hastie, Robert Tibshirani, Jerome Friedman The Elements of Statistical Learning: Data Mining, Inference, and Prediction.

Andreas Müller and Sarah Guido Introduction to Machine Learning with Python. A Guide for Data Scientists