課程資訊
課程名稱
計算機程式設計
Computer Programming 
開課學期
104-2 
授課對象
 
授課教師
鄭士康 
課號
EE4052 
課程識別碼
901 60200 
班次
 
學分
全/半年
半年 
必/選修
 
上課時間
星期五7,8,9(14:20~17:20) 
上課地點
 
備註
上課地點:計中212。A6:量化分析與數學素養
總人數上限:50人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/1042EE4052_ 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

注意: 本課程須投入甚多時間撰寫程式與報告, 課程負擔由輕而重, 至期末時達最高峰, 課業繁重或無決心毅力之同學請慎重考慮.
注意: 本課程鼓勵同學自組1至3人之團隊, 合作完成期末專題程式, 且各團隊期末專題程式成績即各成員共同之期末專題程式成績,占學期成績之30%. 因此務必慎選夥伴,若有重大合作困難,請及早反應處理.

注意: 除非考卷或作業批改登記發生錯誤,絕不更改成績.


課程簡介:
以C#為例, 由基本觀念循序漸近, 介紹計算機程式的語法與程式設計撰寫要領. Part I 前半適合初學者. Part II引入物件觀念後, 則程度較好同學亦能有所收獲.修完本課程後, 即有能力學習其他各種計算機程式語言之程式設計, 或學習使用特定軟體工具開發包括網路應用及手機APP等實用程式.

課程主要內容分章如下:

1.教學計畫及C#簡介

Part I. 函式
2.整合發展環境初步與簡易C#程式
3.實值變數與運算式
4.流程控制
5.陣列
6.函式
7.程式規劃與函式導向程式設計

Part II. 物件
8.物件與類別
9.物件導向程式設計
10.繼承與多型
11.檔案讀寫與例外處理
12.基礎視窗程式設計
13.Collections 與應用
Unity遊戲程式設計

上課方式:


Power Point教學, 程式示範, 及習作交替進行. 課堂習作時由任課老師及助教解答同學問題.課程剛開始幾週內, 課堂實作時同學可以另開資料夾, 逐行鍵入及執行剛教的例題程式,並嘗試各種變化. 隨著例題程式逐漸複雜, 同學可以直接打開教材所附檔案夾,找到對應的例題程式專案,閱讀程式碼,以偵錯器逐步執行較不明瞭部分,或者改變若干程式敘述, 觀察執行結果如何改變. 學習較快同學可以在課堂實作時間, 自習尚未教到的部分, 或嘗試撰寫自己構想的題目. 原則上任課教師及助教只回答已教過的內容問題, 牽涉到尚未教課程的問題, 則只回答將在何處教到,由同學自學並嘗試解決. 任課教師亦可能出一道題, 請同學在課堂實作時間內完成. 每一段課堂實作結束時, 任課教師可能隨機指定某位同學向全班解說其構想及所完成之程式, 並予講評.

原則上助教每週會出一不計分題目供同學練習, 完成之解答程式專案可壓縮後由CEIBA上傳. 助教會在下一週講解, 並釐清更正同學解答中共通性之錯誤.

上課後, 修課或旁聽同學自行完成教科書中每章後之練習以加深學習效果, 可參考教材中對應的解答. 有關問題亦可請教助教.

近年本課程網址(供參考):
https://ceiba.ntu.edu.tw/1032EE4052_
https://ceiba.ntu.edu.tw/1022EE4052_
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2012Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2011Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2010Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2009Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2008Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2007Spring.htm  

課程目標
訓練學生能夠利用C#語言寫作計算機程式, 並從中培養解決問題之規畫, 邏輯與偵錯能力, 及過程與結果呈現之表達能力. 願意組隊完成期末專題程式開發之同學, 另可獲得軟體系統發展分工整合及團隊合作經驗. 
課程要求
一、先修課程:無

二、學期成績計算方式:

三次作業 30% + 期中考 20% + 期末考 20% + 期末專題程式口頭報告及展演 15% + 期末專題程式書面報告 15%

助教可依同學與助教之互動表現(課外討論, 每週所出不計分之練習題解完題數及解答品質等)酌加總分最多3分.
學期成績小數點以下無條件進位之後, 依學校規定方式由百分制轉為等第.

三、作業
各次作業繳交日前,每位修課同學需自行依興趣選擇一個主題,撰寫程式及報告當成計分之作業,內容亦可配合期末專題,作為其先期嘗試或構成其一部份. 交來之作業須以書面介紹選擇題目之動機,構想解說,程式測試規畫, 流程圖(第4章介紹), 結構圖(第6, 7章介紹)或UML圖(第9章介紹), User Story(第三次作業), 程式列表, 程式測試執行結果,學習心得,參考文獻等.
同學若自修或向學長或助教學得超過課程進度之內容,並應用於自行實作完成之作業, 需敘明自修或討論學習過程於學習心得部份. 作業亦可利用其他既有之相關開放使用程式碼或無版權之軟體工具及網路上可公用之數據, 影音, 圖片等資料, 直接或修改後採用, 以完成同學構想之主題, 但需註明出處及修改應用之處, 且如此產生之程式碼部份在程式列表中應予省略.
作業每次每人繳交一份, 不可多人合交. 如為多人合作, 亦須分開撰寫不同內容.

四、期末專題程式:
課程進行中, 修課同學(不包含旁聽學生)自組1至3人之團隊, 於規定日期由CEIBA上傳一頁之期末專題程式構想(不計分), 說明預定主題與選擇此一主題之動機, 及可能之實作方法. 團隊應盡早開始持續合作, 完成期末專題程式實作.每一團隊需以學術論文格式寫成一份書面報告, 比照正式學術報告格式撰寫, 包含摘要(Abstract), 緒論(Introduction), 本文(至少須涵括研究動機, 相關之課程章節, 文獻回顧, 理論說明, 實作流程架構, 研究過程, 實作結果與討論, 與學習心得等內容, 並適當註明引用文獻及他人指導內容), 結論(Conclusions), 參考文獻(References).
專題程式實作可與學長或助教討論, 但必須由團隊本身完成.
亦可利用其他既有之相關開放使用程式碼或無版權之軟體工具及網路上可公用之數據, 影音, 圖片等資料,直接或修改後採用, 以完成團隊構想之主題, 但需於書面報告及投影片註明何處由何人協助完成,及修改或直接應用既有資源之部分與其出處.
團隊之期末專題口頭及書面報告成績均即為各團隊成員之期末專題程式口頭與書面成績.

五. 評分為A+的作業將會公布於CEIBA網站, 供所有同學參考. 因此學習心得可以另外撰寫, 其pdf檔與口頭報告及書面報告/作業檔案一起壓縮繳交.

 
預期每週課後學習時數
 
Office Hours
另約時間 備註: 請以email約定時間 
參考書目
網路上適合各種程度之各種學習資源及市售C#入門及其他相關書籍均可參考. 
指定閱讀
1. 鄭士康, 以C#學習程式設計基礎:使用Visual Studio 2012 Express for Windows Desktop, 2013. (電子書, 與各章例題,練習題解答,及期中期末複習解答等構成完整講義,
共同壓縮成一個zip檔, Tutorial2016, NTU Space網址https://www.space.ntu.edu.tw/navigate/s/FBACCD53E0CE444CA0F803B0CC8F3E0AQQY ), 請同學自行下載. 有需要於上課時參考紙本(764頁)者, 可參加助教揪團, 以印量取得較多折扣. 上述教科書雖是介紹Visual Studio 2012 Express for Windows Desk Top, 但除若干細節外, 內容仍可應用於本課程採用之Visual Studio 2013 (Visual Studio 2015無法於計中電腦教室電腦穩定執行).

2. 程式整合開發環境Visual Studio 2013, 請由校計中官網授權軟體下載處下載安裝.

3. 各章教學資料分基本教材(講義內容投影片, 上課時盡量依進度仔細講解), 補充教材(主要由同學課外學習, 上課時可能略作提示), 延伸學習教材(課外自修)三部分, 整合為一個XMind 7心智圖.xmind檔. 可於上課前由本課程網站標示之NTU Space網址下載. 同學請至http://actsmind.com/blog/software/xmind3download 下載安裝免費軟體XMind 7, 可開啟.xmind檔. 直接滑鼠雙按圖中的各種檔案圖標, 即可開啟各種教材檔案.  
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
三次作業 
30% 
作業由任課教師批改, 每次作業佔學期成績10%. 評分要點為主題之創新性, 構想及動機之說明及相關圖形是否清楚,程式測試規畫是否完整. 使用外部資源之外, 個人獨力完成的程式部份是否切題有創意, 註解是否清楚適當,程式是否簡潔易讀, 學習心得是否言之有物等. 作業由任課教師以 A+ = 97, A = 92, A- = 87, B+ = 82, B = 77, B- = 72等評分, 缺交為0分,遲交依規定扣分. 作業須轉成pdf檔.另準備由同樣內容整理,含標題頁之7張左右投影片power point檔,以及附有單元測試之程式方案檔,均於作業繳交日上課前由CEIBA系統上傳繳交. 作業繳交日第一節,輪流抽籤決定同學以其準備之投影片進行簡報.亦歡迎旁聽同學繳交書面及投影片作業,並參加抽籤簡報. 作業討論抽到的修課同學若未事先請假, 又不在教室內, 作業成績先九五折, 隨後由抽到之時間至該同學出現或下課, 每十分鐘將該份作業成績乘以0.95一次. 作業遲交時,成績先打九折,隨後自預定繳交日第一節開始上課時間算起,每逾一日(24小時),該次作業成績乘以0.85一次. 若因另有要事無法出席作業討論者, 仍須於作業討論日上課第一節前上傳作業pdf檔與Power Point檔. 並須與授課老師商量, 於適當時間進行作業簡報. 第三次計分作業程式需附有User Story及單元測試場景, 因此上傳的作業應包含三項內容: 附單元測試場景實作之程式方案檔, 含User Story之書面報告pdf檔, 及口頭簡報PowerPoint檔, 請共同壓縮成一個zip檔或RAR檔再上傳, 壓縮操作有問題同學, 請向同學或助教請教. 
2. 
期中考 
20% 
於4月22日原上課時間在原教室舉行,時間為下午2:20至6:00,範圍為第一章至前一週進度. 考試為Open Book, 同學可攜帶任何紙本資料, 但不可攜帶使用各式電腦(Computer)或計算器(Calculator), 亦不能借閱他人所攜資料. 考試進行中禁止使用手機. 因不可抗力之原因無法應考者, 請盡早於考試前通知任課老師商討變通方法. 考試舉行過後, 方告知缺考原因者, 除確屬不可抗力原因並附證明者可與任課老師商量變通方法外, 考試成績以零分計算. 考試由任課教師命題, 與助教共同監考, 由助教依任課教師提供之參考解答批改. 
3. 
期末考 
20% 
於6月24日原上課日在原教室舉行,時間為下午2:20至6:00,範圍為期中考所考範圍之後的部分. 考試為Open Book, 同學可攜帶任何紙本資料, 但不可攜帶使用各式電腦(Computer)或計算器(Calculator), 亦不能借閱他人所攜資料. 考試進行中禁止使用手機. 因不可抗力之原因無法應考者, 請盡早於考試前通知任課老師商討變通方法. 考試舉行過後, 方告知缺考原因者, 除確屬不 可抗力之原因無法應考並附證明者可與任課老師商量變通方法外, 考試成績以零分計算. 考試由任課教師命題, 由助教依任課教師提供之參考解答批改.  
4. 
期末專題實作展演及口頭簡報 
15% 
於7月1日原上課時間舉行(時間可能延長, 視合作團隊數而定). 各團隊準備之口頭報告投影片Power Point檔及程式專案檔,均於期末專題發表日第一節前, 壓縮後由CEIBA系統繳交. 專題發表開始, 輪流抽籤決定報告團隊. 每個團隊都會上台, 簡報加程式展演10分鐘,簡報時其他聽講同學為報告團隊以1至5分評分,並註記優缺點.自己團隊報告時, 應迴避不予評分. 所評分數1至5分各分數所占人數應照報告當日宣佈之規定比例分配, 不可全部打相同或均打少數特定分數. 各團隊之口頭報告及展演成績為其他同學評分截頭去尾後平均(x),換算得分為 70+5x,缺席為0分. 因不可抗力原因如參加遊學團或其他課程之野外實習等, 須盡早通知任課教師請假. 每團隊於報告日當天, 至少要有一人出席簡報成果. 若因如上述原因, 致報告時間無人能參加簡報者, 須及早通知任課老師, 可安排於最後上課日最後一節下課前簡報. 但書面報告之pdf檔仍應於規定時間之前上傳.發表會後, 若確因不可抗力原因致團隊中無人能出席發表會者, 須附證明, 並於報告日當晚12:00前以email通知任課老師, 安排第二日適當時間向任課老師簡報, 並由任課教師評分. 如仍無法簡報者, 由團隊與任課老師商討變通方法. 無論如何, 專題報告之Power Point檔仍應於規定時間前上傳. 遲交者不論原因, 成績打八折.  
5. 
期末專題實作書面報告 
15% 
於7月1日期末專題程式發表會開始前(原上課第一節前)轉成pdf檔, 由CEIBA系統繳交. 因繳送成績時程緊迫, 書面報告批改不寫評語, 僅由任課老師主觀依照書面報告之整體表現, 以 A+ = 97, A = 92, A- = 87, B+ = 82, B = 77, B- = 72 等評分, 缺交為0分. 不論原因, 遲交者成績打八折,期末專題發表日第一節開始上課時間算起兩天(48小時)後,不再收補交之報告,該項成績為零分. 
 
課程進度
週次
日期
單元主題
第1週
2/26  第1,2章: 課程背景及學習指引, 整合發展環境初步與簡易C#程式 
第2週
3/04  第3章: 實值變數與運算式 
第3週
3/11  第3,4章: 實值變數與運算式, 流程控制 
第4週
3/18  第4章: 流程控制, 第5章:陣列 
第5週
3/25  第5章:陣列, 第6章:函式 
第6週
4/01  溫書假 
第7週
4/08  第6章:函式, 繳交並討論第一次作業 
第8週
4/15  第7章: 程式規劃與函式導向程式設計 
第9週
4/22  期中考, 範圍至前一週進度  
第10週
4/29  第8章: 物件與類別. 繳交分組名單及期末專題構想書 
第11週
5/06  第8,9章: 物件與類別, 物件導向程式設計  
第12週
5/13  第10章至10.4: 繼承與多型, 繳交並討論第二次作業 
第13週
5/20  第10章10.5節與10.6節,第12章: 基礎視窗程式設計 
第14週
5/27  第10章繼承與多型(10.7節以後) 
第15週
6/03  繳交並討論第三次作業, 第10章未教完的部分, Unity遊戲程式引擎 
第16週
6/10  端午節調整放假, 6/4(六)下午2:20~5:10原教室補課
第11章:檔案讀寫與例外處理 
第17週
6/17  第13章 Collections 與應用 
第18週
6/24  期末考 
第19週
7/1  期末專題實作成果發表會