課程資訊
課程名稱
程式設計與網路資料搜集
Programming and Web Scraping 
開課學期
110-1 
授課對象
遠距教學課程  台灣大學遠距教學課程  
授課教師
魏聖倫 
課號
GenEdu5010 
課程識別碼
H02 50070 
班次
 
學分
3.0 
全/半年
半年 
必/選修
 
上課時間
星期三5,6,10(12:20~18:20) 
上課地點
博雅302 
備註
限非電資學院學生選修。需自備筆電。非同步遠距教學。。A6:量化分析與數學素養
總人數上限:110人 
 
課程簡介影片
 
核心能力關聯
本課程尚未建立核心能力關連
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

9/14 更新:本課程為第二類加選,請欲加選的同學於 9/22 前填寫加簽表單 https://forms.gle/tpux4GFxCFaznSAY8。
9/21 更新:9/22 第一週上課 meet 連結:https://meet.google.com/dno-ekwa-fmv (請使用 NTU Gsuite 加入,未申請的同學請事先至計中申請)
=====
本課程為程式設計入門課程,所使用的程式語言為 Python。Python 具有簡單易學、功能強大的特色,比起其他程式語言,更適合作為初學者學習的第一個程式語言。在許多新興領域中都可以看到 Python 的應用,例如:資料分析、機器學習、網站設計等等。許多知名的網站中都是或曾經是由 Python 來實作的,包含美國批踢踢 Reddit、以前做分組報告很依賴的 Dropbox、你每天發限時動態的 Instagram 。

本課程亦會介紹網路資料搜集的概念,並以範例演練的方式,從一個又一個網頁的實際例子,讓同學瞭解如何透過 Python 實作,此外,希望藉由期末分組專案讓同學們嘗試將生活中具體的問題以程式解決。

課程設計給毫無程式基礎的同學,但仍具難度且有一定負擔,若真的沒基礎,請預期這門課每週需花費至少 10 小時。課程將以翻轉教室的方式進行,同學們需自行上網觀看預先錄製好的課程影片,並透過課程提供之線上批改系統練習習題及完成作業。

因課程是設計給毫無程式基礎的同學,除實體授課的週次外,其餘週次(標注課堂討論之週次)課堂期間,教師和助教皆會在教室讓同學們問問題,幫助同學們釐清觀念及動手實作。除上課時間外,亦會提供 TA hour 讓同學們發問,協助同學們從 0 開始學習程式設計。 

課程目標
課程目標為透過「做中學」,讓同學們確實理解程式設計的概念,並期許同學們在累積程式基礎後,對於網際網路上的各式學習資源或現有工具,能具備判讀及自學能力,以解決真實世界中可能遇到的問題。

期許同學們在扎實練習每次作業及期末專案後能具備以下能力:
1. 具基礎程式設計能力,能將日常生活中具重複性高的任務以程式完成。
2. 具備基礎網路資料搜集能力,能自動化抓取網頁資訊。
3. 對於網路學習資源具備基本的判讀及自學能力,讓這門課成為程式學習的第一步。 
課程要求
不需有程式基礎 
預期每週課後學習時數
 
Office Hours
 
指定閱讀
詳見 NTU COOL 
參考書目
 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
期末專案呈現 
25% 
期末專案為 3~4 人一組,需繳交 Proposal 進行專案提案,並於期末繳交報告影片、書面報告及相關程式碼。專案請勿抄襲,抄襲者與被抄襲者整組期末專案成績以 0 分計算。 
2. 
程式作業(共六次) 
48% 
作業將透過線上批改系統繳交,作業時程詳見每週進度。 作業請勿抄襲,抄襲者與被抄襲者除該次作業以 0 分計算,期末成績再扣兩個等第(例如:A => B+、B+ =>B-、C=>F)。 
3. 
上機程式考試(共三次) 
27% 
共有三次上機考試,需自備電腦,考試不斷網,但嚴禁舞弊及討論,違者期末成績將為「F」,並依校規辦理。 
 
課程進度
週次
日期
單元主題
第1週
9/22  1. 課程介紹及課程運作方式說明
2. 輸入及輸出、變數
3. 作業一公告

指定閱讀
1. 課程影片:輸入及輸出、變數
2. Python 初學第零講 — Python 安裝
3. Python 初學第一講 — 變數與基本運算
4. Python 初學第二講 — 資料型態與轉換 
第2週
9/29  條件判斷、字串、物件

指定閱讀
1. 課程影片:條件判斷、字串、物件
2. Python 初學第三講 — 條件判斷 
第3週
10/06  1. 串列、迴圈
2. 作業一截止,作業二公告

指定閱讀
1. 課程影片:串列、迴圈
2. Python 初學第五講 — 串列的基本用法
3. Python 初學第六講 — 串列的更多操作
4. Python 初學第四講 — 迴圈  
第4週
10/13  巢狀迴圈、Break & Continue

指定閱讀
1. 課程影片:更多迴圈  
第5週
10/20  1. 第一次上機考試
2. 作業二截止,作業三公告 
第6週
10/27  函式

指定閱讀
1. 課程影片:函式
2. Python 初學第七講 — 函式  
第7週
11/03  1. 遞迴、排序、例外處理
2. 作業三截止,作業四公告

指定閱讀
1. 課程影片:遞迴、排序、例外處理
2. Python 初學第八講 — 遞迴
3. Python 初學第十講 — 排序
4. Python 初學第十一講—錯誤與例外處理  
第8週
11/10  字典(Dictionary)、檔案處理、模組(Module)

指定閱讀
1. 課程影片:字典、檔案處理、模組
2. Python 初學第九講 — 字典
3. Python 初學第十二講—檔案處理
4. Python 初學第十三講—模組
5. Python 初學番外篇—如何測試自己的程式  
第9週
11/17  1. 類別(Class)
2. 網路資料搜集I:網路資料搜集概念介紹、使用 GET 方法獲取網路資料
3. 作業四截止,作業五公告 
第10週
11/24  第二次上機考試 
第11週
12/01  1. 網路資料搜集II:透過 API 獲取資料、使用 POST 方法進行表單查找以獲取資料
2. 作業五截止,作業六公告 
第12週
12/08  網路資料搜集III:下載檔案類型資料、在動態網頁中獲取資料 
第13週
12/15  (課堂討論)
1. 期末專案分組實作
2. 作業六截止 
第14週
12/22  (課堂討論)
1. 期末專案分組實作 
第15週
12/29  1. 第三次上機考試 
第16週
1/05  (課堂討論)
1. 期末專案分組實作 
第17週
1/12  1. 期末專案報告