Syllabus#

The course is aimed at students who are already semi-proficient with other programming languages, namely Matlab. Examples (and homework) will be derived from common problems and tasks in neuroscience, to improve the analysis of your own data by increasing its automation and reproducibility.

Prerequisites:

  1. Basic knowledge of programming.

  2. Extended Mathematics course (in the Life Sciences faculty), or a parallel one.

Final Grade:

  • 40% - Homework assignments - one submission is skippable (not the first).

  • 60% - Final project (hackathon).

Each 3-hour lecture will start with an oral presentation, followed by individual work in the computer lab. To summarize I’ll present solutions to the class exercises and we’ll discuss some of the difficulties you encountered.

Main topics of the course will include:

  1. Introduction and Motivation.

  2. Data structures (lists, tuples, sets, dictionaries), functions and iterations.

  3. Object-oriented programming.

  4. File I/O and exception handling.

  5. Python’s scientific stack - NumPy, SciPy, Pandas, Matplotlib.

  6. Advanced Pandas - use cases, data organization.

  7. Important programming tools and habits - Package management, Git, unit tests.

  8. Image processing and basic machine learning.

  9. Performant code - Cython, Numba, multiprocessing.

  10. Principles of Software Design.

  11. Advanced subjects - generators, decorators, meta-programming.