One requirements file pins two deep learning stacks, both from mid-2024
All the handwritten notes 📝 and source code files 🖥️ used in my YouTube Videos on Machine Learning & Simulation (https://www.youtube.com/channel/UCh0P7KwJhuQ4vrzc3IRuw4Q)
At a glance
- What is it?
- The notes and source files behind a video channel on machine learning and simulation, split into English and German folders and archived with a DOI. Its single release is labelled as a July 2024 snapshot, its roadmap lists automatic differentiation three times, and one root requirements file serves both language folders with sixteen exact pins from the same era.
- Who is it for?
- Use this the way its author uses it: as a set of worked derivations and reference implementations that happen to have a video attached, not as a library. The parts that will still be current in a year are the derivations and the sparse matrix and autodiff implementations, because mathematics ages better than dependencies.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 136 days ago.
- What is it written in?
- Mainly Jupyter Notebook, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 4, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The only release is labelled as a snapshot from two years ago
There is one release in this repository, and its title is more informative than its number.
The version is zero point zero point one. The release name is not a feature summary but a description of a moment: a named month and year, presented as a state of the repository rather than as a version of the material.
That release is from July 2024. The last commit to the repository is from May 2026, roughly four months before this was written, and the gap between them is close to two years of notes and code that no tag describes.
The naming is not a complaint about the practice. A notes repository that changes when a video is corrected should not pretend to have versions, and a zero-patch-numbered release labelled with a date says exactly what it is. But it does mean there is nothing to compare against.
The paired decision is the archiving. There is a DOI badge at the top of the readme pointing at a general-purpose archive, and a citation file at the repository root. Together with a funding file, that is the setup of an artefact someone intends to be cited and preserved, not a scratchpad. The snapshot tag is the matching move on the version side.
So the repository has two audiences, and the release history only serves one of them.
Two deep learning stacks and a silencer in one file
The requirements file has sixteen entries and every one is pinned to an exact version. The interesting part is not the pinning, it is what is in it.
There are two complete deep learning stacks. One is a TensorFlow release, accompanied by its own compatibility layer for the version of the high-level API that release ships with, plus the probability library built on top of it. The other is a JAX release with its compiled library, plus a standalone version of the high-level API.
Having both in one environment is a legitimate choice for teaching material that covers both. What is notable is the third entry: a small package whose entire purpose is silencing one of the two frameworks' start-up output.
Nobody installs a silencer by accident. Its presence says that the two stacks interfere on start-up often enough that someone wrote a package to make the noise go away, and put it in the shared file so that every notebook stops printing the warning.
The rest of the file is a scientific stack: array maths, a numerical library, plotting in two libraries plus a colormap package, a progress bar, and a web framework for serving things. That last one is the second surprise after the silencer. A web application framework in the requirements of a notebooks-and-notes repository means at least some of the material is presented as a running page rather than read as a notebook.
One small inconsistency while counting: the scikit-learn entry is spelled with underscores while everything else uses hyphens. Package indexes normalise it, so it installs, but it is the one line that does not match its neighbours.
Every pin is from the same mid-2024 window
Sixteen exact pins, and they are not spread across time. The array library, the numerical library, the plotting library, the machine learning library, the interactive plotting library and the web framework are all mid-2024 releases. So are the two deep learning stacks and the progress bar.
That was the state of the ecosystem when the single release was tagged, and it is still the state the file declares, four months after the repository's most recent commit.
The consequence depends on what you do with it. For reproducing the notebooks as they were written, exact pins are exactly right, and this file does that job well. For running any of the notebooks today on a current interpreter, a mid-2024 scientific stack is a constraint rather than a convenience, and one of the two deep learning stacks in particular has a newer major release that the compatibility layer in this file exists to bridge.
The placement is the other half of the problem. The file sits at the repository root, and the repository has two top-level content folders, one per language. So the German tensor analysis notes and the English fluid simulation notebooks install the same sixteen packages, and the majority of them are irrelevant to both.
A per-folder requirements file, or two extras in one manifest, would let a reader install the four packages a given notebook needs instead of a frozen copy of an entire scientific stack.
The roadmap lists automatic differentiation three times
The readme separates what exists from what is planned, and the planned section is worth reading as an artefact rather than as a to-do list.
It is grouped into five areas. Basics has three items. Modelling and simulation has eleven. Numerical analysis has six. Parallel and high-performance computing has six. Machine learning has five.
The Basics group is where the overlap shows. Its three items are tensor calculus, automatic differentiation, and more on probability distributions.
Automatic differentiation already has two delivered playlists in the current section: one on adjoints and sensitivities through computer codes, and one on the primitive rules that modern autodiff engines implement in forward and reverse mode. So the planned item names a topic that is covered twice.
The third Basics item, more probability distributions, has a delivered playlist too, on density and mass functions with their estimators, priors and moments.
The same pattern shows up elsewhere. A finite element library tutorial exists, and the modelling group still lists both the linear and the nonlinear finite element method as planned. Whether that means the tutorial covered neither, or covered one and the author forgot, is not stated.
The honest reading is that the planned list was written as a subject inventory rather than as a gap analysis, and has been updated by adding to the top section rather than by reconciling the two. The readme does invite pull requests pointing out something that is wrong or could be explained better, which is the mechanism that would fix it.
Eleven English playlists and two German ones
The current catalogue is thirteen playlists, each topic heading carrying an emoji marker.
The English set starts with maths that the author says is usually not taught in engineering courses but matters for this work: constrained optimization, tricks in linear algebra, functionals and functional derivatives. Then the standard probability material, with discrete mass functions and continuous densities including the multivariate case, their maximum likelihood estimates, priors, posteriors and moments. Then probabilistic machine learning from graphical models through the expectation maximisation algorithm and variational inference to variational autoencoders, adversarial networks and topic models.
After that the material widens sharply. A miscellaneous computing series, whose stated example is calling a compiled library from another language. A sparse matrix series, where the description makes two commitments: several storage formats, and an implementation in the C language for every one of them, motivated by the large sparse systems that appear in finite element and fluid problems. Continuum mechanics, framed as the structural and fluid fundamentals needed to derive numerical schemes. Automatic differentiation and adjoints, covering explicit graphs, implicit systems, and ordinary and partial differential equations, with implementations in two languages. A finite element library tutorial mixing practical and theoretical episodes. A from-scratch simulation series the author calls their favourite, spanning fluid, structural and electrodynamic problems. Autodiff primitive rules for four named engines. And a three-day scientific Python workshop recording.
The German set is two: tensor analysis with a focus on visualisation, and ordinary differential equations from variable separation through Runge-Kutta to stability and convergence.
Two languages, four directories' worth of intent, and one shared dependency file is the shape of the whole repository.
The contribution paragraph stops mid-word
The last section of the readme invites contributions, and it ends mid-word.
What survives is enough to read the intent: pull requests are welcome, and two specific reasons are given. Extend one of the author's source files into a more advanced example, or point out something that is wrong or could have been explained better.
Those are the right two asks for a teaching repository. The first asks for depth rather than breadth, which keeps a small repository from sprawling. The second is an invitation to treat the material as wrong sometimes, which is the thing that makes a reference implementation worth trusting.
The sentence then breaks off during the word for pull request, and nothing after it appears. So whatever followed, whether it was a branch policy, a code of conduct, a note about tests or a licence reminder, is not in this copy.
It is a small truncation and it costs almost nothing, since the two asks that matter are complete. But it is the third place in this file where the end of a section is cut off rather than finished, and in a repository whose value is that it is finished, that is a pattern worth noting.
The readme also carries a note about project ideas of the author's own, which is the kind of thing that makes a good pull request easier to aim.
Eight entries, two content folders, and a channel link at the top
The repository tree is unusually short for its size, and that is worth describing precisely.
Eight entries: a gitignore, a citation file, a funding file, a licence file, the readme, a requirements file, and two directories holding the content, one named for each language.
There is no build configuration, no continuous integration file, no test directory, no container recipe and no contribution guide beyond the paragraph that got truncated.
That last point is the one that matters most for a repository full of source code. Nothing in the tree checks that the notebooks still run, and nothing records which library versions the notebooks were last known to work with beyond the single root requirements file. The absence of tests is defensible for notes whose correctness is in the derivation, but the absence of any executable check means a library release that breaks a notebook produces no signal here.
The readme itself is a channel link and an explanation of what is where, and it makes one structural statement worth repeating: the notes are in the folders, respectively, by language. That is the whole navigation model. There is no index of notebooks, no table of contents beyond the playlist links, and no mapping between a playlist and the folder that holds its notes.
For a repository this large, that index is the single most useful thing missing, and it is exactly the kind of file a pull request could add.
Editorial conclusion
Use this the way its author uses it: as a set of worked derivations and reference implementations that happen to have a video attached, not as a library. The parts that will still be current in a year are the derivations and the sparse matrix and autodiff implementations, because mathematics ages better than dependencies. Two things to know before you run anything. The root requirements file pins an entire scientific stack to mid-2024 releases and installs two deep learning frameworks at once, with a compatibility shim and a silencer, so an environment built from it today is a reproduction of that moment rather than of the notebooks' current state. And the material is split by language at the folder level, so the German tensor analysis notes and the English fluid simulation notebooks share one dependency set that neither of them needs in full.
Frequently asked questions
What is the machine-learning-and-simulation repository?
The hand-written notes, notebooks and source files behind a YouTube channel covering machine learning and simulation. Content is split into two top-level folders by language, with eleven English playlists and two German ones, and the whole repository is archived with a DOI and carries a citation file at its root.
What topics does the machine-learning-and-simulation channel cover?
Constrained optimization and functionals, probability distributions and their estimators, probabilistic machine learning from graphical models through variational inference to generative models, calling compiled libraries from other languages, sparse matrix formats with a C implementation of each, continuum mechanics for numerical schemes, automatic differentiation and adjoints through computer codes, a finite element library tutorial, from-scratch simulations in two languages, autodiff primitive rules for four named engines, and a scientific Python workshop.
What does the machine-learning-and-simulation requirements file pin?
Sixteen exact versions, including two deep learning frameworks installed at once, one with a compatibility layer for its high-level API and a separate package whose purpose is silencing the other. All the pins are mid-2024 releases, and the single file sits at the repository root so both the English and the German notebooks install the same stack.
Is there a tagged release for this repository?
One, version 0.0.1, and it is named after a month and year rather than a version of the material. It was published in July 2024, roughly two years before the most recent commit, so it describes a snapshot of the repository rather than a release of the current notes.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/ceyron-machine-learning-and-simulation)