ECTS
4 credits
Training Structure
College of Sciences
Description
This course focuses on exploring best practices in professional-level coding.
The primary programming language is Python, but some knowledge of bash and git will also be useful.
A particular emphasis will be placed on data processing and visualization, which are central to the course.
We will focus primarily on the basic concepts of programming, as well as on exploring Python’s scientific libraries, including “numpy, scipy, pandas, matplotlib, and seaborn.”
Beyond knowledge of these fundamental packages, we will introduce modern coding practices: (unit) testing, version control (git), automatic documentation generation, etc.
Objectives
Be able to create a professional-grade Python package that includes code versioning, unit testing, and documentation.
Class Hours
- Software Development - TutorialsTutorials6:00 p.m.
- Software Development - CMLecture12 hours
Mandatory Prerequisites
Students must be familiar with the basic concepts of probability, optimization, linear algebra, and statistics. A basic understanding of programming structures is also required (if, then... else, while/for loops).
Recommended prerequisites: Some knowledge of Python would be helpful, as well as knowledge of numerical analysis (floating-point arithmetic, rounding errors, etc.).
Knowledge Assessment
- Course Code
- Project (70% of the final grade)
- Format: in small groups, with a balanced contribution from each member.
- Required work: a GitHub repository where the work is available, a summary report, and a presentation.
- Graded lab (15% of the final grade)
- Quiz (15% of the final grade)
Course Outline
- Programming: algorithms, modules, basic data types, functions, loops
2. Programming: lists, dictionaries, tuples, `if` statements and loops, exceptions
3. Classes (`__init__`, `__call__`, etc...), operator overloading, file handling, Git: a brief introduction
4. `numpy`: basics of matrices (arrays), slicing, simple linear algebra, masking; `matplotlib`: first plots
5. `github`, creating an SSH key, various Git commands, conflicts, pull requests
6. `numpy`: type casting, concatenation, `imshow`, `meshgrid`, type casting, copying; `scipy`: EDO, interpolation, optimization
7. Hands-on Git, introduction to Linux basics and command-line tools
8. `scipy`: Images/channels, FFT, Pandas: missing data
9. Bash, regexp, grep, find, rename, Python virtual environment
10. Pandas: first steps
11. Python virtual environment: Anaconda, IDE: VScode, Create a Python Module
12. Pandas: Learn More
13. Create a Python Module, Unit Tests
14. Unit Testing
15. Matrices, Sparse Matrices, and Memory
16. Numba
17. Documentation with Sphinx
18. Statsmodels
Additional Information
Hours:
Lectures: 12 hours
Tutorials: 18 hours
Lab sessions:
Fieldwork: