Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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) - 專案更新記錄
Expand Down
68 changes: 68 additions & 0 deletions courses/README.md
Original file line number Diff line number Diff line change
@@ -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 記錄重大差異。
49 changes: 49 additions & 0 deletions courses/day/README.md
Original file line number Diff line number Diff line change
@@ -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;完成後再由本頁連入,避免一次搬動舊教材。
48 changes: 48 additions & 0 deletions courses/evening/README.md
Original file line number Diff line number Diff line change
@@ -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 或展示畫面中。
7 changes: 5 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@

## 📖 文檔索引

| 文檔 | 說明 | 適合對象 |
|------|------|----------|
| 文檔 | 說明 | 適合對象 |
|------|------|----------|
| [🧭 雙軌課程架構](../courses/README.md) | 多媒體系統日間部/進修部入口、共用教材與維護策略 | 教師、助教、兩班學生 |
| [☀️ 日間部課程地圖](../courses/day/README.md) | 影像、音訊、視訊與互動媒體路徑 | 日間部四技一年級 |
| [🌙 進修部課程地圖](../courses/evening/README.md) | Python、API 與雲端應用路徑 | 進修部一年級 |
| [🚀 快速開始](QUICKSTART.md) | 各專案快速啟動指令 | 所有使用者 |
| [📚 學習路徑](LEARNING_PATH.md) | 完整課程規劃與建議 | 初學者、課程學習者 |
| [📝 更新日誌](CHANGELOG.md) | 專案更新記錄 | 開發者、維護者 |
Expand Down
Loading