{ "course_id": "2026Fall", "title": "2026 Fall 進階專題", "demo_class": "2026Fall進階專題日午", "weeks": [ { "id": "week01", "lesson": 1, "title": "任務管理器開發挑戰", "project": "能力診斷", "output": "文字版任務管理器", "template": true }, { "id": "week02", "lesson": 2, "title": "消失的校徽", "project": "校園謎案調查局", "output": "探索地點與收集線索的文字案件", "workspace_id": "week02", "template": true }, { "id": "week03", "lesson": 3, "title": "線索會改變世界", "project": "校園謎案調查局", "output": "在原案件加入條件解鎖、證詞變化與多結局", "workspace_id": "week02", "template": false }, { "id": "week04", "lesson": 4, "title": "案件體驗升級", "project": "校園謎案調查局", "output": "在原案件完成互動、提示、測試與修正", "workspace_id": "week02", "template": false }, { "id": "week05", "lesson": 5, "title": "案件發布日", "project": "校園謎案調查局", "output": "原創短案件與線上展示", "template": false }, { "id": "week06", "lesson": 6, "title": "領養一顆神祕蛋", "project": "電子寵物進化實驗室", "output": "可餵食、玩耍、休息的寵物原型", "template": false }, { "id": "week07", "lesson": 7, "title": "寵物真的活起來", "project": "電子寵物進化實驗室", "output": "class 與 object 寵物", "template": false }, { "id": "week08", "lesson": 8, "title": "你的選擇決定牠的進化", "project": "電子寵物進化實驗室", "output": "三條進化路線", "template": false }, { "id": "week09", "lesson": 9, "title": "寵物小屋與圖鑑", "project": "電子寵物進化實驗室", "output": "動畫、存檔與圖鑑", "template": false }, { "id": "week10", "lesson": 10, "title": "進化博覽會", "project": "電子寵物進化實驗室", "output": "可重新遊玩的完成版", "template": false }, { "id": "week11", "lesson": 11, "title": "用亂數畫出第一件作品", "project": "生成藝術玩具箱", "output": "亂數生成畫面", "template": false }, { "id": "week12", "lesson": 12, "title": "對稱、重複與規則之美", "project": "生成藝術玩具箱", "output": "萬花筒或魔法陣", "template": false }, { "id": "week13", "lesson": 13, "title": "讓作品動起來", "project": "生成藝術玩具箱", "output": "粒子與軌跡動畫", "template": false }, { "id": "week14", "lesson": 14, "title": "做成一台真的藝術機器", "project": "生成藝術玩具箱", "output": "參數、seed 與圖片匯出", "template": false }, { "id": "week15", "lesson": 15, "title": "班級數位藝廊", "project": "生成藝術玩具箱", "output": "系列作品與線上展示", "template": false }, { "id": "week16", "lesson": 16, "title": "Director's Cut 重製計畫", "project": "精選作品重製", "output": "選題與改進承諾", "template": false }, { "id": "week17", "lesson": 17, "title": "Release Candidate", "project": "精選作品重製", "output": "通過驗收的上架版", "template": false }, { "id": "week18", "lesson": 18, "title": "Demo Day", "project": "精選作品重製", "output": "線上作品、展示稿與回顧", "template": false }, { "id": "week19", "lesson": 19, "title": "資料分析 I:公開資料與問題", "project": "公開資料分析", "output": "從公開資料選定自己的問題,能執行查詢並指出答案在哪個欄位。", "workspace_id": "week19", "template": true, "guide": { "goal": "從公開資料選定自己的問題,能執行查詢並指出答案在哪個欄位。", "source_title": "教育部統計處|各級學校縣市別學生人數", "source_url": "https://data.gov.tw/dataset/40121", "source_note": "四週使用同一份課堂 CSV:104–114 學年度、22 個縣市、242 筆資料、15 個欄位。檔案已附在 week19 專案。", "flow": [ { "time": "0–20 分", "title": "公開資料", "body": "看三筆實際學生人數紀錄,確認年份、縣市與人數欄位。" }, { "time": "20–40 分", "title": "下載與 CSV", "body": "到官方頁面看 CSV 下載位置,確認課堂檔案在 data/students_by_county.csv,讀懂標題列。" }, { "time": "40–50 分", "title": "選一個問題", "body": "各自選定縣市、學年度與教育階段,寫下要比較什麼。" }, { "time": "50–60 分", "title": "休息", "body": "保存目前內容,休息 10 分鐘。" }, { "time": "60–80 分", "title": "讀取並執行", "body": "看 load_rows() 的用途,執行 main.py,核對讀入 242 筆資料與範例人數。" }, { "time": "80–95 分", "title": "修改條件", "body": "改查 114 學年度國中人數,核對前 3 名,再換成自己的條件。" }, { "time": "95–105 分", "title": "AI 與欄位", "body": "請 AI 指出題目所需欄位,到 CSV 檢查它是否存在。" }, { "time": "105–120 分", "title": "保存個人進度", "body": "把題目、來源與一個核對過的數字寫進 REPORT.md,存檔並提交。" } ], "checklist": [ "問題寫明年份、縣市或教育階段", "資料名稱與官方網址已記錄", "main.py 可以執行", "至少在 CSV 找到一筆輸出的人數" ], "ai_checkpoint": "把自己的題目和 CSV 欄位名稱交給 AI,請它指出所需欄位,再到原始表格確認。", "submission": "問題寫明年份、縣市或教育階段、資料名稱與官方網址已記錄、main.py 可以執行、至少在 CSV 找到一筆輸出的人數", "ai_note": "每人各自完成。允許使用外部 AI,保留實際使用與核對紀錄;沒有使用就如實註明。", "question_bank": [ { "group": "起步題", "text": "114 學年度,哪些縣市的國小學生人數最多?" }, { "group": "起步題", "text": "選一個縣市,104 到 114 學年度的國小學生人數是增加還是減少?" }, { "group": "起步題", "text": "104 到 114 學年度,哪個縣市的國小學生人數變化最多?" }, { "group": "起步題", "text": "114 學年度,選一個縣市,國小和國中學生人數差多少?" }, { "group": "挑戰題", "text": "選一個縣市,哪兩個學年度的國中學生人數最多和最少?" }, { "group": "挑戰題", "text": "114 學年度,哪個縣市的高中普通科學生人數最多?" }, { "group": "挑戰題", "text": "104 到 114 學年度,哪個縣市的大專校院校本部學生人數變化比例最大?" }, { "group": "挑戰題", "text": "114 學年度,哪個縣市的幼兒園與國小學生人數差距最大?" } ], "question_rules": [ "先挑一個數值欄,再加上一個學年度、縣市或教育階段作為比較條件。", "問「多少、哪個較多、差多少、如何變化」;不要讓這張表替你猜原因或預測未來。", "自訂資料使用公開、彙總的 CSV,留下來源、時間範圍、欄位和單位,不匯入個人資料。" ] } }, { "id": "week20", "lesson": 20, "title": "資料分析 II:資料整理", "project": "公開資料分析", "output": "讀懂數字轉換與未知值的處理,實際核對三筆資料。", "workspace_id": "week19", "template": true, "guide": { "goal": "讀懂數字轉換與未知值的處理,實際核對三筆資料。", "source_title": "教育部統計處|各級學校縣市別學生人數", "source_url": "https://data.gov.tw/dataset/40121", "source_note": "四週使用同一份課堂 CSV:104–114 學年度、22 個縣市、242 筆資料、15 個欄位。檔案已附在 week19 專案。", "flow": [ { "time": "0–25 分", "title": "文字與數字", "body": "重跑上週程式,練習文字相加、int()、strip() 與 replace()。" }, { "time": "25–45 分", "title": "0 與未知", "body": "比較 0、空字串與破折號,讀懂 parse_count() 的判斷。" }, { "time": "45–50 分", "title": "測試輸入", "body": "每人測試五種輸入,寫下回傳結果。" }, { "time": "50–60 分", "title": "休息", "body": "保存目前內容,休息 10 分鐘。" }, { "time": "60–75 分", "title": "筆數與重複", "body": "核對 242 筆、15 個欄位,分清不同學年度與真正重複的紀錄。" }, { "time": "75–95 分", "title": "核對三筆", "body": "各自到 CSV 找到三筆查詢結果,記下年份、縣市、欄位和人數。" }, { "time": "95–105 分", "title": "解釋錯誤", "body": "請 AI 解釋 int() 的轉換錯誤,用自己的程式測試一個例子。" }, { "time": "105–120 分", "title": "整理紀錄", "body": "完成資料處理與核對紀錄,重新執行並提交進度;負值檢查為選做題。" } ], "checklist": [ "測試五種字串輸入", "沒有把未知值直接改成 0", "核對三筆結果並記錄條件", "保留原始 CSV,程式可重新執行" ], "ai_checkpoint": "請 AI 解釋 int() 遇到空字串的錯誤,自己測試一個例子並記下回傳結果。", "submission": "測試五種字串輸入、沒有把未知值直接改成 0、核對三筆結果並記錄條件、保留原始 CSV,程式可重新執行", "ai_note": "每人各自完成。允許使用外部 AI,保留實際使用與核對紀錄;沒有使用就如實註明。" } }, { "id": "week21", "lesson": 21, "title": "資料分析 III:比較與圖表", "project": "公開資料分析", "output": "用排名、差值或圖表回答自己的問題,說明計算方式。", "workspace_id": "week19", "template": true, "guide": { "goal": "用排名、差值或圖表回答自己的問題,說明計算方式。", "source_title": "教育部統計處|各級學校縣市別學生人數", "source_url": "https://data.gov.tw/dataset/40121", "source_note": "四週使用同一份課堂 CSV:104–114 學年度、22 個縣市、242 筆資料、15 個欄位。檔案已附在 week19 專案。", "flow": [ { "time": "0–20 分", "title": "人數增減", "body": "先執行 L21 套版;讀檔、數字轉換與查詢函式已備好,不需先完成 L20。核對兩個原始人數,再做新北市示範與臺中市練習。已有專案者先暫存,再決定是否匯入套版。" }, { "time": "20–35 分", "title": "百分比與排名", "body": "說明變化百分比的分母,檢查人數排名;百分比計算可選做。" }, { "time": "35–50 分", "title": "長條圖", "body": "比較表格、圖表和 Console 文字圖,說明標題、單位、來源與從 0 開始的尺度。" }, { "time": "50–60 分", "title": "休息", "body": "保存目前內容,休息 10 分鐘。" }, { "time": "60–75 分", "title": "程式計算", "body": "用 get_count() 取出兩個學年度的人數,再計算差值。" }, { "time": "75–90 分", "title": "修改自己的條件", "body": "把例題的縣市或欄位改成自己的專題條件,核對結果。" }, { "time": "90–100 分", "title": "解釋數字", "body": "分清總數、比例和原因,改寫 AI 加入未證實原因的句子。" }, { "time": "100–120 分", "title": "個人圖表", "body": "完成一張圖或一組數字比較,寫下方法與說明,重新執行並提交。" } ], "checklist": [ "圖表或比較結果回答自己的問題", "有原始數字和計算方式", "圖表寫明學年度、對象、單位和來源", "沒有把人數變化直接寫成原因" ], "ai_checkpoint": "檢查 AI 是否把人數變化寫成原因,找出能從 CSV 核對的部分,改掉缺少證據的說法。", "submission": "圖表或比較結果回答自己的問題、有原始數字和計算方式、圖表寫明學年度、對象、單位和來源、沒有把人數變化直接寫成原因", "ai_note": "每人各自完成。允許使用外部 AI,保留實際使用與核對紀錄;沒有使用就如實註明。" } }, { "id": "week22", "lesson": 22, "title": "資料分析 IV:分析報告", "project": "公開資料分析", "output": "完成個人報告,重新執行專案,親自說明一組數字與資料範圍。", "workspace_id": "week19", "template": false, "guide": { "goal": "完成個人報告,重新執行專案,親自說明一組數字與資料範圍。", "source_title": "教育部統計處|各級學校縣市別學生人數", "source_url": "https://data.gov.tw/dataset/40121", "source_note": "四週使用同一份課堂 CSV:104–114 學年度、22 個縣市、242 筆資料、15 個欄位。檔案已附在 week19 專案。", "flow": [ { "time": "0–15 分", "title": "完整報告範例", "body": "看一份完整短報告,對照自己的 REPORT.md。" }, { "time": "15–30 分", "title": "報告各段", "body": "寫清問題、來源、方法、數字與解釋,練習修正文句。" }, { "time": "30–50 分", "title": "重新執行", "body": "每人重新打開專案,處理路徑、欄位或條件問題,核對報告數字。" }, { "time": "50–60 分", "title": "休息", "body": "保存目前內容,休息 10 分鐘。" }, { "time": "60–65 分", "title": "AI 使用紀錄", "body": "記錄一件實際使用與核對的事;未使用者如實填寫。" }, { "time": "65–85 分", "title": "個人報告", "body": "各自補完來源、方法、結果和資料還不能回答的事。" }, { "time": "85–90 分", "title": "準備分享", "body": "挑一張圖或一組數字,準備個人說明。" }, { "time": "90–115 分", "title": "個人分享", "body": "每人介紹問題、方法與答案,回答一個問題;依人數調整分享長度。" }, { "time": "115–120 分", "title": "提交專題", "body": "存檔,確認報告和程式一致,提交目前版本。" } ], "checklist": [ "REPORT.md 有問題、來源、方法與結果", "程式可重跑,數字與報告一致", "資料檔案與 DATA_SOURCE.md 都在", "能親自說明數字與一段相關程式", "AI 紀錄如實填寫;未使用也可以" ], "ai_checkpoint": "檢查 AI 潤飾是否加入原文沒有的原因,保留確定的年份、對象和數字。", "submission": "REPORT.md 有問題、來源、方法與結果、程式可重跑,數字與報告一致、資料檔案與 DATA_SOURCE.md 都在、能親自說明數字與一段相關程式、AI 紀錄如實填寫;未使用也可以", "ai_note": "每人各自完成。允許使用外部 AI,保留實際使用與核對紀錄;沒有使用就如實註明。" } }, { "id": "week23", "lesson": 23, "title": "拍賣會先玩起來", "project": "荒謬商品拍賣會", "output": "修改一件商品或一條規則,完成一輪可試玩的公開拍賣。", "workspace_id": "week23", "template": true, "guide": { "goal": "修改一件商品或一條規則,完成一輪可試玩的公開拍賣。", "flow": [ { "time": "0–15 分", "title": "先玩一輪", "body": "用 100 枚虛擬幣競標一件荒謬商品。先看得標與流標,再看程式。" }, { "time": "15–60 分", "title": "改出你的版本", "body": "執行套版,改商品、起標或最低加價;找同學測超額與最低價。" }, { "time": "60–120 分", "title": "交換試玩", "body": "兩三人一組輪流主持,挑一個規則解釋 if 如何判斷。" } ], "checklist": [ "能執行並完成一次開標", "同學能玩出自己改的地方", "測過一筆無效出價" ], "submission": "能執行並完成一次開標、同學能玩出自己改的地方、測過一筆無效出價" } }, { "id": "week24", "lesson": 24, "title": "公開與秘密出價對決", "project": "荒謬商品拍賣會", "output": "讓同一商品走完兩種規則,並能解釋成交價從哪裡來。", "workspace_id": "week23", "template": true, "guide": { "goal": "讓同一商品走完兩種規則,並能解釋成交價從哪裡來。", "flow": [ { "time": "0–20 分", "title": "先預測", "body": "同一件商品、買家與預算;先寫下哪一種可能成交較高。" }, { "time": "20–65 分", "title": "兩種玩法", "body": "秘密輪先寫紙條再輸入,公開輪輪流加價。兩輪重新分配虛擬幣。" }, { "time": "65–120 分", "title": "比結果", "body": "比較兩輪成交價,測平手或流標,分享出價時看到了什麼。" } ], "checklist": [ "兩種玩法都可結束", "知道秘密出價不應讓旁人看到", "能解釋一次觀察的限制" ], "submission": "兩種玩法都可結束、知道秘密出價不應讓旁人看到、能解釋一次觀察的限制" } }, { "id": "week25", "lesson": 25, "title": "夥伴試玩", "project": "荒謬商品拍賣會", "output": "完成一個夥伴能自己操作的拍賣展示,並講解一個程式判斷。", "workspace_id": "week23", "template": true, "guide": { "goal": "完成一個夥伴能自己操作的拍賣展示,並講解一個程式判斷。", "flow": [ { "time": "0–20 分", "title": "自己試玩", "body": "用 Console 和三位模擬買家練習,接著打開網頁版。" }, { "time": "20–75 分", "title": "改一個地方", "body": "換商品或模擬買家的出價上限,測空白、超額、正常成交與重新開始。" }, { "time": "75–120 分", "title": "三分鐘展示", "body": "請夥伴完成兩輪,再介紹一條規則與兩根長條,說明模擬與真人的差別。" } ], "checklist": [ "夥伴可以單人完成兩輪", "結果圖以共同尺度表示虛擬幣", "能說出自己改的規則與測試結果" ], "submission": "夥伴可以單人完成兩輪、結果圖以共同尺度表示虛擬幣、能說出自己改的規則與測試結果" } } ] }