A focused, single-page-per-module curriculum site that teaches the math behind modern AI and machine learning. The project is a zero-build, static HTML/CSS/JS site with interactive visuals, guided learning paths, and a consistent design system.
- 9 guided modules that move from linear algebra to matrix factorization.
- Each module is a standalone HTML page with dynamic navigation, exercises, and interactive canvases.
- Shared styling in site.css and shared behavior in clean-language.js.
- No build step, no dependencies, no framework lock-in.
Start from the home page, then study in sequence:
- linear_algebra_ml.html - vectors, matrices, eigen, norms
- calculus_ml.html - derivatives, gradients, chain rule
- OptimizationConcepts.html - gradient descent, learning rate, loss
- ProbabilityTheory.html - probability foundations
- statistics_ml.html - statistics for ML decisions
- information_theory_ml.html - entropy, CE, KL
- geometry_distances_ml.html - distances, cosine, high-dim
- prob_linalg_ml.html - multivariate Gaussian, covariance
- matrix_factorization_ml.html - SVD, PCA, low-rank
The entry point is index.html.
- index.html - Home page, module list, start button
- Module pages (above) - Self-contained content, navigation, and interactivity
- site.css - Global theme, layout, and component styles
- clean-language.js - Theme toggle, sitebar injection, accessibility helpers
- Download or clone the project.
- Start a local server (recommended for consistent behavior):
# Option 1: Python
python -m http.server 8000
# Option 2: Node
npx serve .- Open the site:
You can also open index.html directly from disk, but a local server is more reliable for relative links and localStorage.
Each module page defines a data structure in JavaScript (for example TOPICS or topics) and then renders navigation and content at runtime. This keeps the HTML light and makes it easy to add or reorder chapters without touching the DOM manually.
Shared behavior in clean-language.js includes:
- Theme toggling (light/dark) via localStorage
- Sitebar injection on pages that do not hardcode it
- Accessibility fixes for disclosure widgets
- Cleanup of Bangla text nodes to keep English-only output
If you want bilingual output, remove the script tag that loads clean-language.js from the module pages or edit the script to skip the cleaning step.
-
Open the target module page (for example linear_algebra_ml.html).
-
Find the
TOPICS(ortopics) array near the bottom of the file. -
Each entry contains:
titleand optionalbnorbn_titletagscontentorbodyas an HTML template string
-
Edit the HTML in the
contentstring to update explanations, tables, or exercises. -
Save and refresh the browser.
- Duplicate a module page that is closest in structure.
- Update the
<title>tag and the module header in the JS template. - Update the
NAVlabels andTOPICSarray inside the new file. - Add a new card in the modules grid on index.html.
- Update the hero path map (optional) on index.html to include the new step.
- Verify navigation and progress counters in the new module.
- Global colors, spacing, and typography live in site.css under
:rootvariables. - Theme switching is driven by
data-themeonhtmland the theme toggle button. - Layout components (sitebar, sidebar, cards, callouts) are reusable classes defined once in site.css.
This is a static site. Any static host works:
- Ensure all files are in the root of the site.
- Upload to GitHub Pages, Netlify, Vercel, or any static server.
- Set the root to the folder containing index.html.
- JavaScript is required for navigation, progress tracking, and interactive visualizations.
- Interactive sections use
<canvas>and need a modern browser. - There are no build tools or package dependencies.