• 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.

Read more

Objectives

Be able to create a professional-grade Python package that includes code versioning, unit testing, and documentation.

Read more

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.).

Read more

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)

Read more

Course Outline

  1. 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
Read more

Additional Information

Hours:
Lectures: 12 hours
Tutorials: 18 hours
Lab sessions:
Fieldwork:

Read more