In this course, you will learn how to program well in Python.

You will be taken from the first steps in the language to the study of the most evolved concepts, through numerous short videos, notebooks and self-assessed exercises.

Python has a number of libraries that probably already do what you want. You can build a website with Django, do scientific computing with NumPy and pandas, and more. However, to fully exploit all the possibilities of this rich ecosystem, you must acquire a deep understanding of the language.

The Python language encourages intuitive programming that relies on natural syntax and powerful foundational concepts that make programming easier. It is important to have a good grasp of these concepts in order to quickly write effective programs that are easy to understand and maintain, and which fully exploit the possibilities of the language.

We will cover in this course all aspects of the language, from basic types to meta-classes, but we will articulate it around the fundamental concepts that are the strength of Python:

- the concept of dynamic typing and shared references which allows fast, easily expandable and memory efficient programming;
– the concept of namespace which allows safer programming, minimizing unwanted interactions between different parts of a program;
– the concept of iterator which allows natural and intuitive programming, where browsing a file only takes one line of code;
– the concept of vectorization to achieve excellent performance in scientific computing applications.