Parallel Computing
A new course on high-performance computing in Julia, aimed at third-year ENSAI students who are comfortable in Python but new to Julia. The guiding idea: speed doesn’t come from a “magic” language but from understanding what the machine actually does — cost per operation, data movement, and sharing. Python is the familiar point of comparison; Julia is the test bench.
This course is being developed and has not been taught yet. The materials linked below are early drafts and will evolve.
A single red thread runs through the course — estimating π by Monte-Carlo — carried from a plain sequential loop, to multithreading, to the GPU.
Modules
@code_warntype, @btime; Python bytecode via dis.
singledispatch. A language module — no parallelism yet.
@threads, race conditions, and Python's GIL (threads vs processes). Monte-Carlo π, multithreaded.
Approach
Each module pairs a common Python track (zero-install, in Jupyter/Colab — so nobody falls behind) with an optional Julia deep-dive (@btime, @threads, the GPU). The teaching engine is comparing the numbers between the two: a Python loop at ~1 s next to a Julia loop in milliseconds makes the cost of abstraction concrete. Slides frame each session; the Pluto notebooks are live, executable demos.