mirror of
https://github.com/rohitg00/ai-engineering-from-scratch.git
synced 2026-10-02 01:54:39 +08:00
1219 lines
152 KiB
HTML
1219 lines
152 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" data-theme="light">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Lesson Catalog - AI Engineering from Scratch</title>
|
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' fill='%23fafaf5'/><rect x='2' y='2' width='28' height='28' fill='none' stroke='%233553ff' stroke-width='1.2'/><text x='6' y='22' font-size='14' font-family='monospace' fill='%233553ff'>AI</text></svg>">
|
|
<meta name="description" content="Full catalog of AI engineering lessons. Search, filter, and sort every lesson across all 20 phases.">
|
|
<link rel="canonical" href="https://aiengineeringfromscratch.com/catalog.html">
|
|
<meta property="og:title" content="Catalog · AI Engineering from Scratch">
|
|
<meta property="og:description" content="Search and filter the full curriculum across 20 phases. Python, TypeScript, Rust, Julia.">
|
|
<meta property="og:image" content="https://aiengineeringfromscratch.com/og-image.png?v=4">
|
|
<meta property="og:url" content="https://aiengineeringfromscratch.com/catalog.html">
|
|
<meta property="og:type" content="website">
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="Catalog · AI Engineering from Scratch">
|
|
<meta name="twitter:description" content="Search and filter the full curriculum across 20 phases.">
|
|
<meta name="twitter:image" content="https://aiengineeringfromscratch.com/og-image.png?v=4">
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=VT323&family=Source+Serif+4:ital,opsz,wght@0,8..60,400..700;1,8..60,400..700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="style.css?v=20260824a">
|
|
<style>
|
|
.catalog-page {
|
|
padding: 100px 0 80px;
|
|
min-height: 100vh;
|
|
}
|
|
|
|
.catalog-header {
|
|
text-align: left;
|
|
margin-bottom: 32px;
|
|
}
|
|
|
|
.catalog-header h1 {
|
|
font-size: clamp(2rem, 5vw, 3rem);
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.catalog-header p {
|
|
color: var(--text-muted);
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.catalog-controls {
|
|
display: flex;
|
|
gap: 12px;
|
|
margin-bottom: 24px;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
}
|
|
|
|
.catalog-search {
|
|
flex: 1;
|
|
min-width: 200px;
|
|
font-family: var(--font-body);
|
|
font-size: 1rem;
|
|
padding: 12px 16px;
|
|
background: var(--bg-surface);
|
|
border: 2px solid var(--border);
|
|
border-radius: 0;
|
|
color: var(--text);
|
|
outline: none;
|
|
transition: border-color 0.2s;
|
|
}
|
|
|
|
.catalog-search::placeholder {
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.catalog-search:focus {
|
|
border-color: var(--accent);
|
|
}
|
|
|
|
.catalog-search:focus-visible,
|
|
.catalog-filter:focus-visible {
|
|
outline: 2px solid var(--blueprint);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.catalog-filter {
|
|
font-family: var(--font-body);
|
|
font-size: 1rem;
|
|
padding: 12px 16px;
|
|
background: var(--bg-surface);
|
|
border: 2px solid var(--border);
|
|
border-radius: 0;
|
|
color: var(--text);
|
|
outline: none;
|
|
cursor: pointer;
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
}
|
|
|
|
.catalog-count {
|
|
font-family: var(--font-mono);
|
|
font-size: 0.85rem;
|
|
color: var(--text-muted);
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.catalog-table-wrap {
|
|
overflow-x: auto;
|
|
border: 2px solid var(--border);
|
|
border-radius: 0;
|
|
background: var(--bg-surface);
|
|
}
|
|
|
|
.catalog-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
font-size: 0.95rem;
|
|
min-width: 640px;
|
|
}
|
|
|
|
.catalog-table th {
|
|
font-family: var(--font-heading);
|
|
font-weight: 700;
|
|
font-size: 0.9rem;
|
|
text-align: left;
|
|
padding: 14px 16px;
|
|
border-bottom: 2px solid var(--border);
|
|
color: var(--text-muted);
|
|
cursor: pointer;
|
|
user-select: none;
|
|
white-space: nowrap;
|
|
transition: color 0.2s;
|
|
}
|
|
|
|
.catalog-table th:hover {
|
|
color: var(--accent);
|
|
}
|
|
|
|
.catalog-table th:focus-visible {
|
|
color: var(--accent);
|
|
outline: 2px solid var(--blueprint);
|
|
outline-offset: -4px;
|
|
}
|
|
|
|
.catalog-table th .sort-arrow {
|
|
font-size: 0.7rem;
|
|
margin-left: 4px;
|
|
}
|
|
|
|
.catalog-table td {
|
|
padding: 10px 16px;
|
|
border-bottom: 1px solid var(--border);
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.catalog-table tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.catalog-table tr:hover td {
|
|
background: var(--bg-surface-hover);
|
|
}
|
|
|
|
.catalog-group-row th {
|
|
padding: 10px 16px;
|
|
border-bottom: 1px solid var(--border);
|
|
background: var(--blueprint-tint);
|
|
color: var(--ink);
|
|
cursor: default;
|
|
font-family: var(--font-mono);
|
|
font-size: 0.72rem;
|
|
font-weight: 500;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.catalog-group-row th:hover {
|
|
color: var(--ink);
|
|
}
|
|
|
|
.catalog-group-count {
|
|
margin-left: 10px;
|
|
color: var(--ink-mute);
|
|
}
|
|
|
|
.catalog-table a {
|
|
color: var(--secondary);
|
|
}
|
|
|
|
.catalog-table a:hover {
|
|
color: var(--accent);
|
|
}
|
|
|
|
.catalog-status-dot {
|
|
display: inline-block;
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
margin-right: 6px;
|
|
}
|
|
|
|
.catalog-status-dot.complete {
|
|
background: var(--complete);
|
|
}
|
|
|
|
.catalog-status-dot.planned {
|
|
background: var(--planned);
|
|
}
|
|
|
|
.catalog-lang {
|
|
font-family: var(--font-mono);
|
|
font-size: 0.8rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.catalog-phase-label {
|
|
font-family: var(--font-mono);
|
|
font-size: 0.8rem;
|
|
color: var(--accent);
|
|
}
|
|
|
|
.catalog-empty {
|
|
text-align: center;
|
|
padding: 48px 24px;
|
|
color: var(--text-muted);
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.catalog-progressive-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
margin-top: 16px;
|
|
padding-top: 16px;
|
|
border-top: 1px solid var(--rule-soft);
|
|
}
|
|
|
|
.catalog-progressive-note {
|
|
color: var(--ink-mute);
|
|
font-family: var(--font-mono);
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
.catalog-progressive-buttons {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.catalog-progressive-button {
|
|
min-height: 42px;
|
|
padding: 8px 12px;
|
|
border: 1px solid var(--blueprint);
|
|
background: var(--bg);
|
|
color: var(--blueprint);
|
|
cursor: pointer;
|
|
font-family: var(--font-mono);
|
|
font-size: 0.72rem;
|
|
letter-spacing: 0.04em;
|
|
transition: background-color 150ms ease, color 150ms ease, transform 150ms var(--ease-out);
|
|
}
|
|
|
|
.catalog-progressive-button:hover,
|
|
.catalog-progressive-button:focus-visible {
|
|
background: var(--blueprint);
|
|
color: var(--bg);
|
|
}
|
|
|
|
.catalog-progressive-button:active { transform: scale(0.97); }
|
|
|
|
.catalog-progressive-button:focus-visible {
|
|
outline: 2px solid var(--blueprint);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.catalog-noscript {
|
|
margin-bottom: 18px;
|
|
padding: 16px;
|
|
border: 1px solid var(--blueprint);
|
|
background: var(--blueprint-tint);
|
|
color: var(--ink);
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.catalog-page {
|
|
padding: 80px 0 48px;
|
|
}
|
|
|
|
.catalog-controls {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.catalog-filter {
|
|
width: 100%;
|
|
}
|
|
|
|
.catalog-table {
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
.catalog-table th,
|
|
.catalog-table td {
|
|
padding: 8px 10px;
|
|
}
|
|
|
|
.catalog-progressive-actions {
|
|
align-items: stretch;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.catalog-progressive-buttons {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<a href="#main" class="skip-link">Skip to content</a>
|
|
|
|
<header class="site-header">
|
|
<div class="header-inner">
|
|
<a href="index.html" class="logo">
|
|
<span class="logo-icon" aria-hidden="true"></span> AI / FROM SCRATCH
|
|
</a>
|
|
<nav class="header-nav">
|
|
<a href="index.html#contents">Contents</a>
|
|
<a href="catalog.html">Catalog</a>
|
|
<a href="prereqs.html">Roadmap</a>
|
|
<a href="glossary.html">Glossary</a>
|
|
<a href="about.html">About</a>
|
|
<a href="https://github.com/rohitg00/ai-engineering-from-scratch" target="_blank" rel="noopener" class="header-github">
|
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.4 3-.405 1.02.005 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>
|
|
<svg class="star-icon" width="12" height="12" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279L12 19.896l-7.416 3.517 1.48-8.279L0 9.306l8.332-1.151z"/></svg>
|
|
<span class="star-count" data-loading="true" aria-label="GitHub stars">…</span>
|
|
</a>
|
|
</nav>
|
|
<button class="search-toggle" type="button" data-cmd-palette
|
|
aria-label="Search (⌘K)" title="Search (⌘K)">
|
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none"
|
|
stroke="currentColor" stroke-width="2.5"
|
|
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
<circle cx="11" cy="11" r="8"/>
|
|
<line x1="21" y1="21" x2="16.65" y2="16.65"/>
|
|
</svg>
|
|
</button>
|
|
<button class="theme-toggle" id="themeToggle" aria-label="Toggle theme" type="button">
|
|
<span class="theme-icon" id="themeIcon">N</span>
|
|
</button>
|
|
</div>
|
|
</header>
|
|
|
|
<main class="catalog-page" id="main">
|
|
<div class="container">
|
|
<div class="catalog-header">
|
|
<h1>Lesson Catalog</h1>
|
|
<p>Every lesson across all 20 phases. Search, filter, sort.</p>
|
|
</div>
|
|
<div class="catalog-controls">
|
|
<input type="text" class="catalog-search" id="catalogSearch" placeholder="Search lessons..." aria-label="Search lessons">
|
|
<select class="catalog-filter" id="catalogPhase" aria-label="Filter by phase">
|
|
<option value="">All Phases</option>
|
|
</select>
|
|
<select class="catalog-filter" id="catalogStatus" aria-label="Filter by lesson status">
|
|
<option value="">All Status</option>
|
|
<option value="complete">Complete</option>
|
|
<option value="planned">Planned</option>
|
|
</select>
|
|
</div>
|
|
<div class="catalog-count" id="catalogCount" role="status" aria-live="polite" tabindex="-1">Loading lesson index...</div>
|
|
<noscript>
|
|
<div class="catalog-noscript">JavaScript is needed for local filtering. Every lesson remains available in the <a href="https://github.com/rohitg00/ai-engineering-from-scratch#contents">GitHub curriculum index</a>.</div>
|
|
</noscript>
|
|
<div class="catalog-table-wrap" id="catalogTableWrap" aria-busy="true">
|
|
<table class="catalog-table" id="catalogTable">
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" data-sort="phase" tabindex="0" aria-sort="ascending">Phase <span class="sort-arrow" aria-hidden="true"> ▲</span></th>
|
|
<th scope="col" data-sort="name" tabindex="0" aria-sort="none">Lesson <span class="sort-arrow" aria-hidden="true"></span></th>
|
|
<th scope="col" data-sort="type" tabindex="0" aria-sort="none">Type <span class="sort-arrow" aria-hidden="true"></span></th>
|
|
<th scope="col" data-sort="lang" tabindex="0" aria-sort="none">Language <span class="sort-arrow" aria-hidden="true"></span></th>
|
|
<th scope="col" data-sort="status" tabindex="0" aria-sort="none">Status <span class="sort-arrow" aria-hidden="true"></span></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="catalogBody">
|
|
<!-- GENERATED:LESSON-DISCOVERY:START -->
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F01-dev-environment">Dev Environment</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F02-git-and-collaboration">Git & Collaboration</a></td><td>Learn</td><td>—</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F03-gpu-setup-and-cloud">GPU Setup & Cloud</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F04-apis-and-keys">APIs & Keys</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F05-jupyter-notebooks">Jupyter Notebooks</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F06-python-environments">Python Environments</a></td><td>Build</td><td>Shell</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F07-docker-for-ai">Docker for AI</a></td><td>Build</td><td>Docker</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F08-editor-setup">Editor Setup</a></td><td>Build</td><td>—</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F09-data-management">Data Management</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F10-terminal-and-shell">Terminal & Shell</a></td><td>Learn</td><td>—</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F11-linux-for-ai">Linux for AI</a></td><td>Learn</td><td>—</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>00</td><td><a href="lesson?path=phases%2F00-setup-and-tooling%2F12-debugging-and-profiling">Debugging and Profiling</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F01-linear-algebra-intuition">Linear Algebra Intuition</a></td><td>Learn</td><td>Python, Julia</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F02-vectors-matrices-operations">Vectors, Matrices & Operations</a></td><td>Build</td><td>Python, Julia</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F03-matrix-transformations">Matrix Transformations</a></td><td>Build</td><td>Python, Julia</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F04-calculus-for-ml">Calculus for Machine Learning</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F05-chain-rule-and-autodiff">Chain Rule & Automatic Differentiation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F06-probability-and-distributions">Probability and Distributions</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F07-bayes-theorem">Bayes' Theorem</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F08-optimization">Optimization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F09-information-theory">Information Theory</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F10-dimensionality-reduction">Dimensionality Reduction</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F11-singular-value-decomposition">Singular Value Decomposition</a></td><td>Build</td><td>Python, Julia</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F12-tensor-operations">Tensor Operations</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F13-numerical-stability">Numerical Stability</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F14-norms-and-distances">Norms and Distances</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F15-statistics-for-ml">Statistics for Machine Learning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F16-sampling-methods">Sampling Methods</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F17-linear-systems">Linear Systems</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F18-convex-optimization">Convex Optimization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F19-complex-numbers">Complex Numbers for AI</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F20-fourier-transform">The Fourier Transform</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F21-graph-theory">Graph Theory for Machine Learning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>01</td><td><a href="lesson?path=phases%2F01-math-foundations%2F22-stochastic-processes">Stochastic Processes</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F01-what-is-machine-learning">What Is Machine Learning</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F02-linear-regression">Linear Regression</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F03-logistic-regression">Logistic Regression</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F04-decision-trees">Decision Trees and Random Forests</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F05-support-vector-machines">Support Vector Machines</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F06-knn-and-distances">K-Nearest Neighbors and Distances</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F07-unsupervised-learning">Unsupervised Learning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F08-feature-engineering">Feature Engineering & Selection</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F09-model-evaluation">Model Evaluation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F10-bias-variance">Bias-Variance Tradeoff</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F11-ensemble-methods">Ensemble Methods</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F12-hyperparameter-tuning">Hyperparameter Tuning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F13-ml-pipelines">ML Pipelines</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F14-naive-bayes">Naive Bayes</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F15-time-series">Time Series Fundamentals</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F16-anomaly-detection">Anomaly Detection</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F17-imbalanced-data">Handling Imbalanced Data</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>02</td><td><a href="lesson?path=phases%2F02-ml-fundamentals%2F18-feature-selection">Feature Selection</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F01-the-perceptron">The Perceptron</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F02-multi-layer-networks">Multi-Layer Networks and Forward Pass</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F03-backpropagation">Backpropagation from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F04-activation-functions">Activation Functions</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F05-loss-functions">Loss Functions</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F06-optimizers">Optimizers</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F07-regularization">Regularization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F08-weight-initialization">Weight Initialization and Training Stability</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F09-learning-rate-schedules">Learning Rate Schedules and Warmup</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F10-mini-framework">Build Your Own Mini Framework</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F11-intro-to-pytorch">Introduction to PyTorch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F12-intro-to-jax">Introduction to JAX</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>03</td><td><a href="lesson?path=phases%2F03-deep-learning-core%2F13-debugging-neural-networks">Debugging Neural Networks</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F01-image-fundamentals">Image Fundamentals — Pixels, Channels, Color Spaces</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F02-convolutions-from-scratch">Convolutions from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F03-cnns-lenet-to-resnet">CNNs — LeNet to ResNet</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F04-image-classification">Image Classification</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F05-transfer-learning">Transfer Learning & Fine-Tuning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F06-object-detection-yolo">Object Detection — YOLO from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F07-semantic-segmentation-unet">Semantic Segmentation — U-Net</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F08-instance-segmentation-mask-rcnn">Instance Segmentation — Mask R-CNN</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F09-image-generation-gans">Image Generation — GANs</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F10-image-generation-diffusion">Image Generation — Diffusion Models</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F11-stable-diffusion">Stable Diffusion — Architecture & Fine-Tuning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F12-video-understanding">Video Understanding — Temporal Modeling</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F13-3d-vision-nerf">3D Vision — Point Clouds & NeRFs</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F14-vision-transformers">Vision Transformers (ViT)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F15-real-time-edge">Real-Time Vision — Edge Deployment</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F16-vision-pipeline-capstone">Build a Complete Vision Pipeline — Capstone</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F17-self-supervised-vision">Self-Supervised Vision — SimCLR, DINO, MAE</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F18-open-vocab-clip">Open-Vocabulary Vision — CLIP</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F19-ocr-document-understanding">OCR & Document Understanding</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F20-image-retrieval-metric">Image Retrieval & Metric Learning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F21-keypoint-pose">Keypoint Detection & Pose Estimation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F22-3d-gaussian-splatting">3D Gaussian Splatting from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F23-diffusion-transformers-rectified-flow">Diffusion Transformers & Rectified Flow</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F24-sam3-open-vocab-segmentation">SAM 3 & Open-Vocabulary Segmentation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F25-vision-language-models">Vision-Language Models — The ViT-MLP-LLM Pattern</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F26-monocular-depth">Monocular Depth & Geometry Estimation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F27-multi-object-tracking">Multi-Object Tracking & Video Memory</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>04</td><td><a href="lesson?path=phases%2F04-computer-vision%2F28-world-models-video-diffusion">World Models & Video Diffusion</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F01-text-processing">Text Processing — Tokenization, Stemming, Lemmatization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F02-bag-of-words-tfidf">Bag of Words, TF-IDF, and Text Representation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F03-word-embeddings-word2vec">Word Embeddings — Word2Vec from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F04-glove-fasttext-subword">GloVe, FastText, and Subword Embeddings</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F05-sentiment-analysis">Sentiment Analysis</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F06-named-entity-recognition">Named Entity Recognition</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F07-pos-tagging-parsing">POS Tagging and Syntactic Parsing</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F08-cnns-rnns-for-text">CNNs and RNNs for Text</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F09-sequence-to-sequence">Sequence-to-Sequence Models</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F10-attention-mechanism">Attention Mechanism — The Breakthrough</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F11-machine-translation">Machine Translation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F12-text-summarization">Text Summarization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F13-question-answering">Question Answering Systems</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F14-information-retrieval-search">Information Retrieval and Search</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F15-topic-modeling">Topic Modeling — LDA and BERTopic</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F16-text-generation-pre-transformer">Text Generation Before Transformers — N-gram Language Models</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F17-chatbots-rule-to-neural">Chatbots — Rule-Based to Neural to LLM Agents</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F18-multilingual-nlp">Multilingual NLP</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F19-subword-tokenization">Subword Tokenization — BPE, WordPiece, Unigram, SentencePiece</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F20-structured-outputs-constrained-decoding">Structured Outputs & Constrained Decoding</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F21-nli-textual-entailment">Natural Language Inference — Textual Entailment</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F22-embedding-models-deep-dive">Embedding Models — The 2026 Deep Dive</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F23-chunking-strategies-rag">Chunking Strategies for RAG</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F24-coreference-resolution">Coreference Resolution</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F25-entity-linking">Entity Linking & Disambiguation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F26-relation-extraction-kg">Relation Extraction & Knowledge Graph Construction</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F27-llm-evaluation-frameworks">LLM Evaluation — RAGAS, DeepEval, G-Eval</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F28-long-context-evaluation">Long-Context Evaluation — NIAH, RULER, LongBench, MRCR</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>05</td><td><a href="lesson?path=phases%2F05-nlp-foundations-to-advanced%2F29-dialogue-state-tracking">Dialogue State Tracking</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F01-audio-fundamentals">Audio Fundamentals — Waveforms, Sampling, Fourier Transform</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F02-spectrograms-mel-features">Spectrograms, Mel Scale & Audio Features</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F03-audio-classification">Audio Classification — From k-NN on MFCCs to AST and BEATs</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F04-speech-recognition-asr">Speech Recognition (ASR) — CTC, RNN-T, Attention</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F05-whisper-architecture-finetuning">Whisper — Architecture & Fine-Tuning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F06-speaker-recognition-verification">Speaker Recognition & Verification</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F07-text-to-speech">Text-to-Speech (TTS) — From Tacotron to F5 and Kokoro</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F08-voice-cloning-conversion">Voice Cloning & Voice Conversion</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F09-music-generation">Music Generation — MusicGen, Stable Audio, Suno, and the Licensing Earthquake</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F10-audio-language-models">Audio-Language Models — Qwen2.5-Omni, Audio Flamingo, GPT-4o Audio</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F11-real-time-audio-processing">Real-Time Audio Processing</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F12-voice-assistant-pipeline">Build a Voice Assistant Pipeline — The Phase 6 Capstone</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F13-neural-audio-codecs">Neural Audio Codecs — EnCodec, SNAC, Mimi, DAC and the Semantic-Acoustic Split</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F14-voice-activity-detection-turn-taking">Voice Activity Detection & Turn-Taking — Silero, Cobra, and the Flush Trick</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F15-streaming-speech-to-speech-moshi-hibiki">Streaming Speech-to-Speech — Moshi, Hibiki, and Full-Duplex Dialogue</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F16-anti-spoofing-audio-watermarking">Voice Anti-Spoofing & Audio Watermarking — ASVspoof 5, AudioSeal, WaveVerify</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>06</td><td><a href="lesson?path=phases%2F06-speech-and-audio%2F17-audio-evaluation-metrics">Audio Evaluation — WER, MOS, UTMOS, MMAU, FAD, and the Open Leaderboards</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F01-why-transformers">Why Transformers — The Problems with RNNs</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F02-self-attention-from-scratch">Self-Attention from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F03-multi-head-attention">Multi-Head Attention</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F04-positional-encoding">Positional Encoding — Sinusoidal, RoPE, ALiBi</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F05-full-transformer">The Full Transformer — Encoder + Decoder</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F06-bert-masked-language-modeling">BERT — Masked Language Modeling</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F07-gpt-causal-language-modeling">GPT — Causal Language Modeling</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F08-t5-bart-encoder-decoder">T5, BART — Encoder-Decoder Models</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F09-vision-transformers">Vision Transformers (ViT)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F10-audio-transformers-whisper">Audio Transformers — Whisper Architecture</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F11-mixture-of-experts">Mixture of Experts (MoE)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F12-kv-cache-flash-attention">KV Cache, Flash Attention & Inference Optimization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F13-scaling-laws">Scaling Laws</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F14-build-a-transformer-capstone">Build a Transformer from Scratch — The Capstone</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F15-attention-variants">Attention Variants — Sliding Window, Sparse, Differential</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>07</td><td><a href="lesson?path=phases%2F07-transformers-deep-dive%2F16-speculative-decoding">Speculative Decoding — Draft, Verify, Repeat</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F01-generative-models-taxonomy-history">Generative Models — Taxonomy & History</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F02-autoencoders-vae">Autoencoders & Variational Autoencoders (VAE)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F03-gans-generator-discriminator">GANs — Generator vs Discriminator</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F04-conditional-gans-pix2pix">Conditional GANs & Pix2Pix</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F05-stylegan">StyleGAN</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F06-diffusion-ddpm-from-scratch">Diffusion Models — DDPM from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F07-latent-diffusion-stable-diffusion">Latent Diffusion & Stable Diffusion</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F08-controlnet-lora-conditioning">ControlNet, LoRA & Conditioning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F09-inpainting-outpainting-editing">Inpainting, Outpainting & Image Editing</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F10-video-generation">Video Generation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F11-audio-generation">Audio Generation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F12-3d-generation">3D Generation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F13-flow-matching-rectified-flows">Flow Matching & Rectified Flows</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F14-evaluation-fid-clip-score">Evaluation — FID, CLIP Score, Human Preference</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>08</td><td><a href="lesson?path=phases%2F08-generative-ai%2F19-visual-autoregressive-var">Visual Autoregressive Modeling (VAR): Next-Scale Prediction</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F01-mdps-states-actions-rewards">MDPs, States, Actions & Rewards</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F02-dynamic-programming">Dynamic Programming — Policy Iteration & Value Iteration</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F03-monte-carlo-methods">Monte Carlo Methods — Learning from Complete Episodes</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F04-q-learning-sarsa">Temporal Difference — Q-Learning & SARSA</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F05-dqn">Deep Q-Networks (DQN)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F06-policy-gradients-reinforce">Policy Gradient — REINFORCE from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F07-actor-critic-a2c-a3c">Actor-Critic — A2C and A3C</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F08-ppo">Proximal Policy Optimization (PPO)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F09-reward-modeling-rlhf">Reward Modeling & RLHF</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F10-multi-agent-rl">Multi-Agent RL</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F11-sim-to-real-transfer">Sim-to-Real Transfer</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>09</td><td><a href="lesson?path=phases%2F09-reinforcement-learning%2F12-rl-for-games">RL for Games — AlphaZero, MuZero, and the LLM-Reasoning Era</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F01-tokenizers">Tokenizers: BPE, WordPiece, SentencePiece</a></td><td>Build</td><td>Python, Rust</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F02-building-a-tokenizer">Building a Tokenizer from Scratch</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F03-data-pipelines">Data Pipelines for Pre-Training</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F04-pre-training-mini-gpt">Pre-Training a Mini GPT (124M Parameters)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F05-scaling-distributed">Scaling: Distributed Training, FSDP, DeepSpeed</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F06-instruction-tuning-sft">Instruction Tuning (SFT)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F07-rlhf">RLHF: Reward Model + PPO</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F08-dpo">DPO: Direct Preference Optimization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F09-constitutional-ai-self-improvement">Constitutional AI and Self-Improvement</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F10-evaluation">Evaluation: Benchmarks, Evals, LM Harness</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F11-quantization">Quantization: Making Models Fit</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F12-inference-optimization">Inference Optimization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F13-building-complete-llm-pipeline">Building a Complete LLM Pipeline</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F14-open-models-architecture-walkthroughs">Open Models: Architecture Walkthroughs</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F15-speculative-decoding-eagle3">Speculative Decoding and EAGLE-3</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F16-differential-attention-v2">Differential Attention (V2)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F17-native-sparse-attention">Native Sparse Attention (DeepSeek NSA)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F18-multi-token-prediction">Multi-Token Prediction (MTP)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F19-dualpipe-parallelism">DualPipe Parallelism</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F20-deepseek-v3-walkthrough">DeepSeek-V3 Architecture Walkthrough</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F21-jamba-hybrid-ssm-transformer">Jamba — Hybrid SSM-Transformer</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F22-async-hogwild-inference">Async and Hogwild! Inference</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F25-speculative-decoding">Speculative Decoding and EAGLE</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>10</td><td><a href="lesson?path=phases%2F10-llms-from-scratch%2F34-gradient-checkpointing">Gradient Checkpointing and Activation Recomputation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F01-prompt-engineering">Prompt Engineering: Techniques & Patterns</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F02-few-shot-cot">Few-Shot, Chain-of-Thought, Tree-of-Thought</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F03-structured-outputs">Structured Outputs: JSON, Schema Validation, Constrained Decoding</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F04-embeddings">Embeddings & Vector Representations</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F05-context-engineering">Context Engineering: Windows, Budgets, Memory, and Retrieval</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F06-rag">RAG (Retrieval-Augmented Generation)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F07-advanced-rag">Advanced RAG (Chunking, Reranking, Hybrid Search)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F08-fine-tuning-lora">Fine-Tuning with LoRA & QLoRA</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F09-function-calling">Function Calling & Tool Use</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F10-evaluation">Evaluation & Testing LLM Applications</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F11-caching-cost">Caching, Rate Limiting & Cost Optimization</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F12-guardrails">Guardrails, Safety & Content Filtering</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F13-production-app">Building a Production LLM Application</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F14-model-context-protocol">Model Context Protocol (MCP)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F15-prompt-caching">Prompt Caching and Context Caching</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F16-langgraph-state-machines">Agent State Machines — Graphs, Nodes, Checkpoints</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>11</td><td><a href="lesson?path=phases%2F11-llm-engineering%2F17-agent-framework-tradeoffs">Agent Framework Tradeoffs — Graph, Role, and Actor Orchestration</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F01-vision-transformer-patch-tokens">Vision Transformers and the Patch-Token Primitive</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F02-clip-contrastive-pretraining">CLIP and Contrastive Vision-Language Pretraining</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F03-blip2-qformer-bridge">From CLIP to BLIP-2 — Q-Former as Modality Bridge</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F04-flamingo-gated-cross-attention">Flamingo and Gated Cross-Attention for Few-Shot VLMs</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F05-llava-visual-instruction-tuning">LLaVA and Visual Instruction Tuning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F06-any-resolution-patch-n-pack">Any-Resolution Vision: Patch-n'-Pack and NaFlex</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F07-open-weight-vlm-recipes">Open-Weight VLM Recipes: What Actually Matters</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F08-llava-onevision-single-multi-video">LLaVA-OneVision: Single-Image, Multi-Image, Video in One Model</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F09-qwen-vl-family-dynamic-fps">Qwen-VL Family and Dynamic-FPS Video</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F10-internvl3-native-multimodal">InternVL3: Native Multimodal Pretraining</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F11-chameleon-early-fusion-tokens">Chameleon and Early-Fusion Token-Only Multimodal Models</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F12-emu3-next-token-for-generation">Emu3: Next-Token Prediction for Image and Video Generation</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F13-transfusion-autoregressive-diffusion">Transfusion: Autoregressive Text + Diffusion Image in One Transformer</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F14-show-o-discrete-diffusion-unified">Show-o and Discrete-Diffusion Unified Models</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F15-janus-pro-decoupled-encoders">Janus-Pro: Decoupled Encoders for Unified Multimodal Models</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F16-mio-any-to-any-streaming">MIO and Any-to-Any Streaming Multimodal Models</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F17-video-language-temporal-grounding">Video-Language Models: Temporal Tokens and Grounding</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F18-long-video-million-token">Long-Video Understanding at Million-Token Context</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F19-audio-language-whisper-to-af3">Audio-Language Models: the Whisper to Audio Flamingo 3 Arc</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F20-omni-models-thinker-talker">Omni Models: Qwen2.5-Omni and the Thinker-Talker Split</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F21-embodied-vlas-openvla-pi0-groot">Embodied VLAs: RT-2, OpenVLA, π0, GR00T</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F22-document-diagram-understanding">Document and Diagram Understanding</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F23-colpali-vision-native-rag">ColPali and Vision-Native Document RAG</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F24-multimodal-rag-cross-modal">Multimodal RAG and Cross-Modal Retrieval</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>12</td><td><a href="lesson?path=phases%2F12-multimodal-ai%2F25-multimodal-agents-computer-use">Multimodal Agents and Computer-Use (Capstone)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F01-the-tool-interface">The Tool Interface — Why Agents Need Structured I/O</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F02-function-calling-deep-dive">Function Calling Deep Dive — OpenAI, Anthropic, Gemini</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F03-parallel-and-streaming-tool-calls">Parallel Tool Calls and Streaming with Tools</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F04-structured-output">Structured Output — JSON Schema, Pydantic, Zod, Constrained Decoding</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F05-tool-schema-design">Tool Schema Design — Naming, Descriptions, Parameter Constraints</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F06-mcp-fundamentals">MCP Fundamentals: Stateless Requests and JSON-RPC</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F07-building-an-mcp-server">Building an MCP Server: Stateless Python and TypeScript</a></td><td>Build</td><td>Python, TypeScript</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F08-building-an-mcp-client">Building an MCP Client: Discovery, Routing, and Dual-Era Fallback</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F09-mcp-transports">MCP Transports: stdio and Stateless Streamable HTTP</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F10-mcp-resources-and-prompts">MCP Resources and Prompts: Addressable Context for Stateless Servers</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F11-mcp-sampling">MCP Model Input: Sampling Migration and Stateless MRTR</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F12-mcp-roots-and-elicitation">Explicit Scope and Stateless Elicitation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F13-mcp-async-tasks">MCP Tasks Extension: Durable Work on a Stateless Core</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F14-mcp-apps">MCP Apps on the Stateless Protocol</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F15-mcp-security-tool-poisoning">MCP Security: Poisoned Metadata, Routing, and MRTR State</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F16-mcp-security-oauth-2-1">MCP Authorization: CIMD, Issuer Binding, PKCE, and Step-Up</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F17-mcp-gateways-and-registries">Stateless MCP Gateways and Registry Admission</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F18-mcp-auth-production">MCP Auth in Production: Issuer-Bound Enrollment and Tokens</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F19-a2a-protocol">A2A — Agent-to-Agent Protocol</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F20-opentelemetry-genai">OpenTelemetry GenAI — Tracing Tool Calls End-to-End</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F21-llm-routing-layer">LLM Routing Layer — LiteLLM, OpenRouter, Portkey</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F22-skills-and-agent-sdks">Agent Skills: Portable Contract and Runtime Boundary</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F23-capstone-tool-ecosystem">Capstone: Stateless Tool Ecosystem</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F24-skill-discovery-and-progressive-disclosure">Skill Discovery and Progressive Disclosure</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F25-skill-invocation-and-routing">Skill Invocation and Routing</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F26-skill-permissions-sandboxes-and-trust">Skill Permissions, Sandboxes, and Trust</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F27-skill-evals-packaging-and-portability">Skill Evals, Packaging, and Portability</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F28-mcp-tool-contracts-and-content">MCP Tool Contracts and Content</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F29-mcp-reliability-cancellation-and-flow-control">MCP Reliability, Cancellation, and Flow Control</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F30-mcp-registry-supply-chain-and-drift">MCP Registry Supply Chain: Admission, Drift, and Rollback</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>13</td><td><a href="lesson?path=phases%2F13-tools-and-protocols%2F31-mcp-conformance-versioning-and-operations">MCP Conformance Engineering: Versioning, Evidence, and Operations</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F01-the-agent-loop">The Agent Loop: Observe, Think, Act</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F02-rewoo-plan-and-execute">ReWOO and Plan-and-Execute: Decoupled Planning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F03-reflexion-verbal-rl">Reflexion: Verbal Reinforcement Learning</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F04-tree-of-thoughts-lats">Tree of Thoughts and LATS: Deliberate Search</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F05-self-refine-and-critic">Self-Refine and CRITIC: Iterative Output Improvement</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F06-tool-use-and-function-calling">Tool Use and Function Calling</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F07-memory-virtual-context-memgpt">Agent Memory — Virtual Context and Memory Paging</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F08-memory-blocks-sleep-time-compute">Memory Blocks and Sleep-Time Compute</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F09-hybrid-memory-mem0">Hybrid Memory: Vector + Graph + KV</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F10-skill-libraries-voyager">Skill Libraries and Lifelong Learning (Voyager)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F11-planning-htn-and-evolutionary">Planning with HTN and Evolutionary Search</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F12-anthropic-workflow-patterns">Anthropic's Workflow Patterns: Simple Over Complex</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F13-langgraph-stateful-graphs">Stateful Graph Orchestration — Durable Execution and Checkpoints</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F14-autogen-actor-model">The Actor Model for Agents — Async Messages and Typed Runtimes</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F15-crewai-role-based-crews">Role-Based Agent Teams — Roles, Tasks, Processes</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F16-openai-agents-sdk">OpenAI Agents SDK: Handoffs, Guardrails, Tracing</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F17-claude-agent-sdk">The Harness as a Library — Subagents and Session Store</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F18-agno-and-mastra-runtimes">Production Agent Runtimes — Fast Instantiation and Typed Workflows</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F19-benchmarks-swebench-gaia">Benchmarks: SWE-bench, GAIA, AgentBench</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F20-benchmarks-webarena-osworld">Benchmarks: WebArena and OSWorld</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F21-computer-use-agents">Computer Use: Claude, OpenAI CUA, Gemini</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F22-voice-agents-pipecat-livekit">Voice Agents: Pipecat and LiveKit</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F23-otel-genai-conventions">OpenTelemetry GenAI Semantic Conventions</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F24-agent-observability-platforms">Agent Observability: Langfuse, Phoenix, Opik</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F25-multi-agent-debate">Multi-Agent Debate and Collaboration</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F26-failure-modes-agentic">Failure Modes: Why Agents Break</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F27-prompt-injection-defense">Prompt Injection and the PVE Defense</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F28-orchestration-patterns">Orchestration Patterns: Supervisor, Swarm, Hierarchical</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F29-production-runtimes">Production Runtimes: Queue, Event, Cron</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F30-eval-driven-agent-development">Eval-Driven Agent Development</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F31-agent-workbench-why-models-fail">Agent Workbench Engineering: Why Capable Models Still Fail</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F32-minimal-agent-workbench">The Minimal Agent Workbench</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F33-instructions-as-executable-constraints">Agent Instructions as Executable Constraints</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F34-repo-memory-and-state">Repo Memory and Durable State</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F35-initialization-scripts">Initialization Scripts for Agents</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F36-scope-contracts">Scope Contracts and Task Boundaries</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F37-runtime-feedback-loops">Runtime Feedback Loops</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F38-verification-gates">Verification Gates</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F39-reviewer-agent">Reviewer Agent: Separate Builder from Marker</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F40-multi-session-handoff">Multi-Session Handoff</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F41-workbench-for-real-repos">The Workbench on a Real Repo</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F42-agent-workbench-capstone">Capstone: Ship a Reusable Agent Workbench Pack</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F43-frame-the-task-before-code">Frame the Task Before the Agent Writes Code</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F44-plan-from-evidence">Build an Evidence-Backed Execution Plan</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F45-delegate-with-isolation">Delegate Agent Work with Isolation and Merge Contracts</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F46-turn-feedback-into-system">Turn Every Agent Correction into a System Improvement</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F47-outcomes-before-output">Define the Outcome Before You Choose the Output</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F48-discover-the-real-workflow">Discover the Workflow People Actually Perform</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F49-map-assumptions-and-risk">Map Assumptions and Resolve the Riskiest One First</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F50-choose-the-smallest-testable-slice">Choose the Smallest Slice That Can Change the Decision</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F51-write-specifications-that-preserve-judgment">Write Specifications That Preserve Judgment</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F52-design-success-metrics">Design Success Metrics Before the Result Exists</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F53-prototype-pilot-or-production">Choose Prototype, Pilot, or Production Deliberately</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>14</td><td><a href="lesson?path=phases%2F14-agent-engineering%2F54-build-the-feedback-ratchet">Build a Feedback Ratchet with Ownership and Retirement</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F01-long-horizon-agents">The Shift from Chatbots to Long-Horizon Agents</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F02-star-family-reasoning">STaR, V-STaR, Quiet-STaR — Self-Taught Reasoning</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F03-alphaevolve-evolutionary-coding">AlphaEvolve — Evolutionary Coding Agents</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F04-darwin-godel-machine">Darwin Godel Machine — Open-Ended Self-Modifying Agents</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F05-ai-scientist-v2">AI Scientist v2 — Workshop-Level Autonomous Research</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F06-automated-alignment-research">Automated Alignment Research (Anthropic AAR)</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F07-recursive-self-improvement">Recursive Self-Improvement — Capability vs Alignment</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F08-bounded-self-improvement">Bounded Self-Improvement Designs</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F09-coding-agent-landscape">The Autonomous Coding Agent Landscape (2026)</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F10-claude-code-permission-modes">Permission Modes for Autonomous Agents</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F11-browser-agents">Browser Agents and Long-Horizon Web Tasks</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F12-durable-execution">Long-Running Background Agents: Durable Execution</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F13-cost-governors">Action Budgets, Iteration Caps, and Cost Governors</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F14-kill-switches-canaries">Kill Switches, Circuit Breakers, and Canary Tokens</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F15-propose-then-commit">Human-in-the-Loop: Propose-Then-Commit</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F16-checkpoints-rollback">Checkpoints and Rollback</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F17-constitutional-ai">Constitutional AI and Rule Overrides</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F18-llama-guard">Llama Guard and Input/Output Classification</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F19-anthropic-rsp">Anthropic Responsible Scaling Policy v3.0</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F20-openai-preparedness-deepmind-fsf">OpenAI Preparedness Framework and DeepMind Frontier Safety Framework</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F21-metr-external-evaluation">METR Time Horizons and External Capability Evaluation</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>15</td><td><a href="lesson?path=phases%2F15-autonomous-systems%2F22-cais-caisi-societal-risk">CAIS, CAISI, and Societal-Scale Risk</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F01-why-multi-agent">Why Multi-Agent?</a></td><td>Learn</td><td>TypeScript</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F02-fipa-acl-heritage">Heritage of FIPA-ACL and Speech Acts</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F03-communication-protocols">Communication Protocols</a></td><td>Build</td><td>TypeScript</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F04-primitive-model">The Multi-Agent Primitive Model</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F05-supervisor-orchestrator-pattern">Supervisor / Orchestrator-Worker Pattern</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F06-hierarchical-architecture">Hierarchical Architecture and Its Failure Mode</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F07-society-of-mind-debate">Society of Mind and Multi-Agent Debate</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F08-role-specialization">Role Specialization — Planner, Critic, Executor, Verifier</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F09-parallel-swarm-networks">Parallel / Swarm / Networked Architectures</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F10-group-chat-speaker-selection">Group Chat and Speaker Selection</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F11-handoffs-and-routines">Handoffs and Routines — Stateless Orchestration</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F12-a2a-protocol">A2A — The Agent-to-Agent Protocol</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F13-shared-memory-blackboard">Shared Memory and Blackboard Patterns</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F14-consensus-and-bft">Consensus and Byzantine Fault Tolerance for Agents</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F15-voting-debate-topology">Voting, Self-Consistency, and Debate Topology</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F16-negotiation-bargaining">Negotiation and Bargaining</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F17-generative-agents-simulation">Generative Agents and Emergent Simulation</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F18-theory-of-mind-coordination">Theory of Mind and Emergent Coordination</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F19-swarm-optimization-pso-aco">Swarm Optimization for LLMs (PSO, ACO)</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F20-marl-maddpg-qmix-mappo">MARL — MADDPG, QMIX, MAPPO</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F21-agent-economies">Agent Economies, Token Incentives, Reputation</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F22-production-scaling-queues-checkpoints">Production Scaling — Queues, Checkpoints, Durability</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F23-failure-modes-mast-groupthink">Failure Modes — MAST, Groupthink, Monoculture, Cascading Errors</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F24-evaluation-coordination-benchmarks">Evaluation and Coordination Benchmarks</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>16</td><td><a href="lesson?path=phases%2F16-multi-agent-and-swarms%2F25-case-studies-2026-sota">Case Studies and the 2026 State of the Art</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F01-managed-llm-platforms">Managed LLM Platforms — Bedrock, Vertex AI, Azure OpenAI</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F02-inference-platform-economics">Inference Platform Economics — Fireworks, Together, Baseten, Modal, Replicate, Anyscale</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F03-gpu-autoscaling-kubernetes">GPU Autoscaling on Kubernetes — Karpenter, KAI Scheduler, Gang Scheduling</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F04-vllm-serving-internals">Serving Engine Internals — PagedAttention, Continuous Batching, Chunked Prefill</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F05-eagle3-speculative-decoding">EAGLE-3 Speculative Decoding in Production</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F06-sglang-radixattention">Prefix-Cache Serving — RadixAttention and KV Reuse</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F07-tensorrt-llm-blackwell">Hardware-Specialized Inference Compilation — FP8 and NVFP4 on Blackwell</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F08-inference-metrics-goodput">Inference Metrics — TTFT, TPOT, ITL, Goodput, P99</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F09-production-quantization">Production Quantization — AWQ, GPTQ, GGUF K-quants, FP8, MXFP4/NVFP4</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F10-cold-start-mitigation">Cold Start Mitigation for Serverless LLMs</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F11-multi-region-kv-locality">Multi-Region LLM Serving and KV Cache Locality</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F12-edge-inference">Edge Inference — Apple Neural Engine, Qualcomm Hexagon, WebGPU/WebLLM, Jetson</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F13-llm-observability">LLM Observability Stack Selection</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F14-prompt-semantic-caching">Prompt Caching and Semantic Caching Economics</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F15-batch-apis">Batch APIs — the 50% Discount as Industry Standard</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F16-model-routing">Model Routing as a Cost-Reduction Primitive</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F17-disaggregated-prefill-decode">Disaggregated Prefill/Decode — NVIDIA Dynamo and llm-d</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F18-vllm-production-stack-lmcache">Production Serving Stack — KV Offloading and Cache-Aware Routing</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F19-ai-gateways">AI Gateways — LiteLLM, Portkey, Kong AI Gateway, Bifrost</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F20-shadow-canary-progressive">Shadow Traffic, Canary Rollout, and Progressive Deployment for LLMs</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F21-ab-testing-llm-features">A/B Testing LLM Features — GrowthBook, Statsig, and the Vibes Problem</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F22-load-testing-llm-apis">Load Testing LLM APIs — Why k6 and Locust Lie</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F23-sre-for-ai">SRE for AI — Multi-Agent Incident Response, Runbooks, Predictive Detection</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F24-chaos-engineering-llm">Chaos Engineering for LLM Production</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F25-security-secrets-audit">Security — Secrets, API Key Rotation, Audit Logs, Guardrails</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F26-compliance-frameworks">Compliance — SOC 2, HIPAA, GDPR, PCI-DSS, EU AI Act, ISO 42001</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F27-finops-llms">FinOps for LLMs — Unit Economics and Multi-Tenant Attribution</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>17</td><td><a href="lesson?path=phases%2F17-infrastructure-and-production%2F28-self-hosted-serving-selection">Self-Hosted Serving Selection — Matching Engine to Hardware and Scale</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F01-instruction-following-alignment-signal">Instruction-Following as Alignment Signal</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F02-reward-hacking-goodhart">Reward Hacking and Goodhart's Law</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F03-direct-preference-optimization-family">The Direct Preference Optimization Family</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F04-sycophancy-rlhf-amplification">Sycophancy as RLHF Amplification</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F05-constitutional-ai-rlaif">Constitutional AI and RLAIF</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F06-mesa-optimization-deceptive-alignment">Mesa-Optimization and Deceptive Alignment</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F07-sleeper-agents-persistent-deception">Sleeper Agents — Persistent Deception</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F08-in-context-scheming-frontier-models">In-Context Scheming in Frontier Models</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F09-alignment-faking">Alignment Faking</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F10-ai-control-subversion">AI Control — Safety Despite Subversion</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F11-scalable-oversight-weak-to-strong">Scalable Oversight and Weak-to-Strong Generalization</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F12-red-teaming-pair-automated-attacks">Red-Teaming: PAIR and Automated Attacks</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F13-many-shot-jailbreaking">Many-Shot Jailbreaking</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F14-ascii-art-visual-jailbreaks">ASCII Art and Visual Jailbreaks</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F15-indirect-prompt-injection">Indirect Prompt Injection — Production Attack Surface</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F16-red-team-tooling-garak-llamaguard-pyrit">Red-Team Tooling — Garak, Llama Guard, PyRIT</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F17-wmdp-dual-use-evaluation">WMDP and Dual-Use Capability Evaluation</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F18-frontier-safety-frameworks-rsp-pf-fsf">Frontier Safety Frameworks — RSP, PF, FSF</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F19-model-welfare-research">Anthropic's Model Welfare Program</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F20-bias-representational-harm">Bias and Representational Harm in LLMs</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F21-fairness-criteria-group-individual-counterfactual">Fairness Criteria — Group, Individual, Counterfactual</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F22-differential-privacy-for-llms">Differential Privacy for LLMs</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F23-watermarking-synthid-stable-signature-c2pa">Watermarking — SynthID, Stable Signature, C2PA</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F24-regulatory-frameworks-eu-us-uk-korea">Regulatory Frameworks — EU, US, UK, Korea</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F25-echoleak-cves-for-ai">EchoLeak and the Emergence of CVEs for AI</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F26-model-system-dataset-cards">Model, System, and Dataset Cards</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F27-data-provenance-training-governance">Data Provenance and Training-Data Governance</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F28-alignment-research-ecosystem">Alignment Research Ecosystem — MATS, Redwood, Apollo, METR</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F29-moderation-systems-openai-perspective-llamaguard">Moderation Systems — OpenAI, Perspective, Llama Guard</a></td><td>Build</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>18</td><td><a href="lesson?path=phases%2F18-ethics-safety-alignment%2F30-dual-use-risk-cyber-bio-chem-nuclear">Dual-Use Risk — Cyber, Bio, Chem, Nuclear Uplift</a></td><td>Learn</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F01-terminal-native-coding-agent">Capstone 01 — Terminal-Native Coding Agent</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F02-rag-over-codebase">Capstone 02 — RAG over Codebase (Cross-Repo Semantic Search)</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F03-realtime-voice-assistant">Capstone 03 — Real-Time Voice Assistant (ASR to LLM to TTS)</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F04-multimodal-document-qa">Capstone 04 — Multimodal Document QA (Vision-First PDF, Tables, Charts)</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F05-autonomous-research-agent">Capstone 05 — Autonomous Research Agent (AI-Scientist Class)</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F06-devops-troubleshooting-agent">Capstone 06 — DevOps Troubleshooting Agent for Kubernetes</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F07-end-to-end-fine-tuning-pipeline">Capstone 07 — End-to-End Fine-Tuning Pipeline (Data to SFT to DPO to Serve)</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F08-production-rag-chatbot">Capstone 08 — Production RAG Chatbot for a Regulated Vertical</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F09-code-migration-agent">Capstone 09 — Code Migration Agent (Repo-Level Language / Runtime Upgrade)</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F10-multi-agent-software-team">Capstone 10 — Multi-Agent Software Engineering Team</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F11-llm-observability-dashboard">Capstone 11 — LLM Observability & Eval Dashboard</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F12-video-understanding-pipeline">Capstone 12 — Video Understanding Pipeline (Scene, QA, Search)</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F13-mcp-server-with-registry">Capstone 13: Stateless MCP Server with Registry and Governance</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F14-speculative-decoding-server">Capstone 14 — Speculative-Decoding Inference Server</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F15-constitutional-safety-harness">Capstone 15 — Constitutional Safety Harness + Red-Team Range</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F16-github-issue-to-pr-agent">Capstone 16 — GitHub Issue-to-PR Autonomous Agent</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F17-personal-ai-tutor">Capstone 17 — Personal AI Tutor (Adaptive, Multimodal, with Memory)</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F20-agent-harness-loop-contract">Agent Harness Loop Contract</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F21-tool-registry-schema-validation">Tool Registry with Schema Validation</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F22-jsonrpc-stdio-transport">JSON-RPC 2.0 Over Newline-Delimited Stdio</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F23-function-call-dispatcher">Function Call Dispatcher</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F24-plan-execute-control-flow">Plan-Execute Control Flow</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F25-verification-gates-observation-budget">Capstone Lesson 25: Verification Gates and the Observation Budget</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F26-sandbox-runner-denylist">Capstone Lesson 26: Sandbox Runner with Denylist and Path Jail</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F27-eval-harness-fixture-tasks">Capstone Lesson 27: Eval Harness with Fixture Tasks</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F28-observability-otel-traces">Capstone Lesson 28: Observability with OTel GenAI Spans and Prometheus Metrics</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F29-end-to-end-coding-task-demo">Capstone Lesson 29: End-to-End Coding Agent on the Harness</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F30-bpe-tokenizer-from-scratch">BPE Tokenizer From Scratch</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F31-tokenized-dataset-sliding-window">Tokenized Dataset with Sliding Window</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F32-token-positional-embeddings">Token and Positional Embeddings</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F33-multihead-self-attention">Multi-Head Self-Attention</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F34-transformer-block">Transformer Block from Scratch</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F35-gpt-model-assembly">GPT Model Assembly</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F36-training-loop-eval">Training Loop and Evaluation</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F37-loading-pretrained-weights">Loading Pretrained Weights</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F38-classifier-finetuning">Capstone Lesson 38: Classifier Fine-Tuning by Head Swap</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F39-instruction-tuning-sft">Capstone Lesson 39: Instruction Tuning by Supervised Fine-Tuning</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F40-dpo-from-scratch">Capstone Lesson 40: Direct Preference Optimization from Scratch</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F41-eval-pipeline">Capstone Lesson 41: Full Evaluation Pipeline</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F42-large-corpus-downloader">Large Corpus Downloader</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F43-hdf5-tokenized-corpus">HDF5 Tokenized Corpus</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F44-cosine-lr-warmup">Cosine LR with Linear Warmup</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F45-gradient-clipping-amp">Gradient Clipping and Mixed Precision</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F46-gradient-accumulation">Gradient Accumulation</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F47-checkpoint-save-resume">Checkpoint Save and Resume</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F48-distributed-fsdp-ddp">Distributed Data Parallel and FSDP from Scratch</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F49-lm-eval-harness">Language Model Evaluation Harness</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F50-hypothesis-generator">Hypothesis Generator</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F51-literature-retrieval">Literature Retrieval</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F52-experiment-runner">Experiment Runner</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F53-result-evaluator">Result Evaluator</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F54-paper-writer">Paper Writer</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F55-critic-loop">Critic Loop</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F56-iteration-scheduler">Iteration Scheduler</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F57-end-to-end-research-demo">End-to-End Research Demo</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F58-vision-encoder-patches">Vision Encoder Patches</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F59-vit-transformer">Vision Transformer Encoder</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F60-projection-layer-modality-align">Projection Layer for Modality Alignment</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F61-cross-attention-fusion">Cross-Attention Fusion</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F62-vision-language-pretraining">Vision-Language Pretraining</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F63-multimodal-eval">Multimodal Evaluation</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F64-chunking-strategies-advanced">Chunking Strategies, Compared</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F65-hybrid-retrieval-bm25-dense">Hybrid Retrieval with BM25 and Dense Embeddings</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F66-reranker-cross-encoder">Cross-Encoder Reranker</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F67-query-rewriting-hyde">Query Rewriting: HyDE, Multi-Query, and Decomposition</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F68-rag-eval-precision-recall">RAG Evaluation: Precision, Recall, MRR, nDCG, Faithfulness, Answer Relevance</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F69-end-to-end-rag-system">End-to-End RAG System</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F70-task-spec-format">Task Spec Format</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F71-classical-metrics">Classical Metrics</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F72-code-exec-metric">Code Exec Metric</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F73-perplexity-calibration">Perplexity and Calibration</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F74-leaderboard-aggregation">Leaderboard Aggregation</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F75-end-to-end-eval-runner">End-to-End Eval Runner</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F76-collective-ops-from-scratch">Collective Ops From Scratch</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F77-data-parallel-ddp">Data Parallel DDP From Scratch</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F78-zero-parameter-sharding">ZeRO Optimizer State Sharding</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F79-pipeline-parallel">Pipeline Parallel and Bubble Analysis</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F80-checkpoint-sharded-resume">Sharded Checkpoint and Atomic Resume</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F81-end-to-end-distributed-train">End-to-End Distributed Training</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F82-jailbreak-taxonomy">Capstone 82 — Jailbreak Taxonomy</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F83-prompt-injection-detector">Capstone 83 — Prompt Injection Detector</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F84-refusal-evaluation">Capstone 84 — Refusal Evaluation</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F85-content-classifier-integration">Capstone 85 — Content Classifier Integration</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F86-constitutional-rules-engine">Capstone 86 — Constitutional Rules Engine</a></td><td>Capstone</td><td>Python, YAML</td><td>complete</td></tr>
|
|
<tr data-generated-discovery="lesson"><td>19</td><td><a href="lesson?path=phases%2F19-capstone-projects%2F87-end-to-end-safety-gate">Capstone 87 — End-to-End Safety Gate</a></td><td>Capstone</td><td>Python</td><td>complete</td></tr>
|
|
<!-- GENERATED:LESSON-DISCOVERY:END -->
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="catalog-progressive-actions" id="catalogProgressiveActions" hidden>
|
|
<span class="catalog-progressive-note" id="catalogProgressiveNote"></span>
|
|
<div class="catalog-progressive-buttons">
|
|
<button class="catalog-progressive-button" id="catalogShowMore" type="button">Show more</button>
|
|
<button class="catalog-progressive-button" id="catalogShowAll" type="button">Show all</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
|
|
<footer class="site-footer">
|
|
<div class="container footer-inner">
|
|
<p>AI Engineering from Scratch · open source · free forever.</p>
|
|
<div class="footer-links">
|
|
<a href="index.html">Home</a>
|
|
<a href="https://github.com/rohitg00/ai-engineering-from-scratch" target="_blank" rel="noopener">GitHub</a>
|
|
<a href="glossary.html">Glossary</a>
|
|
<a href="https://github.com/rohitg00/ai-engineering-from-scratch/issues/new/choose" target="_blank" rel="noopener">Report / Suggest</a>
|
|
<a href="sponsors.html">Sponsor us</a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
<script src="data.js?v=20260821c"></script>
|
|
<script src="progress.js?v=20260822a"></script>
|
|
<script src="header.js?v=20260927a" defer></script>
|
|
<script src="cmdpalette.js?v=20260821a" defer></script>
|
|
<script>
|
|
(function () {
|
|
var root = document.documentElement;
|
|
var stored = '';
|
|
try { stored = localStorage.getItem('theme') || ''; } catch (_) {}
|
|
if (stored) {
|
|
root.setAttribute('data-theme', stored);
|
|
} else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
root.setAttribute('data-theme', 'dark');
|
|
} else {
|
|
root.setAttribute('data-theme', 'light');
|
|
}
|
|
|
|
function updateIcon() {
|
|
var icon = document.getElementById('themeIcon');
|
|
if (!icon) return;
|
|
icon.textContent = root.getAttribute('data-theme') === 'light' ? 'N' : 'D';
|
|
}
|
|
|
|
updateIcon();
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
updateIcon();
|
|
|
|
var btn = document.getElementById('themeToggle');
|
|
if (btn) {
|
|
btn.addEventListener('click', function () {
|
|
var next = root.getAttribute('data-theme') === 'light' ? 'dark' : 'light';
|
|
root.setAttribute('data-theme', next);
|
|
try { localStorage.setItem('theme', next); } catch (_) {}
|
|
updateIcon();
|
|
});
|
|
}
|
|
|
|
var searchInput = document.getElementById('catalogSearch');
|
|
var phaseSelect = document.getElementById('catalogPhase');
|
|
var statusSelect = document.getElementById('catalogStatus');
|
|
var bodyEl = document.getElementById('catalogBody');
|
|
var countEl = document.getElementById('catalogCount');
|
|
var tableWrap = document.getElementById('catalogTableWrap');
|
|
var progressiveActions = document.getElementById('catalogProgressiveActions');
|
|
var progressiveNote = document.getElementById('catalogProgressiveNote');
|
|
var showMoreButton = document.getElementById('catalogShowMore');
|
|
var showAllButton = document.getElementById('catalogShowAll');
|
|
var PAGE_SIZE = 48;
|
|
var visibleLimit = PAGE_SIZE;
|
|
var allRows = [];
|
|
|
|
if (typeof PHASES === 'undefined' || !Array.isArray(PHASES)) {
|
|
countEl.textContent = 'The lesson index could not be loaded.';
|
|
bodyEl.innerHTML = '<tr><td colspan="5" class="catalog-empty">Reload the page or use the GitHub curriculum index.</td></tr>';
|
|
tableWrap.setAttribute('aria-busy', 'false');
|
|
return;
|
|
}
|
|
|
|
for (var i = 0; i < PHASES.length; i++) {
|
|
var p = PHASES[i];
|
|
var opt = document.createElement('option');
|
|
opt.value = String(p.id);
|
|
opt.textContent = String(p.id).padStart(2, '0') + ' - ' + p.name;
|
|
phaseSelect.appendChild(opt);
|
|
|
|
for (var j = 0; j < p.lessons.length; j++) {
|
|
var l = p.lessons[j];
|
|
allRows.push({
|
|
phase: p.id,
|
|
phaseName: p.name,
|
|
name: l.name,
|
|
type: l.type,
|
|
lang: l.lang,
|
|
status: l.status,
|
|
url: l.url || ''
|
|
});
|
|
}
|
|
}
|
|
|
|
var sortCol = 'phase';
|
|
var sortDir = 1;
|
|
|
|
function syncUrl(mode) {
|
|
try {
|
|
var url = new URL(window.location.href);
|
|
var query = searchInput.value.trim();
|
|
if (query) url.searchParams.set('q', query);
|
|
else url.searchParams.delete('q');
|
|
if (phaseSelect.value) url.searchParams.set('phase', phaseSelect.value);
|
|
else url.searchParams.delete('phase');
|
|
if (statusSelect.value) url.searchParams.set('status', statusSelect.value);
|
|
else url.searchParams.delete('status');
|
|
if (sortCol !== 'phase' || sortDir !== 1) {
|
|
url.searchParams.set('sort', sortCol);
|
|
url.searchParams.set('dir', sortDir === 1 ? 'asc' : 'desc');
|
|
} else {
|
|
url.searchParams.delete('sort');
|
|
url.searchParams.delete('dir');
|
|
}
|
|
var nextUrl = url.pathname + url.search + url.hash;
|
|
if (mode === 'push') history.pushState(null, '', nextUrl);
|
|
else history.replaceState(null, '', nextUrl);
|
|
} catch (_) {}
|
|
}
|
|
|
|
function escapeHtml(str) {
|
|
var div = document.createElement('div');
|
|
div.textContent = str;
|
|
return div.innerHTML;
|
|
}
|
|
|
|
function render() {
|
|
var query = (searchInput.value || '').toLowerCase().trim();
|
|
var phaseFilter = phaseSelect.value;
|
|
var statusFilter = statusSelect.value;
|
|
|
|
var rows = allRows.filter(function (r) {
|
|
if (phaseFilter && String(r.phase) !== phaseFilter) return false;
|
|
if (statusFilter && r.status !== statusFilter) return false;
|
|
if (query) {
|
|
return r.name.toLowerCase().indexOf(query) !== -1 ||
|
|
r.phaseName.toLowerCase().indexOf(query) !== -1 ||
|
|
r.type.toLowerCase().indexOf(query) !== -1 ||
|
|
r.lang.toLowerCase().indexOf(query) !== -1;
|
|
}
|
|
return true;
|
|
});
|
|
|
|
rows.sort(function (a, b) {
|
|
var va, vb;
|
|
if (sortCol === 'phase') {
|
|
va = a.phase;
|
|
vb = b.phase;
|
|
} else if (sortCol === 'name') {
|
|
va = a.name.toLowerCase();
|
|
vb = b.name.toLowerCase();
|
|
} else if (sortCol === 'type') {
|
|
va = a.type.toLowerCase();
|
|
vb = b.type.toLowerCase();
|
|
} else if (sortCol === 'lang') {
|
|
va = a.lang.toLowerCase();
|
|
vb = b.lang.toLowerCase();
|
|
} else if (sortCol === 'status') {
|
|
va = a.status;
|
|
vb = b.status;
|
|
}
|
|
if (va < vb) return -1 * sortDir;
|
|
if (va > vb) return 1 * sortDir;
|
|
return 0;
|
|
});
|
|
|
|
var visibleRows = rows.slice(0, visibleLimit);
|
|
countEl.textContent = 'Showing ' + visibleRows.length + ' of ' + rows.length + ' matching lessons. ' + allRows.length + ' total.';
|
|
tableWrap.setAttribute('aria-busy', 'false');
|
|
|
|
if (rows.length === 0) {
|
|
bodyEl.innerHTML = '<tr><td colspan="5" class="catalog-empty">No lessons match your filters.</td></tr>';
|
|
progressiveActions.hidden = true;
|
|
return;
|
|
}
|
|
|
|
var phaseCounts = Object.create(null);
|
|
rows.forEach(function (row) {
|
|
phaseCounts[row.phase] = (phaseCounts[row.phase] || 0) + 1;
|
|
});
|
|
|
|
var html = '';
|
|
var previousPhase = null;
|
|
for (var i = 0; i < visibleRows.length; i++) {
|
|
var r = visibleRows[i];
|
|
if (sortCol === 'phase' && r.phase !== previousPhase) {
|
|
html += '<tr class="catalog-group-row"><th colspan="5" scope="rowgroup">Phase ' + String(r.phase).padStart(2, '0') + ': ' + escapeHtml(r.phaseName) + '<span class="catalog-group-count">' + phaseCounts[r.phase] + ' lessons</span></th></tr>';
|
|
previousPhase = r.phase;
|
|
}
|
|
html += '<tr>';
|
|
html += '<td><span class="catalog-phase-label">' + String(r.phase).padStart(2, '0') + '</span></td>';
|
|
if (r.url) {
|
|
var localMatch = String(r.url).match(/(phases\/[^/]+\/[^/]+)\/?$/);
|
|
var lessonHref = localMatch ? 'lesson?path=' + encodeURIComponent(localMatch[1]) : r.url;
|
|
html += '<td><a href="' + lessonHref + '"' + (localMatch ? '' : ' target="_blank" rel="noopener"') + '>' + escapeHtml(r.name) + '</a></td>';
|
|
} else {
|
|
html += '<td>' + escapeHtml(r.name) + '</td>';
|
|
}
|
|
html += '<td>' + escapeHtml(r.type) + '</td>';
|
|
html += '<td><span class="catalog-lang">' + escapeHtml(r.lang) + '</span></td>';
|
|
html += '<td><span class="catalog-status-dot ' + r.status + '" aria-hidden="true"></span>' + r.status + '</td>';
|
|
html += '</tr>';
|
|
}
|
|
bodyEl.innerHTML = html;
|
|
|
|
var remaining = rows.length - visibleRows.length;
|
|
progressiveActions.hidden = remaining <= 0;
|
|
progressiveNote.textContent = remaining > 0 ? remaining + ' matching lessons remain.' : '';
|
|
showMoreButton.textContent = 'Show next ' + Math.min(PAGE_SIZE, remaining);
|
|
showMoreButton.hidden = remaining <= 0;
|
|
showAllButton.hidden = remaining <= 0;
|
|
}
|
|
|
|
function applyUrlState(focusSearch) {
|
|
var params = new URLSearchParams(window.location.search);
|
|
var urlQuery = params.get('q') || '';
|
|
var urlPhase = params.get('phase') || '';
|
|
var urlStatus = params.get('status') || '';
|
|
var urlSort = params.get('sort') || 'phase';
|
|
var urlDir = params.get('dir') || 'asc';
|
|
searchInput.value = urlQuery;
|
|
phaseSelect.value = Array.prototype.some.call(phaseSelect.options, function (option) { return option.value === urlPhase; }) ? urlPhase : '';
|
|
statusSelect.value = Array.prototype.some.call(statusSelect.options, function (option) { return option.value === urlStatus; }) ? urlStatus : '';
|
|
sortCol = ['phase', 'name', 'type', 'lang', 'status'].indexOf(urlSort) !== -1 ? urlSort : 'phase';
|
|
sortDir = urlDir === 'desc' ? -1 : 1;
|
|
visibleLimit = PAGE_SIZE;
|
|
document.querySelectorAll('.catalog-table th[data-sort]').forEach(function (header) {
|
|
var active = header.getAttribute('data-sort') === sortCol;
|
|
header.setAttribute('aria-sort', active ? (sortDir === 1 ? 'ascending' : 'descending') : 'none');
|
|
header.querySelector('.sort-arrow').textContent = active ? (sortDir === 1 ? ' \u25B2' : ' \u25BC') : '';
|
|
});
|
|
render();
|
|
if (focusSearch && urlQuery) {
|
|
try { searchInput.focus({ preventScroll: true }); } catch (_) { searchInput.focus(); }
|
|
}
|
|
}
|
|
|
|
searchInput.addEventListener('input', function () {
|
|
visibleLimit = PAGE_SIZE;
|
|
syncUrl('replace');
|
|
render();
|
|
});
|
|
phaseSelect.addEventListener('change', function () {
|
|
visibleLimit = PAGE_SIZE;
|
|
syncUrl('push');
|
|
render();
|
|
});
|
|
statusSelect.addEventListener('change', function () {
|
|
visibleLimit = PAGE_SIZE;
|
|
syncUrl('push');
|
|
render();
|
|
});
|
|
|
|
showMoreButton.addEventListener('click', function () {
|
|
visibleLimit += PAGE_SIZE;
|
|
render();
|
|
if (progressiveActions.hidden) countEl.focus();
|
|
else showMoreButton.focus();
|
|
});
|
|
|
|
showAllButton.addEventListener('click', function () {
|
|
visibleLimit = Number.POSITIVE_INFINITY;
|
|
render();
|
|
countEl.focus();
|
|
});
|
|
|
|
function applySort(th) {
|
|
var col = th.getAttribute('data-sort');
|
|
if (sortCol === col) {
|
|
sortDir = sortDir * -1;
|
|
} else {
|
|
sortCol = col;
|
|
sortDir = 1;
|
|
}
|
|
visibleLimit = PAGE_SIZE;
|
|
document.querySelectorAll('.catalog-table th[data-sort]').forEach(function (header) {
|
|
header.setAttribute('aria-sort', header === th ? (sortDir === 1 ? 'ascending' : 'descending') : 'none');
|
|
header.querySelector('.sort-arrow').textContent = '';
|
|
});
|
|
th.querySelector('.sort-arrow').textContent = sortDir === 1 ? ' \u25B2' : ' \u25BC';
|
|
syncUrl('push');
|
|
render();
|
|
}
|
|
|
|
document.querySelectorAll('.catalog-table th[data-sort]').forEach(function (th) {
|
|
th.addEventListener('click', function () { applySort(th); });
|
|
th.addEventListener('keydown', function (event) {
|
|
if (event.key !== 'Enter' && event.key !== ' ') return;
|
|
event.preventDefault();
|
|
applySort(th);
|
|
});
|
|
});
|
|
|
|
window.addEventListener('popstate', function () { applyUrlState(false); });
|
|
applyUrlState(true);
|
|
});
|
|
})();
|
|
</script>
|
|
<script defer src="https://va.vercel-scripts.com/v1/script.js"></script>
|
|
</body>
|
|
</html>
|