diff --git a/README.md b/README.md index f926853..74f6a63 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,22 @@ # MediaSystem-Python-Course -這是一個完整的 Python 程式設計課程資源庫,涵蓋從基礎到進階的各種主題,包括網頁爬蟲、API 開發、資料庫操作、電腦視覺、AI 應用等多元內容。每個主題都附有實作範例,適合配合課程學習使用。 +這是「多媒體系統」課程本身的共用教材庫。同一組可重用的實作素材,依學生背景組成兩條不同的教學路線:日間部從影像、音訊、視訊與互動媒體概念出發;進修部則從 Python 銜接到網路、API 與雲端應用。既有章節路徑會保留,避免舊講義與 Colab 連結失效。 + +> 課程名稱相同,不代表必須共用同一份週次表。請先從下方選擇班別,再依課程地圖進入教材;章節編號是「素材編號」,不是兩班共同進度。 + +## 🧭 選擇你的課程 + +| 教學路線 | 核心問題 | 起點 | 課程地圖 | +|---|---|---|---| +| 日間部四技一年級:媒體素養與實作 | 數位影像、音訊、視訊如何表示、處理並成為互動作品? | 媒體基本概念 | [日間部課程地圖](courses/day/README.md) | +| 進修部一年級:Python、API 與雲端應用 | 程式如何透過網路取得資料、串接服務並部署專題? | Python 程度診斷與銜接 | [進修部課程地圖](courses/evening/README.md) | + +兩班共用的模組、先備能力與分流方式,請見[雙軌課程架構](courses/README.md)。教師可在 HackMD 維護每週公告,本 repository 則作為可執行程式、作業模板與穩定課程地圖的單一來源。 ## 📖 目錄 - [📚 文檔中心](docs/) ⭐ **完整學習資源** +- [🧭 雙軌課程架構](courses/) - 日間部/進修部入口與共用原則 - [🚀 快速啟動指南](docs/QUICKSTART.md) - 各專案快速啟動 - [📖 學習路徑規劃](docs/LEARNING_PATH.md) - 課程學習建議 - [📝 更新日誌](docs/CHANGELOG.md) - 專案更新記錄 diff --git a/courses/README.md b/courses/README.md new file mode 100644 index 0000000..1860f5d --- /dev/null +++ b/courses/README.md @@ -0,0 +1,68 @@ +# 多媒體系統:雙軌課程架構 + +本 repository 採「**一個素材庫、兩條教學路線、共同專題規格**」的方式兼容兩門同名但主軸不同的課程。不要複製整份 repository,也不要強迫兩班依相同章節順序上課。 + +## 課程入口 + +- [日間部四技一年級:媒體素養與實作](day/README.md) +- [進修部一年級:Python、API 與雲端應用](evening/README.md) + +## 三層內容模型 + +| 層級 | 放置內容 | 維護方式 | +|---|---|---| +| 課程層 `courses/` | 班別定位、週次建議、必修/選修、評量與外部講義入口 | 每學期調整課程地圖,不複製教材 | +| 模組層(既有編號目錄) | Notebook、範例程式、實作說明 | 跨班共用;每份教材只有一個來源 | +| 學期層(GitHub Release/tag) | 當學期可重現的教材快照 | 建議使用 `day-YYYY-termN`、`evening-YYYY-termN` 標籤 | + +HackMD 適合即時公告、課堂補充與書本模式導覽;GitHub 適合版本化的程式與作業。HackMD 應連回固定檔案或 tag,避免再貼一份程式碼而產生不同版本。 + +## 共用課程能力 + +兩班採不同入口,但在下列能力會合: + +1. 能說明一項數位媒體或網路資料的格式與限制。 +2. 能用 Python 讀取、轉換並呈現資料或媒體。 +3. 能組合至少一個外部 API、媒體處理或互動介面。 +4. 能以 README 說明來源、授權、執行方法、分工與測試結果。 +5. 能展示一個可重現的分組專題,而不只繳交簡報。 + +## 素材與教學路線對照 + +| 共用模組 | 日間部用途 | 進修部用途 | +|---|---|---| +| [`01.Intro-Python`](../01.Intro-Python/README.md) | 只取操作媒體所需的變數、容器、函式 | 程度診斷後補強 Python 與資料處理 | +| [`02.Gradio`](../02.Gradio/README.md) | 為影音/圖像作品建立互動介面 | 快速製作 API 專題雛形 | +| [`03.Request`](../03.Request/README.md) | 選修:取得網路媒體與 metadata | 必修:HTTP、JSON、Open Data 與 API | +| [`05.Flask`](../05.Flask/README.md) | 選修:發布媒體作品 | 必修:Web service 與 REST API | +| [`08.OpenCV-Mediapipe-DEMO`](../08.OpenCV-Mediapipe-DEMO/readme.md) | 必修/核心實作:影像、視訊、互動 | 選修:電腦視覺專題 | +| [`09.Apps`](../09.Apps/README.md) | QR Code、圖像輸出與小型作品 | API/雲端成果的應用包裝 | +| [`10.sql`](../10.sql/README.md) | 選修:媒體 metadata 管理 | 選修:專題資料持久化 | +| [`11.AI`](../11.AI/README.md) | 選修:生成式媒體的使用與倫理 | 選修:LLM API 整合 | + +## 建議的維護流程 + +1. **保留既有目錄與網址**:目前大量講義可能已連到 `01.Intro-Python` 等路徑;只新增課程地圖,不做破壞性搬移。 +2. **新教材先判斷是否共用**:共用教材放模組層;只有班別說明、週次或評量才放 `courses/day` 或 `courses/evening`。 +3. **以狀態標記範圍**:每條路徑明列「核心、選修、延伸」,不要用資料夾編號暗示所有內容都必教。 +4. **學期開始建立 issue/project**:以週為 milestone,教材改善用 issue 追蹤;不要建立長期分歧的日間部與進修部 branch。 +5. **學期結束建立 tag 或 Release**:保存當期快照;下一學期仍由預設 branch 改進共用教材。 +6. **作業另用 template repository 或 Classroom**:學生專題不提交到教材庫,降低 pull request 與答案互相污染。 + +## 新內容命名規則 + +未來可逐步補上 `media/`(影像、音訊、視訊、編碼與著作權)及 `cloud/`(HTTP、API、部署與觀測)等語意化模組。新增時應提供: + +- 模組 README(目標、先備知識、預估時間、課前/課後活動)。 +- 可在 Colab 或本機重現的範例,以及明確依賴版本。 +- 素材來源與授權;API key 一律透過環境變數或範例設定檔,不可提交真實密鑰。 +- 對應到兩條課程地圖的核心/選修標記。 + +## 每學期開課檢核 + +- [ ] 更新兩班課程地圖中的學期、週次與評量比例。 +- [ ] 檢查外部講義、Colab 與參考書連結。 +- [ ] 用全新環境抽測核心 Notebook/應用。 +- [ ] 公布 Python 版本、套件安裝方式與 API 額度替代方案。 +- [ ] 專題 rubric 同時評量「概念理解、可執行成果、文件、分工與展示」。 +- [ ] 課程結束建立 tag/Release,並在 changelog 記錄重大差異。 diff --git a/courses/day/README.md b/courses/day/README.md new file mode 100644 index 0000000..5dd3814 --- /dev/null +++ b/courses/day/README.md @@ -0,0 +1,49 @@ +# 日間部四技一年級:媒體素養與實作 + +## 課程定位 + +從「媒體如何被數位化」開始,依序認識影像、音訊、視訊、壓縮、互動與傳播,再用 Python 小實作驗證概念。程式是觀察與創作媒體的工具,而不是本路徑唯一主題。 + +- [課程講義草稿(HackMD)](https://hackmd.io/@wiimax/B13kn0DbMe) +- [預計使用的參考書(HyRead)](https://ebook.hyread.com.tw/bookDetail.jsp?id=311734) +- [repository 快速開始](../../docs/QUICKSTART.md) + +> 外部講義與書目可能更新;正式開課時請在本頁記錄採用版本、章節及最後檢查日期。書籍內容只列閱讀範圍,不將受著作權保護的內容複製進 repository。 + +## 建議單元順序 + +以下是可依學校行事曆伸縮的單元,而非綁死日期的週次表。 + +| 單元 | 核心概念 | Repository 實作 | 建議產出 | +|---|---|---|---| +| 1. 多媒體系統導論 | 媒體類型、取樣、量化、檔案與串流 | 課程講義+格式觀察 | 媒體規格比較表 | +| 2. Python 最小銜接 | 變數、容器、函式、Notebook | [`01.Intro-Python`](../../01.Intro-Python/README.md) 精選 | 能讀取並描述一份媒體資料 | +| 3. 數位影像 | 像素、色彩空間、解析度、壓縮與 metadata | [`09.Apps`](../../09.Apps/README.md)、OpenCV 入門 | 影像轉換小作品 | +| 4. 數位音訊 | 波形、取樣率、位元深度、聲道與編碼 | 待補 `media/audio` 共用模組 | 音訊比較與視覺化 | +| 5. 數位視訊 | 畫格、幀率、容器、codec、空間/時間壓縮 | [`08.OpenCV-Mediapipe-DEMO`](../../08.OpenCV-Mediapipe-DEMO/readme.md) | 視訊擷取或處理實驗 | +| 6. 互動媒體 | 輸入、回饋、介面與可用性 | [`02.Gradio`](../../02.Gradio/README.md) | 可操作的媒體 demo | +| 7. 網路與發布 | 容量、頻寬、延遲、媒體傳輸與基本授權 | [`03.Request`](../../03.Request/README.md) 精選 | 取得合法開放素材並標示來源 | +| 8. 整合專題 | 需求、原型、測試、著作權與展示 | 依題目選用共用模組 | 分組作品、README、展示影片 | + +## 分流原則 + +- **核心**:媒體基本概念、影像、音訊、視訊、互動作品及來源/授權。 +- **選修**:API、Flask、AI、資料庫;只有專題需要時才帶入,避免課程再次變成 Web/API 課。 +- **補強**:沒有 Python 經驗的學生使用 `01.Intro-Python` 精選活動;已有經驗者改做媒體 metadata 挑戰,不需重上全部語法。 + +## 專題最低規格 + +1. 至少處理影像、音訊或視訊其中一類,並正確說明兩項媒體參數。 +2. 具有可操作的輸入與可觀察的輸出。 +3. 專題 README 記錄執行方式、相依套件、素材來源/授權、分工與限制。 +4. 展示測試案例,例如不同解析度、格式、裝置或錯誤輸入。 +5. 若使用生成式 AI 或第三方 API,揭露工具、資料傳送範圍與人工修改內容。 + +## 開課前待補教材 + +- `media/image`:色彩、解析度、格式、壓縮與 metadata 的小型實驗。 +- `media/audio`:取樣、量化、波形與常見格式比較。 +- `media/video`:frame、fps、container/codec 與基本剪輯/轉碼。 +- `media/ethics`:著作權、Creative Commons、個資、肖像與生成式媒體標示。 + +這些模組完成前,可先將概念放在 HackMD、實作沿用現有 OpenCV/Apps;完成後再由本頁連入,避免一次搬動舊教材。 diff --git a/courses/evening/README.md b/courses/evening/README.md new file mode 100644 index 0000000..5634d22 --- /dev/null +++ b/courses/evening/README.md @@ -0,0 +1,48 @@ +# 進修部一年級:Python、API 與雲端應用 + +## 課程定位 + +承接學生可能具備但程度不一的 Python 經驗,以「程式如何和網路服務合作」為主線,從 HTTP/JSON、開放資料、API 與 Web service,走到可展示的雲端應用及分組專題。 + +- [前一學年課程主頁(HackMD 書本模式)](https://hackmd.io/@wiimax/Hy4cF6OOgx) +- [repository 快速開始](../../docs/QUICKSTART.md) + +## 建議單元順序 + +| 單元 | 核心概念 | Repository 實作 | 檢核成果 | +|---|---|---|---| +| 0. 程度診斷 | 變數、容器、流程、函式、錯誤訊息 | [`01.Intro-Python`](../../01.Intro-Python/README.md) 精選 | 依結果提供補強清單,不讓全班重修 | +| 1. 網路基礎 | client/server、DNS、URL、HTTP method/status/header | [`03.Request`](../../03.Request/README.md) | 能以文字說明一次 request/response | +| 2. API 與資料 | JSON、參數、分頁、錯誤、速率限制、資料授權 | `擷取API資料.ipynb`、`RequestsOpenData_HW.ipynb` | 開放資料擷取與整理 | +| 3. 互動原型 | 輸入驗證、介面、例外情境 | [`02.Gradio`](../../02.Gradio/README.md) | 將資料流程包成可操作 demo | +| 4. Web API | route、REST、CRUD、測試 | [`05.Flask`](../../05.Flask/README.md)、[`07.Pytest-DEMO`](../../07.Pytest-DEMO/README.md) | 小型 API 與自動測試 | +| 5. 資料保存 | schema、SQLite、CRUD | [`10.sql`](../../10.sql/README.md) | 保存與查詢應用資料 | +| 6. 第三方整合 | token、webhook、secret、API 成本與隱私 | [`06.Line-bot-fly-flask`](../../06.Line-bot-fly-flask/README.md)、[`11.AI`](../../11.AI/README.md) | 串接一項外部服務 | +| 7. 雲端初體驗 | environment、log、部署、健康檢查與限制 | Flask/LINE Bot 專案(部署平台依當期選定) | 公開 demo 或可重現部署紀錄 | +| 8. 分組專題 | 題目驗證、版本控制、分工、測試、簡報 | 依題目選用模組 | 程式、README、展示與反思 | + +## 核心與選修 + +- **核心**:Python 診斷、HTTP/JSON、API、互動原型、secret 管理、部署概念及分組專題。 +- **選修**:爬蟲、LINE Bot、資料庫、LLM、OpenCV。選修由專題需求驅動,不要求每組使用相同技術。 +- **替代方案**:付費 API 或需信用卡的部署平台必須提供免費/本機方案;評分聚焦概念與可重現性,不以付費服務可用性評分。 + +## 專題關卡 + +| 關卡 | 應繳內容 | +|---|---| +| 提案 | 使用者、問題、資料/API 候選、風險、最小可行成果 | +| 技術驗證 | 一次成功及一次失敗的 API 呼叫、資料樣本、secret 管理方式 | +| 原型 | 可操作流程、基本錯誤處理、組員貢獻紀錄 | +| 完成版 | 原始碼、安裝與執行文件、測試、授權、展示連結或影片 | +| 發表 | 問題與取捨、現場展示、限制、後續改善,而非只介紹套件 | + +## 建議共同評量規準 + +- 問題與使用者需求:20% +- HTTP/API/雲端概念與技術整合:25% +- 可執行性、例外處理與測試:25% +- 文件、資料來源、授權與安全:15% +- 分工、展示與反思:15% + +每學期可調整比例,但應在開題前公布。API key、token 與個資不得出現在 Notebook 輸出、commit 或展示畫面中。 diff --git a/docs/README.md b/docs/README.md index e472211..bbad348 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,8 +4,11 @@ ## 📖 文檔索引 -| 文檔 | 說明 | 適合對象 | -|------|------|----------| +| 文檔 | 說明 | 適合對象 | +|------|------|----------| +| [🧭 雙軌課程架構](../courses/README.md) | 多媒體系統日間部/進修部入口、共用教材與維護策略 | 教師、助教、兩班學生 | +| [☀️ 日間部課程地圖](../courses/day/README.md) | 影像、音訊、視訊與互動媒體路徑 | 日間部四技一年級 | +| [🌙 進修部課程地圖](../courses/evening/README.md) | Python、API 與雲端應用路徑 | 進修部一年級 | | [🚀 快速開始](QUICKSTART.md) | 各專案快速啟動指令 | 所有使用者 | | [📚 學習路徑](LEARNING_PATH.md) | 完整課程規劃與建議 | 初學者、課程學習者 | | [📝 更新日誌](CHANGELOG.md) | 專案更新記錄 | 開發者、維護者 |