Open-source project
Ceyron/machine-learning-and-simulation avatar
Ceyron/machine-learning-and-simulation

Ceyron/machine-learning-and-simulation: video notes and code for ML, FEM and CFD

All the handwritten notes 📝 and source code files 🖥️ used in my YouTube Videos on Machine Learning & Simulation (https://www.youtube.com/channel/UCh0P7KwJhuQ4vrzc3IRuw4Q)

1,202 stars224 forksJupyter NotebookMIT

At a glance

What is it?
A companion repository for a YouTube channel on machine learning and simulation, holding handwritten notes, Jupyter notebooks and C, Python and Julia source. It is a course archive rather than an installable library, and the README says as much.
Who is it for?
Adopt this repository if you already follow the channel and want the notes and source files next to the videos, or if you want to read a C implementation of a sparse matrix format alongside a Python or Julia one. Do not adopt it if you need a maintained dependency, a versioned API or a test suite that tells you whether an example still produces the documented result.
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 117 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 September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What the repository is, and what it is not

The README opens with a single sentence of scope: this is where the material for the YouTube channel lives. The topics list is a channel index, not a package description. Math Basics, Essential probability density and mass functions, Probabilistic Machine Learning, Miscellaneous Computer Science Topics, Sparse Matrices, Continuum Mechanics, Automatic Differentiation, Adjoints and Sensitivities, a Fenics tutorial, simulations implemented in Python or Julia, automatic differentiation primitive rules, and a Scientific Python workshop. Two German series are listed as well: Tensor Analysis and Gewöhnliche Differentialgleichungen. The README notes that most videos are in English and that some content is offered in German, with the handwritten notes placed in the folders accordingly. That sentence is the closest thing to a guide to the directory layout, and it means the top-level structure is organised by language and topic rather than by module. If you arrive expecting an importable package with a version number you can pin, you will not find one. The repository is a set of artefacts that accompany spoken explanations, and the explanations are not in the repository.

The problem it solves for a viewer who wants the files

Video is a poor medium for a derivation you want to check line by line. A lecture that walks through the maximum likelihood estimate of a multivariate Gaussian, or the primitive rules behind reverse-mode automatic differentiation, moves at the pace of the speaker. The repository exists so that the same derivation can be paused, copied and edited. The README points to a separate repository for the Scientific Python workshop, which tells you the author treats each course as its own artefact rather than accumulating everything in one place. The audience is narrow and identifiable: people who are working through the playlists and want the notes and the code side by side. The topics list also shows what is planned rather than finished. Ordinary and partial differential equations, the linear and nonlinear finite element method, control theory, computational fluid dynamics, floating point error analysis, interpolation and quadrature, eigenvalue computation, parallel programming with PThread, OpenMP, MPI and CUDA, and Markov chain Monte Carlo are all listed under what the author intends to cover in the long run. Treat the planned list as a statement of direction, not as an inventory.

How the material is laid out across languages

The primary language is Jupyter Notebook, and the topic list confirms where the notebooks sit: the probabilistic machine learning series, the Fenics tutorial, and the simulations implemented in Python or Julia. The sparse matrices series is described as covering different ways to implement sparse matrix formats, with every format including an implementation in the C programming language. The automatic differentiation and adjoint series is described as accompanied by implementations in Python and Julia. A separate playlist covers calling libraries in C from other languages such as Julia or Python. So a single topic can span three languages, and the repository does not present a unified interface across them. That is a deliberate choice given the subject matter: comparing a compressed sparse row layout in C against the same layout in a high-level language is the point of the exercise. It also means there is no shared build system to learn. The practical consequence is that you navigate by folder and by video, and the language of the file tells you what toolchain you need. Nothing in the README describes a top-level runner, a Makefile, or a project file that ties the folders together.

Getting the files and reading them

There is no installation procedure in the README, because there is nothing to install. The workflow is to clone the repository and open the folder that matches the video you are watching. The commands below are the standard ones for the hosting platform and for the notebook format, not instructions copied from the README, which does not give any:

git clone https://github.com/Ceyron/machine-learning-and-simulation.git cd machine-learning-and-simulation jupyter lab

The README does give one concrete pointer for the Python side of the collection: the Scientific Python workshop has its own repository at github.com/Ceyron/scientific-python-course. If your interest is the Python tooling rather than the mathematics, that is the repository the README directs you to. For the C files in the sparse matrix series you will need a C compiler, and for the Julia files a Julia installation, but the README does not state versions or dependencies for either, so check the file you are about to compile before assuming it builds. The README also carries a Zenodo DOI badge, 10.5281/zenodo.12793323, which means the collection has been deposited and can be cited. The only release listed is v0.0.1, dated July 2024 and described as the July 2024 state. That naming is honest about what a release means here: a snapshot, not a supported version.

Where the repository stops being the right tool

The material is tied to videos, and the README does not describe any mechanism that keeps a notebook in step with a library version. A Fenics tutorial written against one release of the finite element library can fail on another, and nothing in the repository as described would flag that. The same applies to the Julia and Python automatic differentiation examples: the primitive rules are stable mathematics, but the code that demonstrates them depends on whatever the author had installed on the day of recording. There is no test suite mentioned, no continuous integration, and no changelog beyond the single v0.0.1 snapshot. A second limitation is coverage. The README lists far more planned topics than finished ones, so a reader who arrives looking for the finite element method, control theory or uncertainty quantification will find them under what the author intends to cover rather than under what is available. A third is language. If you do not read German, the Tensor Analysis and ordinary differential equations series are out of reach, and the README is explicit that only some content is offered in German. None of these are defects in a course archive. They become defects the moment you treat the repository as a dependency.

Compared with a textbook or a maintained library

The closest alternative for the mathematics is a textbook on numerical methods or probabilistic machine learning. A textbook is edited, reviewed and indexed, and it does not depend on a video being online. What it cannot do is let you run the derivation. The repository's advantage is that the notes and the code sit next to each other, so you can change a parameter in a simulation and watch what happens, which is exactly what the simulations series is built around. The closest alternative for the code is a maintained library: a sparse matrix library, a finite element framework, or an automatic differentiation package. Those come with versioned releases, tests and issue trackers. The difference in approach is stark. A library hides the implementation behind an interface so that you can depend on it. This repository exposes the implementation so that you can read it. That makes it a poor substitute for a dependency and a good substitute for a chapter you did not fully follow. The two are not in competition, and the README's framing as channel material is consistent with that.

Licence, citation and the cost of keeping up

The repository is MIT licensed. That is permissive: you can reuse the notes and source in your own work provided the licence terms are met, and the repository does not impose a copyleft obligation on derivative work. This is a description of the licence identifier, not legal advice, and if you plan to redistribute the material inside a commercial product you should read the licence text yourself. The Zenodo DOI gives you a citable identifier for the collection, which matters if you are referencing the derivations in written work. Maintenance cost is the part to think about before you build on it. The only release is a July 2024 snapshot, and the last push recorded is May 2026, so the repository is active but not versioned in a way you can pin against. Upgrading means pulling the branch and re-reading whatever changed, because there is no changelog to tell you what moved. For a course archive that is a reasonable arrangement. For anything you intend to run in a pipeline, it is not.

Editorial conclusion

Adopt this repository if you already follow the channel and want the notes and source files next to the videos, or if you want to read a C implementation of a sparse matrix format alongside a Python or Julia one. Do not adopt it if you need a maintained dependency, a versioned API or a test suite that tells you whether an example still produces the documented result. Before relying on any folder, open the notebook or source file you intend to use, check which language it is written in, and confirm that the video it belongs to is still listed on the channel, because the README describes the collection as material for those videos and nothing else.

Official sources

  1. Ceyron/machine-learning-and-simulation on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
Community notes

Community notes