課程資訊
課程名稱
計算機程式設計
COMPUTER PROGRAMMING 
開課學期
99-1 
授課對象
 
授課教師
陳信希 
課號
CSIE1921 
課程識別碼
902 48050 
班次
 
學分
全/半年
半年 
必/選修
 
上課時間
星期二6,7(13:20~15:10) 
上課地點
計資212 
備註
A6:量化分析與數學素養領域。
總人數上限:52人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/991compuprogramming 
課程簡介影片
 
核心能力關聯
本課程尚未建立核心能力關連
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

本課程有別於一般程式設計介紹傳統程式語言,例如C(C++)語言,擬教授Python。Python是一種高階程式語言,已經廣泛被應用於系統的開發和設計,例如Google把Python選為官方程式語言之ㄧ,大家所熟悉的YouTube,Python是其中的關鍵語言。MIT將Python列為學生學習的第一種程式語言,引導非電腦科系的同學「如何像電腦科學家一樣思考」;瑞典Lund University將Python作為科學計算基本工具;…。

Python語言具有以下特點:語法結構清晰,簡單易學易懂,適於入門學習;支援很多開放碼軟體,黏稠性高,易與現有程式/模組整合,降低程式開發門檻,應用於不同領域等。本課程的目標是透過Python程式語言,引導非電腦科系的學生擁有數理邏輯的能力,同時由程式設計的推理過程,學習解決問題的方式,並以範例說明如何整合自由軟體,處理較複雜的問題。

本課程涵蓋下列課題:
1. Python程式設計環境:介紹Python歷史、與其他程式語言比較、解決問題技巧、環境安裝、網路資源等

2. 型態和運算:介紹Python內建物件型態,包括數字、字串、串列、辭典、檔案等。

3. 敘述和語法:介紹Python敘述,設定、表示式、和列印,if測試,while和for迴圈等基本語法。

4. 函式:介紹函式基本概念,變數範圍規則和引數,及進階函式,學習如何組織程式,供再使用。

5. 模組:介紹模組設計基本概念,學習運用模組套件,並以應用範例組織較大程式元件。

6. 類別和物件導向程式設計:介紹物件導向程式設計基本概念,和Python 所提供之物件導向程式設計工具。
 

課程目標
Python語言具有以下特點:語法結構清晰,簡單易學易懂,適於入門學習;支援很多開放碼軟體,黏稠性高,易與現有程式/模組整合,降低程式開發門檻,應用於不同領域等。本課程的目標是透過Python程式語言,引導非電腦科系的學生擁有數理邏輯的能力,同時由程式設計的推理過程,學習解決問題的方式,並以範例說明如何整合自由軟體,處理較複雜的問題。 
課程要求
 
預期每週課後學習時數
 
Office Hours
每週二 16:20~17:20 備註: 每週上課結束後,助教在上課電腦教室,輔導學生。 
指定閱讀
本課程使用自由軟體,包括程式設計環境和指定閱讀教材都可以由網路下載。指定閱讀教材原文為英文,已經由OSSF自由軟體鑄造廠翻譯成中文。
(1) 中文版
OSSF自由軟體鑄造廠中文譯版:如何像電腦科學家一樣思考,http://www.openfoundry.org/en/tech-article/
(2) 英文版
Allen Downey, Think Python: How to Think Like a Computer Scientist, Green Tea Press, Needham, Massachusetts http://www.greenteapress.com/thinkpython/thinkpython.html  
參考書目
參考教材
(1) Mark Lutz, Learning Python, 3rd Edition, O'reilly, 2008.
(2) Zelle, John. Python Programming: An Introduction to Computer Science. Wilsonville, OR: Franklin, Beedle & Associates, 2003.

參考網站:MIT OpenCourseware
(1) A Gentle Introduction to Programming Using Python (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189-a-gentle-introduction-to-programming-using-python-january-iap-2010/)
(2) Introduction to Computer Science and Programming (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/) 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
Quiz 
50% 
每堂課會配合課程進度,規劃上機練習,讓同學馬上了解機器操作,和程式演練。練習完後,將結果繳交給助教。如果該堂有事,請事先通知助教,補交上課練習題。 (附注: 此處的占分比不是最終分數的占分比) 
2. 
Homework 
40% 
總共會有 3 - 4 次的程式作業 (homework),繳交規則會跟該作業一起公布,原則上每個作業都不會太大 (例如 30-50 行左右的小程式) (附注: 此處的占分比不是最終分數的占分比) 
3. 
Other 
10% 
(附注: 此處的占分比不是最終分數的占分比) 
 
課程進度
週次
日期
單元主題
第1週
9/14  (1) 課程內容,目標,電腦教室介紹

(2) 程式語言簡介:解決問題之道,直譯器與編譯式環境,Python 語言的特色,與其他程式語言比較,Python 應用實例,網路資源。 
第2週
9/21  Python直譯器環境介紹:安裝和使用。 
第3週
9/28  程式語言基本組成:變數 (Variables),表達式 (Expressions) 及 陳述 (Statements)。 
第4週
10/05  程式語言基本組成:函數 (Functions)。 
第5週
10/12  範例分析一:以介面設計介紹程式設計一些概念。 
第6週
10/19  程式流程控制:條件式 (Conditionals) 及 遞迴 (Recursion)。 
第7週
10/26  進階函數設計。 
第8週
11/02  程式流程控制:疊代法 (Iteration)。
 
第9週
11/09  資料結構:字串 (String) 及其相關操作。 
第10週
11/16  範例分析二:文字處理 (Word Play)。 
第11週
11/23  資料結構:串列 (List) 及其相關操作。 
第12週
11/30  資料結構:辭典 (Dictionary) 及其相關操作。。 
第13週
12/07  資料結構:元組 (Tuple) 及其相關操作。 
第14週
12/14  範例分析三:資料結構的選擇。 
第15週
12/21  基本應用:用 Python 處理檔案 
第16週
12/28  物件導向程式:Python 的類別  
第17週
1/04  物件導向程式:類別、函數及成員函數。