girafe-ai/ml-course: A Semester of ML Lectures, Seminars and Graded Homeworks
Open Machine Learning course
At a glance
- What is it?
- The repository is the first-semester material for the girafe-ai Machine Learning course: lecture slides, seminar notebooks, YouTube recordings and assignment folders. It is a teaching archive with deadlines attached, not a library, and it should be read that way.
- Who is it for?
- Adopt this repository if you want a term-length sequence of ML material with slides, recordings and graded assignments, and you can work with a course whose README, video links and assignment notes are largely in Russian. Skip it if you need an installable package, a supported API or English-only teaching material.
- 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 5 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 this repository is, and what it is not
The README opens with a one-line description: "First semester of girafe-ai Machine Learning course". That is the whole scope. The repository holds a weekly schedule for a taught course, and the schedule is a table with columns for the date, the topic, a lecture video, slides, a warm-up test, a homework link, a deadline and a comments field. Nothing here is packaged for installation. There is no setup.py, no pyproject.toml mentioned in the material, and no published release in the conventional software sense. The three entries under releases (2021_spring, 2020_spring, 2020_fall) are semester snapshots, not versioned artefacts with changelogs. Anyone arriving from a package index expecting an importable module will be disappointed, and the README does nothing to correct that expectation.
The audience is narrower than the topic list suggests. The topics cover computer vision, deep learning, NLP, PyTorch and reinforcement learning, which reads like a general ML curriculum. In practice the material is tied to a specific cohort and a specific calendar: Week01 starts 05.09.2022, Week11 lands on 21.11.2022, and deadlines are given as "23.59 AOE" on named dates. A self-directed learner can ignore the dates, but the assignments and the warm-up tests were written for students who attended the lectures in sequence.
The weekly table is the actual product
Most of the repository's value sits in one markdown table. Each row links to a PDF of slides stored in a week-numbered directory (week0_02_linear_reg/lect002_linear_regression.pdf, week0_04_svm_and_pca/lect004_svm_pca.pdf, and so on), a YouTube recording of the lecture and, where one exists, a separate recording of the seminar. The naming convention is consistent enough that you can guess a path from the topic: the directories are prefixed week0_NN and the slide files carry lectNNN in the name.
The comments column is where the schedule admits its own gaps, and it is worth reading before you plan anything. Week01 notes that the 2022 lecture was not recorded "for technical reasons" and links the 2021 recording instead. Week09 says the lecture was cancelled because the lecturer was ill, and that an extra seminar on backpropagation was held in its place. Week07 replaced the lecture with a test and a review session. Week05 ran a control test instead of a seminar. These are not editorial asides; they change what a self-study reader will actually find when they click through. A row can have a video link that belongs to a different year than the date in the first column.
Assignments, labs and the one optional piece
The homework column points into a homeworks/ directory with names that describe the task rather than the week: assignment0_01_knn, assignment0_02_lin_reg, assignment0_03_svm, assignment0_04_tree, plus a lab01_ml_pipeline. The numbering is offset from the week numbers, so Assignment 01 (kNN) belongs to Week01 and Assignment 02 (linear regression) to Week02, but Lab01 appears in the Week03 row and Assignment 03 (SVM kernel) in Week04. If you are assembling a study plan, read the week column and the homework column together rather than assuming they increment in step.
Assignment 04 is labelled optional in the table and its deadline sits much later than the others, 22.12.2022 against 24.10.2022 for the SVM assignment, which fits the pattern of a stretch task. The task itself is to build a decision tree from scratch, which is a different kind of exercise from the kNN and linear regression assignments. The lab is described only as "ML pipeline" in the README, and the material does not expand on what it contains beyond the folder link, so treat that one as something to inspect in the repository rather than something the README explains.
One structural detail matters for navigation: most homework links in the table point at the 22f_basic branch rather than master, for example the lab01_ml_pipeline and assignment0_03_svm links. The repository also carries a separate 23f_yandex_ml_trainings branch, linked at the top of the README. The default branch is master, but the README's own links frequently leave it, which means a reader who clones only master may not find the exact assignment folder a given row refers to.
Language, dependencies and the reading list
The README is written largely in Russian. Column headers are English, but the comments, the deadline notes and several of the link labels are not, and the linked YSDA ML Book is marked "(Russian only)". The lecture and seminar recordings are titled "Запись лекции" and "Запись семинара". For a non-Russian speaker this is the single largest practical barrier, and the README does not offer a translation or a subtitle note. The two other books on the literature list, Probabilistic Machine Learning and the Deep Learning Book, are available in English, and the README specifically recommends Part I of the latter. So the reading list is partly accessible and the taught material is not.
Prerequisites are not in the README body. It points to a separate prerequisites.md file, and the exam programme lives in approximate_program.pdf. Neither is summarised in the README, so you have to open them to know what background the course assumes. The extra Week on linear algebra recap (week0_00_linear_algebra_recap) is a signal that the course expects students who need that refresher, which suggests the intended entry level is below a specialist maths programme.
The notebooks are Jupyter, and the topics include PyTorch, so a working Python environment with the usual scientific stack plus a deep learning framework is implied. The repository does not state pinned versions anywhere in the supplied material. There is no requirements file mentioned, no environment.yml, no lockfile. For a course that runs on a fixed semester calendar this is normal; for anyone trying to reproduce a notebook two or three years later it is the main source of friction, because PyTorch API changes will not be pinned against the notebook that used them.
Where it stops being the right tool
This is a course archive, and it behaves like one. The schedule is frozen at the autumn 2022 term, with the most recent release tagged 2021_spring and the last push dated 2026-05-04. A recent push date does not mean the autumn 2022 table has been rewritten; the material gives no indication that the weekly content was refreshed, and the video links in several rows still point to 2021 recordings. If you want current best practice in a fast-moving area such as embeddings or sequence models, the Week11 material is a snapshot of what was taught in that term, not a survey of the field now.
There is also no support channel described. No issue template, no discussion link, no contribution guide appears in the README. The contributor list is a credit roll, not a maintenance roster. If a notebook fails to run, the repository offers no documented path to a fix beyond the materials themselves. That is a reasonable design for a course whose students had instructors and a chat, and a poor one for a stranger working alone.
Finally, the assessment structure is embedded in the content. Warm-up tests, control tests, deadlines and an exam programme are part of the repository, and they are meaningless outside the cohort. A reader who wants the explanations without the grading apparatus has to filter the table by hand.
How it compares with a maintained course repository
The closest comparison is a course repository that is actively maintained across terms, such as the fast.ai course materials. The difference is not quality of teaching; it is what the repository is for. A maintained course repository tends to ship a single canonical set of notebooks per course version, with the current term's material on the default branch and older terms moved to tags or archived branches, so a reader can clone once and know what they are getting. Here the situation is inverted: master is the default, but the README's own links frequently point at 22f_basic, and a third branch, 23f_yandex_ml_trainings, is advertised at the top. There is no statement in the supplied material about which branch is current or how the branches relate.
That has a concrete consequence. With a maintained course you can follow a link and land in the same tree every time. With this repository you may land on master for the schedule and on 22f_basic for the assignment, and the two may not agree. It is a small thing until you are three weeks into a study plan and the notebook you need is on a branch you did not clone.
The other difference is language policy. Repositories aimed at a global audience keep instructions in English and translate or subtitle recordings. This one keeps instructions in Russian and links an English reading list alongside it, which is a coherent choice for its original students and an awkward one for everyone else.
Maintenance cost, licence and what to check first
If you fork this for your own teaching, the maintenance burden is mostly link rot and environment drift. The YouTube links, the PDF paths and the branch references all have to be checked before each term, and the README already shows what happens when they are not: a row can point at a 2021 recording under a 2022 date, and a slide cell can be empty. Pinning PyTorch and the scientific stack per notebook is the other recurring job, and the material gives no template for it.
The licence is MIT, which is permissive and permits reuse and modification provided the copyright notice and permission notice are retained. That covers the code and notebooks in the repository. It does not automatically cover the linked third-party material: the YouTube recordings, the YSDA ML Book, the Probabilistic Machine Learning book and the Deep Learning Book are separate works with their own terms, and the MIT header on this repository says nothing about them. If you plan to redistribute the slides or re-host the videos, check those terms separately. This is a description of the licence text, not legal advice.
Before investing a term's worth of time, do three things. Open prerequisites.md and approximate_program.pdf to confirm the entry level matches yours. Clone the branch that the specific assignment row points at, not just master, since the lab and SVM links reference 22f_basic. And click through the video column for the weeks you care about, because the comments field already flags at least three weeks where the recording is missing, replaced or from a different year.
Editorial conclusion
Adopt this repository if you want a term-length sequence of ML material with slides, recordings and graded assignments, and you can work with a course whose README, video links and assignment notes are largely in Russian. Skip it if you need an installable package, a supported API or English-only teaching material. Before committing time, open the homeworks folder for the semester branch you intend to follow (22f_basic is the branch referenced by most of the README links), check that the assignment you want is not the optional tree-from-scratch one, and confirm the video links still resolve, since several rows in the schedule point to recordings from earlier years.
Community notes