This repository contains notes for the Python course of the 2021 edition of Math^industry. This workshop takes place from August 3rd-27th, 2021 and pairs graduate students with industry and academic mentors to tackle real problems from industry. The Python course for m2pi is meant to provide students with a baseline of programming knowledge to help them tackle their assigned industry problems.
Prior to the taught material on Jupyter/Python, we would like you to self assess your skill level in Python and brush up your skills if necessary. Python is a very user friendly and is quite easy to learn. The python documentation has lots of links to learning resources; if you have no programming experience, this list should help you find some suitable tutorials, if you have some programming experience in another language, this list should help you find some useful tutorials. Here are a few examples from those lists
Some of these resources will let you run python snippets as part of the tutorial and you may also access a dedicated JupyterHub environment we have provided for the workshop at https://m2pi.syzygy.ca which will let you run python in your browser. You can also access google collab with a google account which will persist after the workshop and can let you work collaboratively with other people. If you prefer to install things locally, miniconda or anaconda is probably the best way to do that.
Your goals when working through the python tutorials should be to understand...
- Basic python syntax such as keywords, variables, types etc.
- Loops (
for
&while
) and conditionals (if
,elif
,else
) - Functions: what the
def
keyword does. How to specify positional and keyword arguments to functions and how to provide default values for them. - Modules: What they are and how to find good ones!
- Classes, understanding how to define a basic
class
, what methods and attributes are and how to use inheritance/subclassing.
For the last two points, you don't have to master every little corner of the language, but you should be familiar with the basic terminology and ideas. For example, you might not need to write your own classes, but you might need to know how to create a subclass to customize a method in someone else's work.
In this session we'll go over some of the points above to see if there are any sticking points.
In this session we will review some basic programming problems and solve them using python.
In this course we will build on your knowledge of Python to sharpen your skills for data manipulation and analysis. We will use libraries such as pandas, numpy and matplotlib to ingest, tidy and explore real world datasets and extract insights from them. We will leverage the Jupyter notebook interface to help us work with public APIs, combine multiple datasets and perform exploratory analysis. At the end of the course you should feel comfortable working with unfamiliar datasets, spotting common data errors and using visualizations to understand your data and plan more detailed analysis.
In this session, we will build on the content of the python/jupyter course as well as the first problem session and explore some more complex problems which include external data sources.