davidrosenberg/mlcourse: the DS-GA 1003 course repository as a self-study text
Machine learning course materials.
At a glance
- What is it?
- This is the lecture, note and homework repository for David Rosenberg's DS-GA 1003 Machine Learning and Computational Statistics course at NYU, published as a gh-pages site. It is a well-structured reading path for someone who already knows linear algebra and probability, and a poor fit for anyone looking for runnable model code.
- Who is it for?
- Adopt this if you want a mathematically explicit treatment of regularisation, duality, kernels and Bayesian methods, and you are willing to read the lecture PDFs in the order the repository presents them. Do not adopt it if you need a library, a training script or a reproducible benchmark; the repository is course material, not a toolkit, and the README lists no installation step.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 83 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 DS-GA 1003 repository actually contains
The repository is the source for a course website, not a software project. Its default branch is gh-pages, which is the branch GitHub Pages serves directly, and the homepage field points at davidrosenberg.github.io/ml2018. The README is a changelog of the course across several offerings: 2015, 2016, 2017, 2017FOML (hosted at bloomberg.github.io/foml), and 2018. Each entry links to a lecture PDF, a note PDF, or a homework PDF. The primary language is listed as Jupyter Notebook, and the changelog mentions at least one notebook, created to regenerate lasso and elastic net plots from Hastie's book. Nothing in the supplied material describes a package, a CLI, or an importable module.
The audience is stated implicitly by the content. The 2017FOML revision added lectures on Black Box ML and on evaluating classifier performance because that version had no ML prerequisites. The 2018 revision added a note on conditional expectations because, in the author's words, many students find the notation confusing. A note on the correlated features theorem for elastic net is described as a translation of Zou and Hastie's 2005 paper into the notation of the class. These are the moves of a course that expects mathematical maturity and supplies the missing pieces itself.
The teaching mechanism: reorder the maths, then cut the notation
The changelog is unusually explicit about pedagogical decisions, and those decisions are the substance of the repository. Three stand out.
First, the representer theorem is moved well before any mention of kernels and framed as a consequence of linear algebra: the solution lies in the subspace spanned by the data, so the optimisation can be constrained to that subspace. The kernel methods lecture was then rewritten to reduce references to the feature map, on the argument that feature map notation is unneeded when the point is kernelisation.
Second, the SVM treatment was compressed. The full derivation of the SVM dual was replaced by a lecture that states the dual formulation and works through the complementary slackness conditions, with emphasis on sparsity in the data. A one hour crash course in Lagrangian duality became a ten minute summary, which the README says was never presented and was left as optional reading. The geometric derivation of SVMs and all mention of hard-margin SVM were dropped.
Third, the elastic net lecture was extended with a case against sparsity, placed alongside the existing slide arguing for it. That pairing, an argument and its counterargument in the same deck, is the clearest signal of what the material is for.
The pattern is consistent: reduce derivation volume, keep the interpretive claims, and make the reader supply the algebra. Whether that works depends on the reader. Someone who wants to see the SVM dual derived line by line will not find it here any more.
Getting the material onto your machine
The supplied material contains no installation instructions, no dependency file, and no build command. What it does establish is the serving model: the default branch is gh-pages and the homepage is https://davidrosenberg.github.io/ml2018, so the published artefacts are the rendered site. The practical route to the content is to read the PDFs at their published URLs, which the README gives in full, for example https://davidrosenberg.github.io/mlcourse/Notes/svm-retraining-with-support-vectors.pdf and https://davidrosenberg.github.io/mlcourse/Notes/logistic-regression-moment-matching.pdf.
If you want the source files, the only thing the material supports saying is that the content lives on the gh-pages branch, so a clone would need that branch checked out. Beyond that, the repository layout is not described in the supplied text, and I will not guess at directory names. The one notebook mentioned in the changelog was created to regenerate lasso and elastic net plots from Hastie's book; the README does not state where it lives or what it depends on.
There is no configuration surface to document. No config keys, no environment variables, no package name. Treat any tutorial that presents this repository as something you install as unreliable.
Where the material is thin or dated
The changelog stops at 2018. The last push timestamp is 2026, but the README's own narrative ends with the 2018 revision, and the notable changes are all framed as differences against 2018, 2017, 2016 and 2015 offerings. A reader cannot tell from the supplied material whether lectures were added after 2018 or whether the site has simply been maintained.
The topic list is also narrow by current standards. Nothing in the supplied material mentions deep learning frameworks, transformer architectures, or any training infrastructure. Backpropagation appears as a module and as Homework #7, which is the closest the material comes to modern neural network practice. Gradient boosting appears through a worked example on predicting Poisson distributions and through AdaBoost as a special case of forward stagewise additive modelling with exponential loss. If your interest is applied deep learning, this is not the source.
One more gap: the README references an in-prep note on Thompson sampling for Bernoulli bandits under a path containing in-prep. That directory name suggests unfinished material, and the README gives no indication of its status.
How it compares with a textbook-first route
The obvious alternative is to read the primary sources the course itself cites: Hastie, Tibshirani and Friedman's Elements of Statistical Learning, or the Zou and Hastie 2005 elastic net paper that the course note translates. The difference in approach is real. A textbook presents one authorial voice across all topics and keeps derivations intact. This repository makes the opposite trade: it drops derivations (the SVM dual, the geometric SVM construction, most of the AdaBoost lecture) and substitutes curated notes that fix notation and connect topics.
The elastic net note is the clearest case. The README describes it as a translation of Zou and Hastie into the class notation, dropping an unnecessary centering condition and using a more standard definition of correlation. That is a genuine editorial act, and it is the kind of thing a textbook cannot do for you, because a textbook is written for everyone and this is written for one course's notation. The cost is coverage: what the course decided to cut, you do not get.
A second alternative is a university course with a live instructor and graded feedback. The repository ships the homework PDFs (hw2, hw5, hw7 are named in the changelog) but no solutions and no autograder. Self-study means self-grading.
Maintenance, licensing and what the repository does not tell you
There are no releases. The README is the only changelog, and it is organised by course year rather than by version. For a reader, this means there is no stable snapshot to cite: the content you read today is whatever is on gh-pages, and the historical versions are reachable only through the archive links the README provides, such as the Archive/2018/Lectures and Archive/2017/Lectures paths.
The licence is listed as unknown. The repository metadata does not name one, and the README does not mention one. That matters if you intend to reuse slides or problem sets in your own teaching. I cannot tell you what is permitted, and this is not legal advice; the practical step is to check whether a LICENSE file exists on the branch and, if not, to treat reuse as requiring permission from the author.
Upgrade cost is effectively zero because there is nothing to upgrade. The ongoing cost is the opposite: because the material is a snapshot of a course that has been revised repeatedly, you inherit the revision history's gaps. If a topic you need was dropped in 2017 or 2018, the README tells you it was dropped and points at the archive, which is more than most course sites do.
Who should read this and who should close the tab
Read it if you are comfortable with linear algebra, convex optimisation and probability, and you want a treatment of regularisation that argues both sides. The elastic net lecture pairing, the case against sparsity next to the slide on Lasso feature sparsity, is not something you get from a typical tutorial. The note on retraining SVMs with just the support vectors and the moment-matching interpretation of logistic regression are the kind of short, specific write-ups that are hard to find elsewhere in one place.
Close the tab if you want to train a model this afternoon. There is no code to run, no dependency list, and no evaluation harness. The Jupyter Notebook label in the repository metadata refers to a small number of notebooks, one of which regenerates figures from Hastie's book; it does not describe the bulk of the content, which is PDF.
Before you commit a study block, check two things on the published site. First, open the archive index and confirm which year's lectures you are reading, because the 2017 and 2018 versions differ on SVM, AdaBoost and duality coverage. Second, check the licence situation if you plan to reuse anything. The material is a course, and it reads like one: sequenced, opinionated, and incomplete by design.
Editorial conclusion
Adopt this if you want a mathematically explicit treatment of regularisation, duality, kernels and Bayesian methods, and you are willing to read the lecture PDFs in the order the repository presents them. Do not adopt it if you need a library, a training script or a reproducible benchmark; the repository is course material, not a toolkit, and the README lists no installation step. Before committing time, open the archive index on the gh-pages site and confirm the current lecture set matches what you need, because the README shows that topics have been added and removed across 2015, 2016, 2017, 2017FOML and 2018 revisions, and the licence is not stated anywhere in the supplied material.
Community notes