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

欲加簽的同學,請填寫加簽表單:https://forms.gle/V8yEbiVa42jb9ZeX7

本課程為程式設計入門課程,所使用的程式語言為 Python。Python 具有簡單易學、功能強大的特色,比起其他程式語言,更適合作為初學者學習的第一個程式語言。在許多新興領域中都可以看到 Python 的應用,例如:資料分析、機器學習、網站設計等等。許多知名的網站中都是或曾經是由 Python 來實作的,包含美國批踢踢 Reddit、以前做分組報告很依賴的 Dropbox、你每天發限時動態的 Instagram 。

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

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

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

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

期許同學們在扎實練習每次作業及期末專案後能具備以下能力:
1. 具基礎程式設計能力,能將日常生活中具重複性高的任務以程式完成。
2. 具備基礎網路資料搜集能力,能自動化抓取網頁資訊。
3. 對於網路學習資源具備基本的判讀及自學能力,讓這門課成為程式學習的第一步。 
課程要求
待補 
預期每週課後學習時數
 
Office Hours
 
指定閱讀
一、課程影片:本課程已預錄好採用翻轉教室部分之教材內容,同學們可於課前透過 NTU COOL觀看課程影片。
二、「Python 初學系列」教學文:https://medium.com/ccclub

細節請參考每週進度之指定閱讀。 
參考書目
待補 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
程式作業(共六次) 
50% 
作業將透過線上批改系統繳交,作業時程詳見每週進度。每次作業佔總成績 10%,取最高五次作業成績採計。 作業請勿抄襲,抄襲者與被抄襲者除該次作業以 0 分計算,期末成績再扣兩個等第(例如:A => B+、B+ =>B-、C=>F)。 
2. 
上機程式考試(共兩次) 
25% 
共有兩次上機考試,需自備電腦,考試不斷網,但嚴禁舞弊及討論,違者期末成績將為「F」,並依校規辦理。 
3. 
期末專案呈現 
25% 
期末專案為 3~4 人一組,需繳交 Proposal 進行專案提案,並於期末繳交報告影片、書面報告及相關程式碼。專案請勿抄襲,抄襲者與被抄襲者整組期末專案成績以 0 分計算。 
 
課程進度
週次
日期
單元主題
第1週
2/22  課程介紹及課程運作方式說明(實體授課)作業一公告

<指定閱讀>
1. Python 初學第零講 — Python 安裝 
第2週
3/01  輸入及輸出、變數、條件判斷(和平紀念日補假)

<指定閱讀>
1. 課程影片:輸入及輸出、變數、條件判斷
2. Python 初學第一講 — 變數與基本運算
3. Python 初學第二講 — 資料型態與轉換
4. Python 初學第三講 — 條件判斷 
第3週
3/08  字串、物件、串列(list)(翻轉教室 + 課堂討論)作業一截止,作業二公告

<指定閱讀>
1. 課程影片:字串、物件、串列
2. Python 初學第五講 — 串列的基本用法
3. Python 初學第六講 — 串列的更多操作 
第4週
3/15  迴圈(翻轉教室 + 課堂討論)

<指定閱讀>
1. 課程影片:迴圈
2. Python 初學第四講 — 迴圈 
第5週
3/22  巢狀迴圈、Break & Continue(翻轉教室 + 課堂討論)作業二截止,作業三公告

<指定閱讀>
1. 課程影片:更多迴圈 
第6週
3/29  第一次上機考試 
第7週
4/05  函式(清明節補假)作業三截止,作業四公告

<指定閱讀>
1. 課程影片:函式
2. Python 初學第七講 — 函式 
第8週
4/12  遞迴、排序、例外處理(翻轉教室 + 課堂討論)

<指定閱讀>
1. 課程影片:遞迴、排序、例外處理
2. Python 初學第八講 — 遞迴
3. Python 初學第十講 — 排序
4. Python 初學第十一講—錯誤與例外處理 
第9週
4/19  字典(Dictionary) (翻轉教室 + 課堂討論)作業四截止,作業五公告

<指定閱讀>
1. 課程影片:字典
2. Python 初學第九講 — 字典 
第10週
4/26  檔案處理、模組(Module)、類別(Class) (翻轉教室 + 課堂討論)

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