Open-source project
jeffheaton/app_deep_learning avatar
jeffheaton/app_deep_learning

jeffheaton/app_deep_learning: a PyTorch course repository, not a library

T81-558: PyTorch - Applications of Deep Neural Networks, Washington University in St. Louis

498 stars183 forksJupyter NotebookApache-2.0

At a glance

What is it?
T81-558 is a Washington University in St. Louis course whose public repository is a sequence of Jupyter notebooks plus assignment templates. It is useful if you want a taught path through PyTorch, and the wrong download if you want an installable package.
Who is it for?
Adopt this repository if you want a structured, taught sequence through PyTorch that moves from tensors to CNNs, time series, and a Kaggle competition, and if you accept that the material is scheduled around a university term. Do not adopt it if you need a pip-installable library, a stable API, or a CI-backed test suite; nothing in the repository description suggests any of those.
Can I use it commercially?
Yes. Apache-2.0 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 15 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 T81-558 actually is, and who it is built for

The repository is the public face of a graduate course, T81-558: Applications of Deep Neural Networks, taught by Jeff Heaton at Washington University in St. Louis. The description line names the course code, the topic, and the institution. The README opens with the instructor name and the Fall 2026 section meeting time and room, which tells you the intended audience: enrolled students, plus anyone following along remotely.

The problem it solves is sequencing. PyTorch documentation explains each API in isolation, and a search for a CNN tutorial returns a hundred unrelated notebooks. This repository instead fixes an order. Module 1 covers neural network basics and generative AI framing. Module 2 covers numeric processing with PyTorch, feature vectors, sequences versus classes, and a notebook titled Beyond the CPU. Module 3 handles tabular data with pandas. Module 4 covers persistence, early stopping, K-fold cross-validation, training schedules, and dropout. Modules 5 through 8 move into computer vision, time series, model structure, and a Kaggle competition.

That order is the product. If you already know which PyTorch pieces you need, the sequence adds less than the individual notebooks do. If you do not, the order is the reason to use it.

The mechanism: numbered notebooks, one topic each, plus assignment templates

There is no package to install and no importable module. The repository is a flat set of Jupyter notebooks at the top level, with filenames that encode module and lesson position: t81_558_class_02_1_pytorch_numerical.ipynb, t81_558_class_02_2_pytorch_neural.ipynb, t81_558_class_02_3_feature_encode.ipynb, and so on through the modules. The naming scheme is regular enough that you can predict the path of a lesson from the syllabus table alone.

Assignments live in a separate assignments directory. The README links them with a placeholder in the filename, for example ./assignments/assignment_yourname_t81_558_class1.ipynb. The yourname token is meant to be replaced by the student, which is a small but telling detail: the repository assumes a human editing a copy, not a program importing a module.

The data flow is therefore manual. You open a notebook, execute cells in order, and the notebook pulls whatever dataset or library it needs at that point. The syllabus documents the schedule and due dates in a PDF hosted on S3, linked from the README, rather than in a machine-readable file inside the repository. That means the authoritative ordering lives in two places: the README table and the external PDF. They can drift.

Running a lesson: Jupyter, PyTorch, and the hardware question

The README does not give a single install command, so the practical path is the standard one for a notebook repository: clone it, create an environment with PyTorch and Jupyter, and open the notebook for the lesson you want. The repository itself supplies no requirements.txt or environment.yml according to the material provided here, which is a real gap for anyone outside the course. You will be resolving dependencies per notebook.

The one infrastructure topic the syllabus names explicitly is hardware. Module 2 lesson 5 is titled Beyond the CPU, and the course description states that high-performance computing aspects demonstrate running deep learning on GPUs and grids. So the course does address acceleration, but as a lesson rather than as a repository-level configuration. There is no documented device flag, no launcher script, and no cluster config in the material supplied.

For a self-directed reader the consequence is straightforward: expect to spend the first hour on environment setup that the repository does not do for you. That is normal for teaching material and worth knowing before you start.

Where the repository stops being the right tool

The clearest limitation is the absence of a stable interface. Notebooks are edited between terms. The README currently shows a Fall 2026 schedule with meeting dates in August through October, while the most recent release is tagged pre_summer_2026 and dated April 2026. A tag named for a season is a snapshot of teaching material, not a compatibility promise. If you build anything on top of these notebooks, pin the commit you used, because the main branch is expected to move with the academic calendar.

A second limitation is scope discipline. The course description states plainly that the focus is primarily on application, with some introduction to the mathematical foundations. If you want derivations, backpropagation by hand, or optimizer theory, this is the wrong resource and the README does not pretend otherwise.

A third is the assignment scaffolding. The yourname placeholder and the per-module due dates mean the repository is shaped around a term. Self-study readers get the lessons but none of the grading loop, and the Kaggle competition mentioned in the objectives is a course activity rather than something the repository automates.

Alternatives, and the difference that matters

The obvious comparison is the official PyTorch tutorials. Those are maintained by the framework's own project, organised by task rather than by week, and each tutorial stands alone. The difference in approach is ordering versus reference. A PyTorch tutorial answers how do I do this specific thing; T81-558 answers what should I learn next, and in what order, if I am starting from general programming knowledge. The README even states that Python knowledge is not required beforehand, only familiarity with some programming language, which no framework tutorial assumes.

A second comparison is a book such as a standard deep learning text. Books give depth and a stable artefact you can cite by edition. This repository gives runnable notebooks that exercise the current PyTorch API, which books age out of. The trade is currency against stability, and the release tag here shows which side this project sits on.

A third comparison is a university course on a platform like Coursera. The difference is access: the notebooks are in this repository under Apache-2.0, so you can read and reuse them without enrolling. What you cannot get without enrolling is the schedule, the grading, and the instructor.

Licence and what it means for reuse

The repository is Apache-2.0. That permits commercial and non-commercial reuse, modification, and redistribution, subject to the conditions in the licence text, which include retaining the licence and notices and stating changes. It does not grant trademark rights, so the Washington University in St. Louis name and the course code are not part of what you may reuse freely. This is a description of the licence, not legal advice; read the LICENSE file in the repository and the Apache-2.0 text itself before you redistribute anything.

One practical point follows from the licence plus the repository shape. Because the material is notebooks rather than a library, reuse usually means copying cells into your own project. That is permitted, but the copied code carries no version guarantee, and the notebooks are written for teaching clarity rather than for production defaults. Treat anything you lift as a starting point you will rewrite.

Maintenance cost and what to check before you commit to it

The repository is not archived, and the last push in the supplied metadata is September 2026. The single recent release is tagged pre_summer_2026. That pattern, one seasonal tag plus ongoing pushes, suggests the material is refreshed per term rather than maintained continuously against PyTorch releases. If you follow it across a term boundary, expect a diff.

For an individual learner the maintenance cost is low: re-clone or pull, and re-run the notebook you care about. For a team considering this as internal training material, the cost is higher, because you inherit the dependency drift of every notebook you adopt and the repository does not provide a pinned environment to absorb it.

What to verify first is concrete. Open the syllabus PDF linked from the README and compare its module list with the notebook filenames on main; the README table is the Fall 2026 schedule and the tag is pre_summer_2026, so the two may not describe the same set of lessons. Then open one notebook from the module you actually need, Module 3 for tabular work or Module 6 for time series, and confirm the imports resolve in your environment before you plan around the rest.

Editorial conclusion

Adopt this repository if you want a structured, taught sequence through PyTorch that moves from tensors to CNNs, time series, and a Kaggle competition, and if you accept that the material is scheduled around a university term. Do not adopt it if you need a pip-installable library, a stable API, or a CI-backed test suite; nothing in the repository description suggests any of those. Before you rely on it, open the current syllabus PDF linked from the README and check the module list against the notebook filenames on the main branch, because the README shows the Fall 2026 schedule while the release tag is named pre_summer_2026.

Official sources

  1. jeffheaton/app_deep_learning on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes