CS124 Week 1 Introduction and Setup:先把語言問題拆成可計算的元件
CS124 Winter 2026 第一週不是先教 Transformer,而是先畫出從斷詞、分類、檢索到語音與網路的十週路線,並用 PA0 建好後續九週共同使用的 Jupyter 環境。
CS124 Winter 2026 第一週不是先教 Transformer,而是先畫出從斷詞、分類、檢索到語音與網路的十週路線,並用 PA0 建好後續九週共同使用的 Jupyter 環境。
Week 10 以 anchor text、PageRank 與 centrality 分析 Web graph;post-training、多語與 speech 只歸於檔名及內容標示 2025 的公開 final deck outline,不歸為 2026 現場內容。
Week 2 把文字處理拆成三層:以 BPE 建立 token 詞彙、以動態規劃求最小編輯距離,再以 n-gram 近似序列機率;PA1 把正規表示式與 BPE 變成可執行作業。
Week 3 用 logistic regression 串起文字特徵、sigmoid 機率、cross-entropy loss 與 gradient descent,讓分類不只輸出標籤,也能說明每個特徵如何推動預測。
Week 4 從倒排索引建立候選集,以 tf-idf 與 cosine similarity 排序,再把檢索結果接到生成模型;PA3 要求實作的不是聊天介面,而是 RAG 前半段可檢查的搜尋核心。
Week 5 的公開材料支持 distributional hypothesis、word embeddings 與 cosine similarity;同週 Social NLP 現場課未錄影且投影片受限,具體 audit 方法只作作者延伸。
Week 6 以公開 neural-network slides 建立 weighted sum、nonlinearity、loss 與 backpropagation,再用檔名標示 2025 的公開 LLM/Transformer deck 連到 decoder-only 架構,不視為 2026 現場逐字內容。
Week 7 的可公開主線是 PA6a:實作 causal self-attention、訓練 Shakespeare 小型 Transformer、取樣並計算 perplexity;同週 speech live lecture 未錄影,只能保留為明示缺口。
Week 8 以 PA6b 把文字轉語音再轉回文字,要求分類錯誤、檢查格式遺失與口音偏差;同週 Lab 4 以 Git 與 PA7 協作把課程帶入團隊 agent 專案。
Week 9 以 item-item collaborative filtering 產生電影推薦,再把推薦、web search、database 與 memory 包成 LLM agent tools;PA7 同時把模型非決定性、API 預算與團隊協作變成交付條件。
第 3 講把神經網路訓練拆成計算圖、局部導數與鏈鎖律:forward pass 算結果,backprop 由輸出往回累積梯度,讓每個參數知道自己該往哪裡移。
第 11 講把評估拆成測什麼、怎麼量與何時不再可信:benchmark 會飽和、遭污染或被提示格式左右,LLM judge 也只是帶著自身偏差的模型。
第 9 講比較 prompting、pruning、LoRA、prompt tuning 與 adapters:它們都在回答同一題——要讓一個大型預訓練模型適應新任務,究竟需要改多少參數與儲存多少任務狀態?
第 6 講先補完 Transformer encoder、decoder 與 cross-attention,再把期末專案拆成題型、評分、研究題目與資料來源;好題目必須能用一個明確 baseline 和指標驗證。
Winter 2026 第 1 講用四個時代整理 NLP:早期探索、符號系統、統計機器學習、深度與自監督學習;重點不是背年表,而是看每個時代如何重新定義語言問題。
第 15 講由 Been Kim 客座談 interpretability,但 Winter 2026 官網沒有公開投影片或 agenda;本文不虛構講授內容,只用官方五篇閱讀建立概念發現、agentic investigation 與新詞彙三條閱讀路線。
第 17 講由 Luke Zettlemoyer 客座談 multimodality,但官網沒有公開投影片或 agenda;官方閱讀清單可確認三條主線:視覺推理介面、early-fusion token 模型、文字自回歸加影像 diffusion。
最後一講把 Open Questions in NLP 2026 收斂成 smart scaling:以 prolonged RL、Prismatic synthetic data、RL as pretraining 與開放協作,讓小模型不只靠增加參數追求推理能力。
第 8 講解釋預訓練模型如何經 instruction tuning、偏好資料與 RLHF 變成助理,再以 DPO 直接從勝負配對學習;每一步都把人的判斷轉成訓練訊號,也把偏差帶進模型。
第 7 講把預訓練拆成可擴張資料、subword tokenization、三種模型目標與 in-context learning;核心取捨是用通用的自監督目標換取可重用表示,再用下游訊號指定用途。
第 10 講從問答與 RAG 進入 language agents,再拆成推理規劃、記憶、工具、資料與評估;agent 不是單一模型,而是模型與外部狀態之間可被逐步檢查的迴圈。
第 12 講先證明輸出策略不是小細節:greedy、beam 與 sampling 會產生不同文字;再由 R1-Zero/R1 走進 PPO、GRPO、DAPO,最後追問長推理何時真的有用。
第 13 講從推論效率走到推論能力:speculative decoding 用小模型草擬、大模型驗證;on-policy distillation 處理資料漂移;長上下文與 test-time scaling 則用更多推論資源換取表現。
第 4 講把語言模型定義成下一詞機率分布,再用 RNN 壓縮任意長前文;它同時揭露 recurrence 的核心代價:資訊與梯度都必須沿時間步逐步傳遞。
第 16 講把 NLP 的社會影響拆成四題:模型為何 hallucinate、AI 輔助創作的同質化悖論、工作如何重組,以及價值對齊為何不能化約成單一 reward。
第 18 講由 John Schulman 客座,官方只公布題名 Tinker and LoRA Without Regret、日期與講者,沒有投影片、agenda 或閱讀;因此本篇只保存可確認事實與不可確認清單。
第 14 講從 word、character/byte 與 subword 切分一路走到 BPE failure cases 和跨語言公平:tokenizer 決定序列長度、運算成本與模型看到的語言單位,因此不是中立前處理。
第 5 講從 RNN 的長距離與循序瓶頸走到 self-attention,再組成 Transformer;它縮短位置間的資訊路徑並容許平行計算,但付出二次方 attention 成本與位置資訊必須另行注入的代價。
第 2 講從 word2vec 的預測任務、目標函數與梯度一路走到 count-based vectors 和評估,核心是:詞義不是查表得到的標籤,而是從上下文分布學出的高維座標。
SPINACH 不一次猜完整 SPARQL,而是搜尋 entity/property、查看 Wikidata entry 與 property examples、執行小查詢,再逐步組合完整查詢;action set 與停止規則是可靠性的核心。
CHURRO 以 HDML 表示整頁文字、版面與 metadata,整合跨世紀多語資料訓練 page-level VLM,再把輸出接到 HistoryGenie,讓檔案館材料能被檢索與對話。
最後一講不是完整 LLM 訓練教學,而是資料效率研究:在 compute 充足、資料固定時重看 epochs、batch、ensemble 與 self-training,再研究 synthetic continued pretraining 的可擴展條件。
WikiChat 不把檢索結果直接交給一次生成,而是形成查詢、檢索、過濾、生成、拆主張、再檢索查核與移除無根據內容,並把檢索與事實性分開評估。
Fall 2025 第一講把 CS224V 的主線定成計算思維:不要期待一次提示解決可靠性,而要把檢索、形式表示、查核與生成拆成可測試的演算法。
STORM 用觀點引導的提問、模擬訪談與大綱建立改善研究廣度;Co-STORM 再把人放進迴圈,讓探索未知問題與共同編修成為系統的一部分。
SLIDERS 不讓模型直接吞完所有長文件,而是從問題誘導 schema、做語意切塊與情境化擷取、協調重複列,再用 SUQL 查詢產生答案。
ReactGenie 以 React 元件加 annotations 暴露資料、動作與視圖,將複合語音命令解析成 DSL,並在同一份 UI context 中產生原生圖形輸出。
這堂把病人紀錄與試驗條件各自轉成 SMT,先以較弱的命題邏輯投影做大規模候選檢索,再用 solver 檢查候選;推理可解釋,但 NL-to-SMT 仍是主要錯誤入口。
自動質性編碼先以 codebook 定義事件型別與 arguments,再把長文分類、結構化抽取和 entity linking 分開;受約束 JSON 能保格式,仍不能取代領域專家的覆核。
結構化資料 agent 的可靠路線是把自然語言轉成可執行查詢、處理 schema 與列舉值,再把 query execution 和回答生成分開評估;混合資料則要先判斷該走資料庫還是文字檢索。
SUQL 在 SQL 裡加入 answer 與 summary 兩種自由文字函式,semantic parser 產生一個混合查詢,再由 compiler 做 predicate pushdown、top-k 與 lazy evaluation。
CS224V 把任務型 agent 評估拆成狀態更新與完整互動:先測 semantic parser,再讓真人檢查任務完成、知識查詢與動作是否可靠。
Genie Worksheets 把任務能力宣告成表單式規格,讓 contextual semantic parser 只更新形式對話狀態;查詢、動作與回應由 runtime 依規格執行。
CS336 第一講不把「從零打造語言模型」理解成重做所有舊技術,而是先區分 mechanics、mindset 與 intuitions,再用 BPE 示範如何把原始位元組轉成可訓練的 token。
Stanford CS221 Autumn 2025 第 1 講,從 Overview:用資源限制定義智慧建立可操作的 AI 問題表示與演算法直覺。
Stanford CS221 Autumn 2025 第 2 講,從 Learning I:從計算圖到線性迴歸 建立可操作的 AI 問題表示與演算法直覺。
Stanford CS221 Autumn 2025 第 3 講,從 Learning II:線性分類、特徵與交叉熵 建立可操作的 AI 問題表示與演算法直覺。
Stanford CS221 Autumn 2025 第 4 講,從 Learning III:深度網路是可重複組合的計算圖 建立可操作的 AI 問題表示與演算法直覺。
第 5 講把搜尋問題寫成 state、action、successor 與 cost,並用 acyclic dynamic programming 說明:狀態若遺漏未來所需資訊,再快的演算法也只會解錯問題。
Stanford CS221 Autumn 2025 第 6 講依官方材料拆解 Search II:UCS 與 A* 的優先順序,並標出方法成立的假設與限制。
Stanford CS221 Autumn 2025 第 7 講依官方材料拆解 MDPs I:把隨機性放進狀態轉移,並標出方法成立的假設與限制。
Stanford CS221 Autumn 2025 第 8 講依官方材料拆解 MDPs II:不知道轉移模型時如何學 Q 值,並標出方法成立的假設與限制。
Stanford CS221 Autumn 2025 第 9 講從 tabular RL 走到 function approximation,再用 log-derivative identity 推出 REINFORCE,最後落到可執行的 PyTorch 更新。
第 10 講把單一 agent 搜尋擴成 adversarial game tree:expectimax 對 chance 求期望、minimax 對對手取最差結果,alpha-beta 則在不改答案下剪掉無關分支。
第 11 講先用 temporal-difference updates 從遊戲經驗學 value,再從 sequential play 轉向 simultaneous games,以 mixed strategies、minimax guarantee 與 Nash equilibrium 描述穩定策略。
第 12 講用 random variables 與 factors 建 joint distribution,再以 Bayesian-network factorization 表達 conditional independence,讓 conditioning 與 marginalization 成為可執行的 probabilistic inference。
第 13 講在 exact inference 太昂貴時改用 Gibbs sampling:每次只重抽一個變數,僅依 Markov blanket 計算 conditional distribution,並以樣本頻率近似查詢機率。
第 14 講從 complete data 的 maximum-likelihood counts 與 Laplace smoothing,走到 latent variables 下交替計算 posterior responsibilities 和更新參數的 EM。
第 15 講分開 propositional logic 的 syntax 與 semantics:model checking 用 satisfying assignments 定義 entailment,SAT solver 找見證,inference rules 則必須同時檢查 soundness 與 completeness。
第 16 講用 predicates、quantifiers 與 functions 壓縮跨物件知識,再以 substitution、unification 與 definite-clause forward inference 推導結論,同時標出 termination 與 completeness 限制。
第 17 講把 language model 定義為 sequence probability 的 chain-rule factorization,對照 n-gram 與 neural conditional models,並說明 sampling、temperature 與 evaluation 如何改變生成結果。
第 18 講用 benefits、misuse、accidents 與 structural harms 分類 AI 社會影響,再把 fairness audits、研究倫理、著作權與平台條款接回可追責的制度選擇。
Lecture 19 用 Economics of AI deck 把 AI 的 compute、data、distribution 與組織互補品接到 GDP、勞動與 ideas 的成長路徑。
第 20 講是 Percy Liang 談職涯研究、CS221/Stanford 與 AI 未來的 fireside chat;每項歸因都連回官方影片,編者整理則與自動字幕的不確定性分開。
依 Fall 2025 官方投影片逐段整理第 1 講,涵蓋 課程地圖與工具、圖資料的共同語言、傳統特徵與表示學習,並標出自學者拿不到的課堂材料。
依 Fall 2025 官方投影片逐段整理第 2 講,涵蓋 編碼器—解碼器觀點、鄰近度與目標函數、隨機漫步,並標出自學者拿不到的課堂材料。
依 Fall 2025 官方投影片逐段整理第 3 講,涵蓋 從固定 embedding 到深度編碼器、message passing 框架、聚合與更新,並標出自學者拿不到的課堂材料。
依 Fall 2025 官方投影片逐段整理第 4 講,涵蓋 GNN 設計空間、訊息、聚合與更新、GraphSAGE,並標出自學者拿不到的課堂材料。
依 Fall 2025 官方投影片逐段整理第 5 講,涵蓋 圖資料 augmentation、特徵與結構 augmentation、supervision 與 loss,並標出自學者拿不到的課堂材料。
依 Fall 2025 官方投影片整理第 6 講,涵蓋 什麼叫可區分、Weisfeiler–Lehman test、message passing 的上界,並標出無法公開取得的課堂材料。
依 Fall 2025 官方投影片整理第 7 講,涵蓋 完美 GNN 的思想實驗、標準 GNN 的三層失敗、identity-aware encoding,並標出無法公開取得的課堂材料。
依 Fall 2025 官方投影片整理第 8 講,涵蓋 self-attention 與 message passing、圖上 attention 的範圍、位置與結構編碼,並標出無法公開取得的課堂材料。
依 Fall 2025 官方投影片整理第 9 講,涵蓋 異質圖 schema、relation-specific messages、R-GCN,並標出無法公開取得的課堂材料。
依 Fall 2025 官方投影片整理第 10 講,涵蓋 知識圖譜與 completion、三元組 scoring、TransE 與關係模式,並標出無法公開取得的課堂材料。
依 Fall 2025 官方投影片整理第 11 講,涵蓋 推薦系統的圖表示、matrix factorization baseline、NGCF 的訊息傳遞,並標明公開材料邊界。
依 Fall 2025 官方投影片整理第 12 講,涵蓋 表格 pipeline 的限制、關聯式資料庫轉圖、temporal entity graph,並標明公開材料邊界。
依 Fall 2025 官方投影片整理第 13 講,涵蓋 RDL 的多關係瓶頸、RelGNN composite message passing、relation-specific aggregation,並標明公開材料邊界。
依 Fall 2025 官方投影片整理第 14 講,涵蓋 relational foundation model 的目標、zero-shot relational transfer、PRODIGY 的 prompt graph,並標明公開材料邊界。
依 Fall 2025 官方投影片整理第 15 講,涵蓋 transductive KG embedding 的邊界、entity-inductive link prediction、relation graph,並標明公開材料邊界。
依 Fall 2025 官方投影片整理第 16 講,涵蓋 LLM 與 GNN 的互補缺口、text-attributed graphs、LLM as predictor or encoder,並標明公開材料邊界。
依 Fall 2025 官方投影片整理第 17 講,涵蓋 從 graph QA 到 agent、STaRK 的多模態檢索、工具使用與 traversal,並標明公開材料邊界。
依 Fall 2025 官方投影片整理第 18 講,涵蓋 圖生成問題與資料表示、生成品質的評估、GraphRNN 的 autoregressive factorization,並標明公開材料邊界。
Fall 2025 Conclusion deck 在 32 個 tasks 上研究約 315K 個 GNN designs:先跑少量 anchor models,以 ranking 描述 task similarity,再從相似 task 轉移 best designs。
線性迴歸不只是一條最佳直線;第一章用平方損失串起梯度下降、常態方程、最大概似估計與局部加權迴歸。
第二章從 sigmoid 機率模型推導邏輯斯損失,再比較感知器、多類別 softmax 與 Newton 法。
第三章用指數族、自然參數與連結函數,把最小平方法和邏輯斯迴歸放進同一套建模模板。
第四章改從 p(x|y) 與 p(y) 建模,用 GDA、Naive Bayes 和 Laplace 平滑展示生成式分類的力量與代價。
第五章把高維特徵的內積改寫成 kernel,讓依賴內積的線性演算法在不顯式建立特徵的情況下學非線性。
第六章把分類信心形式化為幾何間隔,再用拉格朗日對偶、kernel 與 SMO 建出可實作的 SVM。
第七章把神經網路拆成可組合模組,並用反向傳播與向量化說明深度模型如何有效率地訓練。
第四講先釐清 signed/unsigned 轉型不改 bits、混合比較可能改變數值意義,以及 sign extension、zero extension、truncation;再推導 AND、OR、NOT、XOR 與 bitmask 的讀取、設定、清除和集合操作。
第三講從 32/64-bit 位址空間出發,推導 unsigned 與 two's-complement signed integer 的範圍、反相加一與共用加法硬體,再分清 unsigned modulo 運算和 C signed overflow,最後用四組故障案例檢查模型。
第五講把 bitmask 推進到 left/right shift、power-of-two 與 popcount tricks,並用 absolute-value 範例揭示 signed intermediate 在 INT_MIN 會 overflow;後半建立 GDB 的 breakpoint、執行控制、格式化 print、memory examine 與 backtrace 工作流。
第二講把 C 放回 Unix 的歷史與開發環境:拆解 header、main、printf、argc/argv,走過 ssh、emacs、make 與執行檔,再用位值系統推導 8 bits = 1 byte、byte 的 256 種 pattern,以及 binary/hexadecimal 的雙向換算。
Winter 2026 第一講先回答 CS107 為何要往抽象層底下挖:從位元組、記憶體、組合語言到 heap allocator,再交代作業 40%、lab 10%、期中 20%、期末 30% 的課程制度,最後用 Unix 命令列替後續 C 開發暖身。
從集合的元素、子集合與冪集開始,最後用 Cantor 對角線證明任何集合都不可能和自己的冪集一樣大。
用偶數平方與兩奇數相加兩個例題,練習任取、假設、見證與 want-to-show 如何組成可逐行檢查的直接證明。
本講先精確刻畫蘊涵何時為假,再把量詞否定、逆否命題與反證法變成可檢查的證明工具。
命題邏輯把英文陳述抽象成真假變數,再用真值表檢查連接詞、翻譯方向與 De Morgan 等價式。
本講把命題邏輯擴充成能談論物件的一階邏輯:分清常數、predicate、function 與命題的型別,再用存在與全稱量詞表達 some 與 every。
把自然語言逐層翻成一階邏輯:辨認全稱與存在句型,再處理量詞順序、否定、限制量詞與唯一性。
函數不只是一條公式:定義域、陪域、全域有定義與確定性缺一不可,而 involution、單射與滿射的量詞正好決定證明怎麼寫。
本講以滿射與鳥類證明釐清『假設』和『證明』的不同操作,再證明 involution 必為單射與滿射,並把同一套推理帶進函數合成。
兩個集合等大,意思是它們之間存在雙射;Cantor 的對角集合則能對任意 S 到其冪集的函數造出一個漏接值。
本講從圖與有向圖的形式定義,推進到獨立集、頂點覆蓋,以及兩者的補集關係。
數學歸納法不是把幾個案例排在一起,而是證明起點成立、任意一步能把真命題傳給下一步,再由歸納原理涵蓋所有自然數。
本講從「從上一講的標準歸納法出發」推進到「起點不必是零」,依官方例題重建定義、推導與易錯邊界。
本講從「為什麼先研究一台很弱的電腦」推進到「從裝置行為抽出狀態機」,依官方例題重建定義、推導與易錯邊界。
本講從「DFA 的形式定義把前半學期串起來」推進到「regular 語言 是「存在一台 DFA」」,依官方例題重建定義、推導與易錯邊界。
本講從「自動機階梯:能力要用語言區分」推進到「DFA transition table 是圖的精確轉寫」,依官方例題重建定義、推導與易錯邊界。
本講從「從 closure 性質 走向描述語言的語法」推進到「regex 是數學表示式,不等於某套程式庫」,依官方例題重建定義、推導與易錯邊界。
本講從「四種 regular 的說法已經等價」推進到「finite memory 的精確直覺」,依官方例題重建定義、推導與易錯邊界。
本講從「從有限狀態限制轉向遞迴結構」推進到「arithmetic grammar 的四組規則」,依官方例題重建定義、推導與易錯邊界。
本講從「為何 CFG 之後還要換模型」推進到「長加法揭示 local access 原則」,依官方例題重建定義、推導與易錯邊界。
本講從「sample TM:從最後一格回看第一格」推進到「TM 能做的工作遠超逐格配對」,依官方例題重建定義、推導與易錯邊界。
本講從「recognizer 與 decider 的快速量詞稽核」推進到「為何所有問題都能寫成 語言」,依官方例題重建定義、推導與易錯邊界。
本講從「從 R、RE 與 UTM 接回來」推進到「self-reference 回顧的三個程式」,依官方例題重建定義、推導與易錯邊界。
本講從「HALT 的定義與位置」推進到「為何 HALT 可辨識」,依官方例題重建定義、推導與易錯邊界。
本講從「Lava Diagram 的兩個辨識任務」推進到「Rice's Theorem 的 投影片 版判讀」,依官方例題重建定義、推導與易錯邊界。
本講從「decidable 不等於 feasible」推進到「efficiency 要先選 resource」,依官方例題重建定義、推導與易錯邊界。
最後一講把證明、圖論、自動機與可計算性重新接起來,再對照會直接使用這些基礎的 Stanford 後續課程。
CS107 第 15 講把 x86-64 的 mov 拆成 immediate、register、absolute、indirect、displacement、indexed 與 scaled indexed operands,並以 D + R[b] + R[i]×s 統一解讀 pointer dereference 和 array access。
CS107 第 16 講把 b/w/l/q 資料寬度、subregister、movs/movz、lea、呼叫慣例、算術邏輯與 shift 串成一套規則:先確定操作寬度,再追蹤來源、目的與是否真的讀取記憶體。
CS107 第 18 講以 ZF/SF/CF/OF 串起 cmp、test、signed/unsigned conditional jumps,再拆解 if、loops、dynamic instruction count、setcc 與 cmovcc。
CS107 第 17 講先完成 x86-64 的 full-width multiplication 與 division,再沿著 instruction bytes 追蹤 %rip,最後以 direct/indirect jmp 說明程式如何離開預設的順序執行。
CS107 第 19 講追蹤 %rsp、push/pop、call/ret、parameters、return values、stack locals 與 caller/callee register discipline,建立可跨函式維持資料與控制流的 ABI 契約。
CS107 第 14 講用 sum_array 的 10 條 x86-64 指令拆開反組譯輸出:左側是位址與機器碼,右側是 AT&T assembly;讀者的任務是由 opcode、operand、register 與控制流程還原 C,而不是手寫組合語言。
CS107 第 7 講先用 strchr、strstr、strspn 建立指標式字串掃描,再指出只驗證內容仍擋不住 buffer overflow:安全邊界必須同時涵蓋輸入規則、目的地容量、終止字元與記憶體檢測。
CS107 第 25 講用精簡投影片建立 cache 的核心模型:記憶體存取成本不均,較小且較快的層級保存可能再次使用的資料,而 temporal 與 spatial locality 決定程式能否受益。
CS107 第 6 講把 C 字串拆回 char 陣列、終止空字元與位址:strlen、strcmp、strcpy、strncpy、strcat 的每一個便利,都以呼叫者維持容量與終止條件為代價。
CS107 第 24 講用矩陣乘法與 Callgrind 建立量測流程,再拆解 GCC 的 constant folding、共同子運算式消除、dead-code elimination、strength reduction、code motion 與遞迴轉迴圈;最佳化從瓶頸證據開始。
CS107 第 23 講把 explicit free list 推進到原地 realloc:縮小時切出可用區塊,放大時吞併右側 free blocks,做不到才配置、複製、釋放;每一步都要同時維持實體 heap 與邏輯 free list。
CS107 第 12 講先用 char * 完成 byte-wise generic swap 與 rotate,再以 function pointer 把 bubble sort 的走訪機制和比較規則拆開;void * 解決資料型別,callback 解決行為差異。
CS107 第 13 講把 bool callback 升級成三向 comparator,再把 void *、element width 與 const void * callback 合併成完整 generic bubble sort,最後對照 qsort、bsearch、lfind 與 lsearch。
CS107 第 11 講先收完 calloc、strdup、free、realloc 的 heap 契約,再把 swap 從多份型別專用程式改造成 void * 加 byte count:C 的泛型不是保留未知型別,而是明確交接位址、寬度與解讀責任。
CS107 第 21 講從 allocator 的 alignment、throughput 與 utilization 目標出發,以 bump allocator 和 implicit free list 拆解 metadata、splitting、placement、內部與外部碎片,以及 free 後為何必須 coalesce。
CS107 第 22 講把 implicit free list 改成 explicit free list:搜尋只拜訪可重用 blocks,但每塊 free memory 同時具有實體相鄰順序與邏輯鏈結順序,unlink、coalesce、reinsert 必須共同維持不變量。
CS107 第 8 講從 & 取址與 * 解參照出發,說清楚 C 的 pointer parameter 為何仍是 pass-by-value,以及 int *、char *、char ** 如何分別修改 caller 擁有的 int、char 與 pointer。
CS107 第 9 講用 C strings 七條規則拆開 array object、pointer variable 與 string literal:array 常在運算式中退化成首元素指標,但儲存空間、可重新賦值性、可修改性與 sizeof 行為仍完全不同。
CS107 第 20 講把 reverse engineering 能力放回倫理脈絡:privacy 有個人與社會模型,trust 等於 reliance 加上 betrayal risk;接著複習 process memory,從 malloc client 轉成 heap allocator implementer。
CS107 第 10 講從 sizeof 與 pointer arithmetic 走進 stack frame lifetime:回傳 local array 會留下 dangling pointer;malloc 讓資料跨越函式返回,但也把 NULL、容量計算、ownership、free 與 memory leak 交給程式設計者。
CS107 第 26 講用六個大問題收束十週內容:representation、text、memory、generics、execution 與 allocation;它以 explicit allocator 檢查學習成果,並把後續路線指向 CS111 與其他 systems 課。
先把隨機問題列成結果集合,再談事件的機率。
條件不是裝飾,而是把樣本空間縮到已知資訊仍允許的部分。
Bayes 定理把容易建模的生成方向,翻成真正想問的推論方向。
先判斷順序是否重要、元素能否重複,公式才不會套錯。
隨機變數是把結果映成數字;期望值是加權平均,不保證會真的出現。
期望值把分布壓成加權平均;LOTUS 處理變換後的值,linearity 則讓隨機變數的和即使不獨立也能直接計算。
先用 variance 描述隨機變數的分散程度,再用 Poisson 處理固定區間內的事件數,以及大 n、小 p 的二項近似。
連續變數的單點機率為零,區間機率是 PDF 面積;CDF、Uniform 與 Exponential 則把面積、等待時間與 memorylessness 串起來。
標準化把不同尺度的 Normal 變數轉成 Z;Φ、線性轉換與 continuity correction 再把區間與大型 binomial 變成可計算的機率。
Joint distribution 保存多個變數的完整關係;marginal、conditional、independence 與 Bayes 都是從這份關係表取出不同問題的答案。
Inference 把 hidden variable 的 prior 逐項乘上 observation likelihood,再正規化成 posterior;同一迴圈可處理多次觀察與離散化的連續 belief。
Bayesian network 用 conditional independence 分解巨大 joint;ancestral sampling 生成 joint samples,rejection sampling 再以 evidence 篩出 conditional。
Multinomial 把 binomial 的兩類計數推廣到多類;同一 PMF 也能把文件視為 word counts,配 Bayes 與 log-score 做 authorship inference。
Beta distribution 表示對未知成功率的完整 belief;success/failure data 只需更新兩個參數,便能取得 posterior、平滑估計與 Thompson-sampling decision。
少數分布的 independent sums 有 closed form;一般 IID sums 則由 CLT 在大樣本下近似 Normal,離散 sums 還需 continuity correction。
Bootstrap 把 sample histogram 當作 population proxy,以 replacement 重抽並重算 statistic,近似 estimator 的 sampling distribution、error bar 與 null p-value。
隨機程式的 expected cost 可依第一個 random choice 分情境;計數問題則拆成 indicators,兩者都靠 linearity,而不必硬求完整 distribution。
Surprise 把低機率事件轉成 bits;entropy 是 expected surprise,information gain 選擇最能降低 uncertainty 的問題,KL 則量化錯用 model distribution 的額外代價。
MLE 固定觀察資料、最佳化參數;log-likelihood 讓乘積變加總,但最大值也可能落在邊界。
Logistic regression 用 sigmoid 把線性分數變成 Bernoulli 機率,而 gradient xⱼ(y-ŷ) 直接來自 log-likelihood 的 chain rule。
比較 classifier 不能只看 accuracy;還要用 held-out data、baseline、calibration、precision/recall 與明確的 fairness criterion。
Neural network 是堆疊的 logistic units;forward pass 算機率,backpropagation 重用 output error 來計算所有 gradients。
第 1 講沿 1940 年代共用 I/O 卡片、batch processing、multiprogramming 與個人電腦的演變,解釋 OS 的功能如何隨硬體成本與使用者需求逐層增加。
第 2 講先定義行程與執行緒的共享/私有狀態,再用 fork、execvp、waitpid 與 thread creation 說明核心如何建立執行單位。
第 3 講沿 running、blocked、ready 狀態轉移,拆解 PCB、context save/restore 與 dispatcher 如何完成一次 CPU 控制權交接。
第 4 講逐步拆解 Too Much Milk 的失敗排程,從具體 interleaving 推導 race condition、atomicity、critical section 與正確同步條件。
第 5 講用容量為 8 的環形 Pipe 證明:mutex 只提供互斥;condition variable 才能在 predicate 不成立時原子地釋放鎖並阻塞;Mesa semantics 下,wait 返回後必須用 while 重查條件。
第 6 講從單核心關中斷一路修到多核心 v5,追蹤 guard、lock 與 wait queue,說明 atomic exchange、spin、block 與 wakeup 如何避免 race 和 lost wakeup。
第 7 講用 request/ownership graph 拆出 deadlock 的四個必要條件,再比較 detection、prevention 與 lock ranking;實務上最常破壞 circular wait,但代價是所有模組必須遵守同一個全域順序。
第 8 講從 FIFO、round robin 與不可實作的 SRPT,推到自適應 priority queues、BSD scheduler,再處理多核心 queue contention、core affinity 與 work-conserving 的衝突。
第 9 講沿著 source→assembly→object→executable→process,拆解 linker 的三次掃描、symbol relocation,以及 dynamic loader 如何用 jump table 把 shared library 位址延後到啟動時解決。
第 10 講從 stack 的可預測 LIFO,推到 heap 的 free lists、first/best fit 與 slabs,再比較 reference counting 和 mark-and-sweep 如何在 dangling pointers、leaks、cycles、fragmentation 間取捨。
第 11 講的官方 PDF 與 Lecture 10 逐位元組相同;本文誠實保留此 artifact 缺口,聚焦後半的 reachability、dangling pointers、leaks、reference-count cycles 與 mark/compact GC。
第 12 講把 trust 定義為自願承受 vulnerability,區分 over-trust 與 untrustworthiness,再用 assumption、inference、substitution 分析 Linux TCB、xz attack 與 AI code policy。
第 13 講從 single-tasking 與 load-time relocation 的失敗出發,以 MMU 的 base/bound 建立 virtual/physical address spaces、透明隔離與 traps,再用 segmentation 解開單一連續區域的限制。
Lecture 14 的官方 PDF 與 Lecture 13 逐位元組相同;本文明示此缺口,聚焦 segmentation 如何以多組 base/bound/protection 支援 growth、sharing、compaction,以及 fixed-count、fragmentation、rigid layout 限制。
第 15 講以固定大小 pages 消除跨 process external fragmentation,再拆解 x86-64 四層 page-table walk、sharing/aliasing 與 TLB,說明 translation speed、table sparsity、context switch 和 page size 的連動取捨。
Demand paging 只在需要時載入頁面;present bit、精確例外與可重啟指令讓核心能從 executable、zero-fill 或 backing store 安全補頁。
第 17 講把 demand paging 分成 fetching 與 replacement:MIN 無法預知未來,精確 LRU 成本過高,Clock 只靠 reference/dirty bits 找夠舊的 page;active working sets 放不進 RAM 時,1% fault rate 就可能帶來約 1,000 倍 slowdown。
磁碟把機械式 seek 與 rotation 隱藏成線性 block API;現代 I/O 再用 memory-mapped registers、DMA queues 與 interrupts,讓 CPU 只負責下命令和收完成通知。
檔案系統把耐久 byte collection 映射到磁碟 blocks;contiguous、linked 與 FAT 分別交換 locality、成長彈性、random access 與 metadata 成本。
4.3BSD inode 用 direct、single-indirect 與 double-indirect pointers 讓 lookup depth 隨檔案大小分級;FIFO、SPTF、SCAN 與 CSCAN 則交換 seek cost、公平性與等待時間。
Block cache 把熱索引留在 DRAM,bitmap 與保留空間維持配置選擇,fragments 和 delayed allocation 則用較晚、較完整的資訊換取 locality。
Directory 把文字名稱映射到 file-system-local i-number;hard link 共享 inode 與 reference count,symbolic link 則保存 pathname,換得跨檔案系統能力但可能形成 loop 或 dangling link。
檔案系統一次操作會改動多個 block,崩潰卻可能發生在任兩次寫入之間;本講比較 fsck、ordered writes 與 write-ahead logging 如何交換復原時間、效能、耐久性與一致性。
第 24 講從 WAL 入口往下拆 transaction、idempotent replay 與 checkpoint,說明一致性不等於 durability,journal 也不能取代 fsync 與備份。
第 25 講把 trust 拆成假設、推論與替代三種建立方式,再檢視社群推薦、生成式 AI 與合成媒體如何放大過度信任;實務答案是保留來源、交叉驗證並協調責任。
Flash 只能逐頁 program、整個 erase unit 清除;FTL 以 out-of-place mapping 隱藏不對稱,再用 garbage collection、temperature segregation、wear leveling 與 TRIM 管理放大成本。
VM 把 process interface 擴成完整硬體介面;hypervisor 讓普通指令直接執行、攔截 privileged operations,並虛擬化 interrupts、I/O 與兩層位址轉譯。
第 28 講把整學期收斂成並行、記憶體、儲存三條主線,再用 virtualization、atomicity、locality、layering 四個觀念解釋作業系統如何管理共享資源。
CS124 是 Stanford NLP 分支的第一門課,教科書是 Jurafsky 自己免費放在網路上的《Speech and Language Processing》,九個作業 repo 全部公開。但課程網站首頁掛著一行公告:2026–27 學年整年不開。而且那份課綱指定的章號,已經跟 2026 年 8 月版的教科書對不上了。
CS221 把 AI 排成一條軸:反射式模型(也就是深度學習)在最低階那一格,往上是狀態、變數、邏輯。2025 年秋季 Percy Liang 接手後把講義換成可執行的 Python,並在第一堂的原始碼裡寫下『Cut constraint satisfaction problems :(』——但 ExploreCourses 與 Stanford Online 兩個官方頁面到現在還把約束滿足列為課程主題。專案已經從 2019 年的兩成成績掉到只剩加分。
CS224N 把 2000 年以來每一屆的課程網站都留在線上。2019 冬季那版,Transformer 是第 14 堂的客座講題;2026 冬季那版,它是第 5 堂,之後每一堂都預設你已經懂它。機器翻譯作業整個消失了,第三份作業改成自己刻一個 decoder-only Transformer,附 pytest 可以在筆電上跑。
CS224U 的教材不是投影片,是一個 Apache-2.0 的 GitHub repo,講義、作業、評分文件全在裡面。但校內班從 2023 年春季之後連停三個學年,ExploreCourses 把它排回 2026-27 春季;官方課程描述至今仍列著 relation extraction 與 semantic parsing,2023 年的講次表一堂都沒有。第一份作業的資料載入 cell 在今天的新環境會卡在 Hugging Face 的相容性改動上。
CS224V 的課名在 2026-2027 學年才從 Conversational Virtual Assistants 換成 Agentic AI,但底下的東西沒換:把自然語言翻成形式語意、用 SMT 與知識圖譜約束 agent,而不是拼框架。閱讀清單十一篇 Mandatory 裡,七篇出自授課者自己的實驗室。投影片全公開,課程網站卻明講它們是刻意殘缺的。
CS224W 的六份 Colab 現在全部可以直接下載開跑,第一份只用 NetworkX,連 PyG 都不用裝。但期末考佔 35%,是全課最大一塊,而它是閉書實體考。公開錄影停在 2021 年,涵蓋不到現在課表後半的 graph transformer、關聯式深度學習與 LLM+GNN。
CS228 的官方先修就一句『basic probability theory and algorithm design and analysis』,沒有指定任何前置課程。但 ExploreCourses 顯示它最後一次開課是 Winter 2024,下一次排在 2026-27 冬季、講師欄還空著。自學者真正拿得到的是那份公開講義 cs228-notes:16 章寫完,最後一次改動停在 2025 年 6 月。
CS229 的自學三件套不在同一個時鐘上:講義 278 頁、2026 年 8 月才重編過;公開拿得到的作業是 2020 年夏季那批;Stanford Online 叫你入學前先做的自測題,PDF 建立於 2008 年。2026 春季錄影公開 17 支,最後三支的標題跟內容對不上。
CS329Z 是 Stanford 2026 年秋季新開的三學分 agent 工程課,第一份作業要求先用 litellm 從零刻出 RAG、工具呼叫與 ReAct 迴圈,再用 DSPy 把同一批元件重寫一次並交出對照。課程網站架在公開的 GitHub repo 上,commit 紀錄顯示 8 月中作業從三份砍成兩份,被砍掉的那份是「Data for Agents」。
CS336 的十七堂正課裡,只有九堂是可以執行的 Python 程式,另外八堂是 PDF 投影片——分界線剛好是兩位授課者。第一份作業的講義有八個「低資源提示」教你怎麼在筆電上做完,第二到第五份一個都沒有。課程頁自己列了 B200 的每小時單價,作業講義自己列了每題要幾個 B200 小時。
CS103 前半教怎麼寫證明、後半教什麼證不出來,但外界最少提到的是它有 C++ 程式作業:PS0 就是裝 Qt Creator。它的真正資產是一整排自製的『Guide to X』講義與一份會拿來扣分的 Proofwriting Checklist,全部公開;解答與練習考題全部鎖在 Stanford 登入後面,而且鎖的理由寫在 Honor Code 裡。
CS107 從 Unix 與 C 一路做到 x86-64 與自己寫 malloc,七份作業。但翻四個學期的封存 syllabus 會發現同一門課差很多:作業在三個學期占 40%,在 Summer 2026 只占 20%(多了 40% 的隨堂小考);重交政策只出現在 Cain 開的學期,Troccoli 那學期完全沒有。唯一不收遲交的是最後那份 heap allocator。而擋住自學者的不是評分器,是起始碼全在 AFS 上。
CS109 在 2026 年夏季的每一講旁邊,掛了一份官方寫的 LLM Learning Guide——六個概念、每個概念一組 Learn 與 Test me 提示詞,逐週產出共 23 份 PDF。同一門課的榮譽守則第 4 條卻明文禁止拿 LLM 解作業,而成績有 65% 壓在現場考試。這兩件事是同一套設計的兩半。
CS111 的九份作業從 lambda 一路做到日誌式檔案系統的崩潰復原,但把官網逐頁讀完會看到三件課綱不寫的事:第三份作業是分水嶺,因為第四份會直接編譯你第三份的程式碼;期末考有一整塊在考倫理學名詞,公開的練習卷連解答都在;還有,把自己的程式碼貼給 AI 問問題,這門課白紙黑字寫成違反榮譽準則。
CS161 第一堂投影片寫下的課程目標有三個:設計、分析、溝通。第三個才是作業不准手寫、要求寫得像給同事的備忘錄的原因。八份作業裡 HW2 是分水嶺,講義的 Python notebook 用來示範「量時間看不出誰比較快」,而暑期班是同課號、同課名、完全另寫一套的另一門課。
把兩個 n 位數各切成兩半,直覺分治仍要做 4 個子乘法,時間沒有離開 n²;Karatsuba 用 (a+b)(c+d)-ac-bd 算交叉項,把分支降到 3,得到約 n^1.585 的成長率。
第二講把「快」拆成可證明的最壞情況上界:InsertionSort 用迴圈不變量證正確、最壞為 n²;MergeSort 用遞迴不變量與每層 O(n) 的遞迴樹,得到 O(n log n)。
對 T(n)=aT(n/b)+O(n^d),真正的比較是分支成長 a 與單題工作縮小 b^d:a=b^d 時每層同重,a<b^d 時頂層主導,a>b^d 時葉層主導;不合模板就改用 substitution。
Selection 不必先排序。Median of medians 每 5 個元素取中位數,再取這些中位數的中位數作 pivot,保證較大的遞迴側至多 7n/10+5;用 substitution 可證 worst-case O(n)。
Randomized QuickSort 對每個固定輸入都有 O(n log n) 期望時間,但最壞仍是 Θ(n²);正確證明不是把期望子問題大小代入 recurrence,而是計算每對元素被比較的機率。
Ω(n log n) 只限制 comparison sorting。若整數 key 可直接索引 bucket,stable Counting Sort 可作為 Radix Sort 的內層;在 M≤n^c 等條件下能達 O(n)。
一般 BST 的操作成本是 O(h),偏斜時會退化成 O(n);紅黑樹用五條顏色不變量把高度限制在 2 log₂(n+1),因此搜尋、插入與刪除都有最壞 O(log n) 保證。
Universal hash family 只需讓任意兩個不同 key 的碰撞機率不超過 1/n,就能把某個 key 所在 bucket 的期望長度壓到 2 以下;這給的是 expected O(1),不是每次操作的最壞 O(1)。
DFS 與 BFS 都在 adjacency list 上以 O(n+m) 掃完整張圖;DFS finish times 能為 DAG 產生拓撲順序,BFS layers 則精確等於無權圖的最短距離。
把每個 SCC 壓成一點後一定得到 DAG;第一趟 DFS 的 finish times 排出這些分量,第二趟在轉置圖按遞減順序搜尋,每棵 DFS tree 恰好是一個 SCC,總時間 O(n+m)。
Dijkstra 每次確定最小 estimate,正確性依賴非負 edge weights;Bellman–Ford 不挑 vertex、反覆鬆弛所有 edges,以 O(nm) 換取負權支援並能偵測 source 可達的負環。
動態規劃先精確定義子問題,再用 optimal substructure 寫 recurrence,最後依相依順序填表;Bellman–Ford 以 edge 數分層,Floyd–Warshall 則以允許的中繼頂點分層。
Lecture 13 把動態規劃整理成五步:選 state、寫 transition、填表、回復解、再優化實作。LCS 是 O(mn),兩種背包都是 O(nW) 的擬多項式時間,樹上最大權重獨立集則能在 O(|V|) 完成。
貪婪演算法不是『每次挑看起來最好的』,而是每次只保留一個選擇,並用交換論證證明它不會排除最佳解。Lecture 14 以 activity selection、weighted completion time 與 Huffman coding 展示三種證明。
MST 的核心不是背兩支演算法,而是維持『目前選邊仍包含於某棵 MST』,再用 cut property 證明 Prim 與 Kruskal 每一步都安全。
Ford–Fulkerson 在殘餘網路沿 augmenting path 推流;找不到路時,可達集合形成與 flow 同值的 cut,同時證明最大流、最小割與兩者相等。
Deferred Acceptance 允許暫時接受後再反悔;proposal 的單調性證明它在 O(n²) 結束、產生 stable matching,且偏向 proposal 的一側。
期末課以 slides 回顧 CS161 工具箱,再用 LP duality、Reed–Solomon 與 ML-assisted algorithms 指向後續方向;官方沒有提供 notes。
Stanford CS 的骨架是 CS103、CS107、CS109、CS111、CS161;CS221 先修列出其中三門,另加 CS106B。本文依官方先修與編輯者建議順序排出主線,並標明公開教材與停開風險。