A module offered as a complement to the data science courses, or as a standalone course depending on your needs.
Python has become the reference language for research, engineering and data science. For someone who already programs in C, Java, Fortran or Matlab, the syntax can be learned in a few days — and that is precisely the trap: you write Python that works, without understanding what makes it different.
This course targets exactly these people. It moves quickly through the syntax to spend most of the time on the mechanisms that make Python specific: shared references, dynamic typing, namespaces, the iteration protocol. These are the mental models that let you write idiomatic Python rather than disguised C.
After this course, your staff will be able to
- Understand and apply Python's fundamental mechanisms: shared references, dynamic typing, namespaces
- Write Python functions with a solid grasp of variable scope and the different forms of arguments
- Organize their code into reusable modules and packages
- Handle exceptions and use context managers
- Use generator functions and functional tools (comprehensions, generator expressions)
- Design classes and use inheritance in object-oriented programming, depending on the group's progress
Detailed program
Module 1 — Environment and basic types
History and evolution of Python. A modern working environment: VS Code IDE, git, LLM integration. Numeric types (int, float, bool) and sequences (list, str, tuple). Conditional statements. Mutability and immutability: understanding which types can be modified in place.
Module 2 — Shared references and the object model
The conceptual core of the language. Dynamic typing and shared references: Python's object model. Shallow copy and deep copy: when one is enough and when the other is needed. The practical consequences for everyday code.
Module 3 — Iteration
The iteration protocol in Python: for loops and the underlying iterators. Hash tables: set and dict. File handling and context managers. Generator functions, generator expressions, list/set/dictionary comprehensions. Lambda functions and polymorphism.
Module 4 — Functions and namespaces
Declaring functions, keyword, default and arbitrary arguments (*args, **kwargs). Variable scope and the LEGB rule. Namespaces: creating and importing modules, organizing them into packages. Exception handling: try/except/finally.
Module 5 — Object-oriented programming (depending on the group's progress)
For homogeneous groups that have absorbed the previous notions: classes, instances, methods. Inheritance and operator overloading. Namespaces across modules and classes. Designing context managers. This module is only covered with groups that are ready — solid fundamentals remain the priority.
Audience and prerequisites
Target audience
Ph.D. students, engineers and researchers who already have a background in imperative or functional programming (C, C++, Java, Fortran, Matlab, Perl, etc.) and want to acquire a solid command of Python.
Prerequisites
Programming experience in at least one other language. No prior knowledge of Python is needed.
Teaching method
The course alternates short theoretical presentations and hands-on exercises in Jupyter notebooks. Each concept is put into practice immediately. I pay particular attention to making sure every participant keeps up, whatever their starting level, and I calibrate the depth of each topic to the group — this is in particular what determines how deep we go into OOP in module 5.
The material is given to the participants at the end of the course, along with the exercise notebooks and their solutions.
A course to prepare your teams for data science
This course is the natural foundation for teams who will then take a Python data science course. Once the fundamental mechanisms are mastered, NumPy, Pandas and Polars are learned much faster — and the code is better from the first draft.
Official documentation
The Python 3 documentation and its official tutorial.
Frequently asked questions
Is this course suitable for someone who has never used Python?
Yes, no prior knowledge of Python is needed. The course is designed for engineers, researchers or Ph.D. students who already program in another language (C, Java, Fortran, Matlab…) and who want to acquire a solid command of Python, not just learn its syntax.
How soon can participants be productive in Python after this course?
The course lasts 3 days. At the end, participants master the fundamental mechanisms that make Python specific: shared references, namespaces, the iteration protocol. These mental models let them write idiomatic Python as soon as they are back at work — provided they practice actively in the following weeks, which is decisive for lasting learning.
Is object-oriented programming covered?
The OOP module (classes, inheritance, operator overloading) is covered in module 5, depending on the group's progress. It is only covered with groups that have solidly absorbed the previous notions — the fundamentals remain the priority.
Is this course a prerequisite for the data science courses?
Yes, this is its natural role. Once the fundamental mechanisms are mastered — shared references, iteration, namespaces — NumPy, Pandas and Polars are learned much faster and the code is better from the first draft.
Is the remote format suitable for this kind of training?
Yes. 90% of participants rate the remote format as equivalent or better than in-person. I have been running remote training since 2020 and have built a solid practice of online teaching. I use Zoom, which makes it possible to record the sessions and share them with participants if desired, and CoCalc, an online platform that gives access to preconfigured servers with all the training material and libraries installed. CoCalc also lets me follow each participant's progress in real time and step in directly to correct or unblock.