[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-student-code-worked-example-generation-zh":3,"article-related-student-code-worked-example-generation-zh":26,"series-research-a75d84ee-f8d6-4dd8-89af-b68b02d98485":69},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":11,"views":23,"created_at":24,"published_at":25,"topic_cluster_id":11},"a75d84ee-f8d6-4dd8-89af-b68b02d98485","student-code-worked-example-generation-zh","把學生程式碼變成範例","\u003Cp>自適應程式學習常見的做法，是先準備一批固定的範例與練習題，再讓系統依照學生程度去挑內容。問題是，學生真正卡住的地方，往往不是課本上那幾種標準錯誤，而是更零碎、更接近半成品的程式邏輯。這篇論文 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2604.24758\">Personalized Worked Example Generation from Student Code Submissions using Pattern-based Knowledge Components\u003C\u002Fa>，想處理的就是這個落差：能不能直接從學生提交的程式碼裡，抓出反覆出現的模式，拿來生成更對味的 worked examples。\u003C\u002Fp>\u003Cp>對做教育產品或程式教學工具的開發者來說，這個方向很實際。因為如果系統能看出學生到底暴露了哪一類誤解，就不必只給一份泛用解答，而是可以把說明做得更貼近當下的錯法。這篇摘要沒有把它包裝成已經完成的商用方案，也沒有宣稱能解決所有教學問題；它比較像是一條清楚的技術路線，先把方法搭起來，再用專家評估看這條路有沒有機會走通。\u003C\u002Fp>\u003Ch2>這篇論文在補哪個洞\u003C\u002Fh2>\u003Cp>論文要解的痛點，是靜態教材庫跟真實學生程式碼之間的落差。程式教育裡，老師或平台常常依賴預先寫好的 worked examples、範例解答、練習題。這些內容當然有用，但它們的覆蓋範圍有限。學生在練習時冒出來的錯誤，常常不是剛好落在教材庫裡那幾個模板上。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777356239172-wzef.png\" alt=\"把學生程式碼變成範例\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>於是就出現兩種代價。第一種，是老師得花很多時間一直補內容庫。第二種，是系統只能做很粗的個人化，給出跟學生當下問題只有大方向相關的材料。論文認為，這樣的做法對「直接處理學生的邏輯錯誤與部分解法」特別不夠力，因為學習者真正需要的，往往不是標準答案本身，而是跟自己錯誤型態相對應的引導。\u003C\u002Fp>\u003Cp>作者把這件事定義成 knowledge component，也就是知識元件或技能元件的問題。概念很簡單：如果你能從學生提交中辨認出背後代表的技能、模式或誤解，就可以把這個訊號拿去驅動內容生成。這篇工作要補的，就是「如何把學生程式碼變成可用的個人化訊號」這個缺口。\u003C\u002Fp>\u003Ch2>方法是怎麼運作的\u003C\u002Fh2>\u003Cp>這篇論文的做法，不是直接丟一段學生程式碼給模型，叫它自由發揮。它先走一個結構化流程。起點是一個題目，外加一批學生提交。接著系統會用 AST-based analysis，也就是抽象語法樹分析，去看程式的結構，而不是只看表面文字。\u003C\u002Fp>\u003Cp>這一步很重要，因為程式碼的錯誤常常藏在結構裡。單看字串，你可能只知道學生寫了哪些變數、哪些函式；但 AST 能讓系統看出語法層級上的模式。論文就是利用這種結構資訊，去找出學生提交裡反覆出現的程式模式。\u003C\u002Fp>\u003Cp>這些被抽出來的模式，接著會被當成 pattern-based knowledge components，簡稱 KC。白話一點說，系統不是只判斷「這份作業對不對」，而是試著推回去：這份作業反映的是哪一種程式觀念、哪一種常見誤解、或哪一種半完成的解法。然後，這些 KC 會被拿去當作生成條件，去引導生成式模型產出 worked examples。\u003C\u002Fp>\u003Cp>這裡的重點是「先分析，再生成」。也就是先用結構化方法把學生行為轉成可操作的訊號，再讓模型根據這些訊號生成教學內容。這比單純做自由生成更容易理解，也更容易控制方向。論文的目標也很明確：不是做所有教育內容，而是聚焦在 worked example generation。這個選擇合理，因為 worked examples 本來就是程式教學裡很常見的材料，也很適合測試這種 KC 導向的生成方式到底有沒有用。\u003C\u002Fp>\u003Cp>從實作角度看，這代表系統的關鍵不只在生成模型本身，而是在前面的特徵抽取。也就是說，模型不是憑空讀心，而是先靠 AST 把學生程式碼裡的結構訊號整理出來，再把這些訊號餵給生成端。這種設計比較像「受約束的生成」，而不是完全開放式的文本生成。\u003C\u002Fp>\u003Ch2>論文實際證明了什麼\u003C\u002Fh2>\u003Cp>摘要裡提到，作者是把 basel\u003Ca href=\"\u002Fnews\u002Fwhy-tinygo-041-proves-tinygo-is-ready-for-real-hardware-work-zh\">in\u003C\u002Fa>e 輸出跟 KC-conditioned 輸出做比較，而且是透過 expert evaluation，也就是專家評估來看結果。根據摘要的描述，加入 KC 條件之後，生成出的內容在 topical focus 和 relevance 上，似乎更貼近學習者的底層邏輯錯誤。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777356242231-nrkd.png\" alt=\"把學生程式碼變成範例\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這個結果的意思很直接：如果你把學生程式碼裡的模式先抽出來，再讓模型根據這些模式生成 worked examples，那內容就比較不會飄掉，會更對準學生正在犯的那種錯。對教學系統來說，這種「對題」其實很重要，因為一份再流暢的解答，如果沒有碰到學生真正卡住的點，教育效果還是會很有限。\u003C\u002Fp>\u003Cp>不過，這裡也要講清楚一件事：摘要沒有公開完整 benchmark 細節。沒有看到數字、沒有看到準確率、沒有看到勝率，也沒有看到明確的效應量。換句話說，這篇摘要能支持我們說「專家評估覺得 KC-conditioned 版本比較對焦」，但還不能拿它來下更強的量化結論。\u003C\u002Fp>\u003Cp>即便如此，論文的立場其實算很克制。它不是在說這套方法已經證明能全面提升所有程式教育場景，而是說這個方向有證據顯示可行，值得繼續做下去。對研究型工作來說，這種說法比過度包裝更可信，也比較符合目前摘要所能支持的範圍。\u003C\u002Fp>\u003Cp>如果把這篇工作的價值濃縮成一句話，就是：它把「學生的錯法」變成了「生成的條件」。這個轉換本身，才是最核心的貢獻。\u003C\u002Fp>\u003Ch2>對開發者有什麼啟發\u003C\u002Fh2>\u003Cp>如果你在做學習平台、程式助教、線上評測系統，這篇論文提供了一個很實用的設計模式：把程式分析跟生成式模型接起來。AST-based analysis 讓你可以先從學生提交裡抓出結構訊號，再把這些訊號轉成 knowledge components，最後用來引導內容生成。這樣一來，模型不只是看題目，而是也看到了學生實際表現出來的解題方式。\u003C\u002Fp>\u003Cp>這對教育產品很重要，因為個人化很難純手工擴張。你可以寫很多 worked examples，但你永遠不可能預先寫完所有學生會犯的錯。把學生提交本身當成訊號來源，等於把真實學習行為重新利用起來，變成內容生成的素材。這比單純維護一個靜態教材庫，更有機會跟上學生的變化。\u003C\u002Fp>\u003Cp>另外，這篇工作也提醒開發者一件事：生成式模型最好搭配結構化上下文一起用。只靠 prompt，模型很容易輸出看起來順、但不夠對焦的內容；加上 code pattern 和 KC 之後，生成方向會更明確。對產品設計來說，這是很典型的「先約束，再生成」思路。\u003C\u002Fp>\u003Cp>如果你要把這個方向落地，至少可以先記住四件事：\u003C\u002Fp>\u003Cul>\u003Cli>先用 AST 去找學生程式碼的結構模式。\u003C\u002Fli>\u003Cli>把重複出現的模式整理成 knowledge components。\u003C\u002Fli>\u003Cli>生成時不要只餵題目，也要餵 KC 訊號。\u003C\u002Fli>\u003Cli>評估時不要只看語句順不順，也要看內容是否真的對準學生錯誤。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>限制與還沒回答的問題\u003C\u002Fh2>\u003Cp>這篇摘要最明顯的限制，就是評估資訊不夠完整。作者有提到 expert evaluation，也有提到 KC-conditioned outputs 比 base\u003Ca href=\"\u002Fnews\u002Fwhy-julia-to-webassembly-is-finally-worth-taking-seriously-zh\">li\u003C\u002Fa>ne 更對焦，但摘要沒有展開研究規模、沒有列出完整 benchmark，也沒有提供數字化結果。這讓外部讀者很難判斷結果在不同題型、不同學生族群、或不同課程內容上是否都一樣穩定。\u003C\u002Fp>\u003Cp>另一個未解問題，是 pattern extr\u003Ca href=\"\u002Fnews\u002Fai-face-swapper-2026-github-tool-review-zh\">ac\u003C\u002Fa>tion 的泛化能力。AST-based analysis 的確適合抓結構訊號，但學生程式碼常常很亂、很不完整，也可能充滿臨時拼湊的寫法。摘要沒有說明這些噪聲怎麼處理，也沒有說明 KC 的抽取在不同程式任務上是否一致。這會直接影響方法能不能真正擴到更大的教學場景。\u003C\u002Fp>\u003Cp>還有一個實務上的提醒：相關，不等於真的教得好。就算生成出來的 worked example 很貼近某個錯法，它也可能因為太局部、太針對單一錯誤，而忽略了更重要的概念說明。摘要沒有討論這些教學上的取捨，所以目前只能說它在「內容對焦」上有潛力，不能直接推論成完整的教學效果。\u003C\u002Fp>\u003Cp>但即便有這些限制，這篇論文的方向還是值得注意。它沒有把重點放在炫技式生成，而是放在更好的 conditioning，也就是怎麼讓模型知道該往哪裡生成。對很多教育工具來說，真正有價值的往往不是模型能不能講一大段，而是能不能剛好講到學生現在最需要的那一段。\u003C\u002Fp>\u003Cp>總結來看，這篇工作比較像是一個務實的起點：先證明學生程式碼中的模式，可以被轉成有意義的 knowledge components，再用這些訊號去推動 worked example 生成。若後續研究能補上更完整的量化評估，這種 KC-guided 的做法，確實有機會變成程式教育工具裡很有用的一層個人化機制。\u003C\u002Fp>","這篇論文用 AST 抽出學生程式碼中的模式，當作知識元件去引導生成式模型，做出更貼近學習錯誤的 worked examples。","arxiv.org","https:\u002F\u002Farxiv.org\u002Fabs\u002F2604.24758",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777356239172-wzef.png","research","zh","35dfba89-06d3-4fa4-8309-dd6b75802185",[17,18,19,20,21,22],"worked example generation","knowledge components","AST analysis","programming education","student code","personalization",2,"2026-04-28T06:03:43.418791+00:00","2026-04-28T06:03:43.13+00:00",{"tags":27,"relatedLang":28,"relatedPosts":32},[],{"id":15,"slug":29,"title":30,"language":31},"student-code-worked-example-generation-en","Turning student code into worked examples","en",[33,39,45,51,57,63],{"id":34,"slug":35,"title":36,"cover_image":37,"image_url":37,"created_at":38,"category":13},"d6f25c66-98f5-4971-8d1d-487fb5fe1881","claude-sonnet-46-sre-benchmark-rootly-zh","Claude Sonnet 4.6 對上 SRE 工作更接近 Opus","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782750780131-xelc.png","2026-06-29T16:32:28.457338+00:00",{"id":40,"slug":41,"title":42,"cover_image":43,"image_url":43,"created_at":44,"category":13},"29321237-6e9a-4271-b9fb-e43e798d5dff","glm-52-beats-claude-semgrep-idor-test-zh","GLM 5.2 在 IDOR 測試贏過 Claude","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782749882713-7i5n.png","2026-06-29T16:17:31.911487+00:00",{"id":46,"slug":47,"title":48,"cover_image":49,"image_url":49,"created_at":50,"category":13},"5172bfc7-34c8-4477-a177-ffa615497ecf","opd-distillation-skills-without-bruteforce-rl-zh","OPD 讓你把技能蒸餾進模型","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782730101413-5wjx.png","2026-06-29T10:47:57.457072+00:00",{"id":52,"slug":53,"title":54,"cover_image":55,"image_url":55,"created_at":56,"category":13},"6f5be102-5764-44f1-ab3f-722fc5c32c23","google-deepmind-turns-science-into-tools-zh","Google DeepMind把AI變研究工具","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782721105628-g4op.png","2026-06-29T08:17:57.716568+00:00",{"id":58,"slug":59,"title":60,"cover_image":61,"image_url":61,"created_at":62,"category":13},"c649adb7-c8ae-4ade-a092-2c0d53beeb71","measuring-llm-behavior-portability-zh","LLM 行為不一定可移植","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782717472977-na8g.png","2026-06-29T07:17:29.597679+00:00",{"id":64,"slug":65,"title":66,"cover_image":67,"image_url":67,"created_at":68,"category":13},"637c3016-e364-4bfe-904e-5e60a18ed678","prompt-injection-ai-security-problem-zh","Prompt injection 已是 AI 資安問題","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782716580916-m1nm.png","2026-06-29T07:02:36.173749+00:00",[70,75,80,85,90,95,100,105,110,115],{"id":71,"slug":72,"title":73,"created_at":74},"f18dbadb-8c59-4723-84a4-6ad22746c77a","deepmind-bets-on-continuous-learning-ai-2026-zh","DeepMind 押注 2026 連續學習 AI","2026-03-26T08:16:02.367355+00:00",{"id":76,"slug":77,"title":78,"created_at":79},"f4a106cb-02a6-4508-8f39-9720a0a93cee","ml-papers-of-the-week-github-research-desk-zh","每週 ML 論文清單，為何紅到 GitHub","2026-03-27T01:11:39.284175+00:00",{"id":81,"slug":82,"title":83,"created_at":84},"c4f807ca-4e5f-47f1-a48c-961cf3fc44dc","ai-ml-conferences-to-watch-in-2026-zh","2026 AI 研討會投稿時程整理","2026-03-27T01:51:53.874432+00:00",{"id":86,"slug":87,"title":88,"created_at":89},"cf046742-efb2-4753-aef9-caed5da5e32e","adaptive-block-scaled-data-types-zh","IF4：神經網路量化的聰明選擇","2026-03-31T06:00:36.990273+00:00",{"id":91,"slug":92,"title":93,"created_at":94},"53a0dc54-0371-4e40-8d5e-74e94a73840c","geometry-aware-similarity-metrics-for-neural-representations-zh","超越距離測量：用微分幾何重新理解神經網路","2026-03-31T06:01:01.241968+00:00",{"id":96,"slug":97,"title":98,"created_at":99},"fee7d472-a775-4b1d-bbc2-1e8bca1bbf8b","on-the-fly-repulsion-in-the-contextual-space-for-rich-divers-zh","讓AI繪圖更有創意：用排斥力提升生成多樣性","2026-03-31T06:01:25.439673+00:00",{"id":101,"slug":102,"title":103,"created_at":104},"a9901203-d69b-447b-8854-15d14eab32b4","vision-aided-beam-prediction-cnn-eca-zh","影像輔助波束預測升級 CNN","2026-04-01T10:00:25.8073+00:00",{"id":106,"slug":107,"title":108,"created_at":109},"b55e7dd4-0a24-4b3d-804d-b0309a03f498","triple-band-fss-mimo-antenna-sub-6-ghz-zh","三頻 FSS MIMO 天線瞄準 sub-6 GHz","2026-04-01T13:18:36.857305+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"f68290bd-e7f3-4b30-ba22-dcd4e0130a66","openclaw-1299-repos-eight-weeks-analysis-zh","OpenClaw 1299 個 Repo 的資料解讀","2026-04-02T05:03:45.208411+00:00",{"id":116,"slug":117,"title":118,"created_at":119},"ed9f80eb-eb02-4d35-8ad4-0ddf428751dd","beam-coherence-aware-combining-mmwave-mimo-zh","毫米波 MIMO 的雙階合併法","2026-04-02T05:27:26.897188+00:00"]