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

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

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

本課程歡迎修課或旁聽同學於CEIBA討論區討論課程相關問題, 除涉及非法或人身攻擊, 任課老師及助教不介入, 完全由同學自由討論.

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

課程主要內容分章如下:

1.教學計畫及C#簡介

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

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

上課方式:
學期第一週上課前, 先請修課及旁聽同學至CEIBA本課程討論區自我介紹,內容包括姓名或匿名代號, 就讀學校及系所年級, 修或旁聽本課程動機, 及希望學得的知識或實作經驗, 已修過的相關課程或對本課程學習可能有用之專長, 對課程的問題.

從第一週起, 上課前修課或旁聽之同學請先行閱讀教科書當週進度, 隨即可至CEIBA中本課程之討論區提問或就自己所知回答他人提出之問題. 之前已教過的內容也可以討論.
作業或期末專題亦可討論, 但須於報告中指出哪些部分是由那些同學協助.

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

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

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

近年本課程網址(供參考):
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%

任課老師可依同學在CEIBA討論看板之表現(發問及回答他人問題之次數及答案和問題的相關性及深度,分享之意見及網路資源訊息價值等),酌加總分最多2分.
助教可依同學與助教之互動表現(課外討論, 每週所出不計分之練習題解完題數及解答品質等)酌加總分最多2分.
學期成績小數點以下無條件進位之後, 依學校規定方式由百分制轉為等第.

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

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

 
Office Hours
另約時間 備註:Please send me an email to make appointment, email address: skjeng(at)ntu.edu.tw 
參考書目
市售C#入門及其他相關書籍或網路上之有關資料均可參考.
 
指定閱讀
鄭士康, 以C#學習程式設計基礎:使用Visual Studio 2012 Express for Windows Desktop, 2013. (電子書, 與各章例題,練習題解答,及期中期末複習解答等構成完整教材, 共同壓縮成一個zip檔, Tutorial2013, 可由課程網站第一週內容檔案處按右鍵以另存目標下載).
Visual Studio 2012 Express for Windows Desktop在家可由微軟網站免費下載.自行練習亦可使用如Visual C# Express 2010等其他版本.
各章Power Point檔均可在上課前由課程網站下載. 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
期末考 
20% 
於6月20日原上課日在原教室舉行,時間為下午2:20至6:00,範圍為期中考所考範圍之後的部分. 考試為Open Book, 同學可攜帶任何紙本資料, 但不可攜帶使用各式電腦(Computer)或計算器(Calculator), 亦不能借閱他人所攜資料. 考試進行中禁止使用手機. 因不可抗力之原因無法應考者, 請盡早於考試前通知任課老師商討變通方法. 考試舉行過後, 方告知缺考原因者, 除確屬不 可抗力之原因無法應考並附證明者可與任課老師商量變通方法外, 考試成績以零分計算. 考試由任課教師命題, 由助教依任課教師提供之參考解答批改. 
2. 
三次作業 
30% 
作業由任課教師批改, 評分要點為主題之創新性, 構想及動機之說明及相關圖形是否清楚,程式測試規畫是否完整. 使用外部資源之外, 個人獨力完成的程式部份是否切題有創意, 註解是否清楚適當,程式是否簡潔易讀, 學習心得是否言之有物等. 作業由任課教師以 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檔. 並須與授課老師商量, 於適當時間進行作業簡報. 
3. 
期中考 
20% 
於4月18日原上課日在原教室舉行,時間為下午2:20至6:00,範圍為第一章至前一週進度. 考試為Open Book, 同學可攜帶任何紙本資料, 但不可攜帶使用各式電腦(Computer)或計算器(Calculator), 亦不能借閱他人所攜資料. 考試進行中禁止使用手機. 因不可抗力之原因無法應考者, 請盡早於考試前通知任課老師商討變通方法. 考試舉行過後, 方告知缺考原因者, 除確屬不可抗力原因並附證明者可與任課老師商量變通方法外, 考試成績以零分計算. 考試由任課教師命題, 與助教共同監考, 由助教依任課教師提供之參考解答批改.  
4. 
期末專題程式口頭報告及展演 
15% 
於6月27日上課時間舉行(時間可能延長, 視合作團隊數而定). 各團隊準備之口頭報告投影片Power Point檔及程式專案檔,均於期末專題發表日第一節前, 壓縮後由CEIBA系統繳交. 專題發表開始, 輪流抽籤決定報告團隊. 每個團隊都會上台, 簡報加程式展演10分鐘,簡報時其他聽講同學為報告團隊以1至5分評分,並註記優缺點.自己團隊報告時, 應迴避不予評分. 所評分數1至5分各分數所占人數應照報告當日宣佈之規定比例分配, 不可全部打相同或均打少數特定分數. 各團隊之口頭報告及展演成績為其他同學評分截頭去尾後平均(x),換算得分為 70+5x,缺席為0分. 因不可抗力原因如參加遊學團或其他課程之野外實習等, 須盡早通知任課教師請假. 每團隊於報告日當天, 至少要有一人出席簡報成果. 若因如上述原因, 致報告時間無人能參加簡報者, 須及早通知任課老師, 可安排於最後上課日最後一節下課前簡報. 但書面報告之pdf檔仍應於規定時間之前上傳.發表會後, 若確因不可抗力原因致團隊中無人能出席發表會者, 須附證明, 並於報告日當晚12:00前以email通知任課老師, 安排第二日適當時間向任課老師簡報, 並由任課教師評分. 如仍無法簡報者, 由團隊與任課老師商討變通方法. 無論如何, 專題報告之Power Point檔仍應於規定時間前上傳. 遲交者不論原因, 成績打八折. 
5. 
期末專題程式書面報告 
15% 
於6月27日期末專題程式發表會開始前(原上課第一節前)轉成pdf檔, 由CEIBA系統繳交. 書面報告由任課老師主觀依照書面報告之整體表現, 以 A+ = 97, A = 92, A- = 87, B+ = 82, B = 77, B- = 72 等評分, 缺交為0分. 不論原因, 遲交者成績打八折,期末專題發表日第一節開始上課時間算起兩天(48小時)後,不再收補交之報告,該項成績為零分. 
 
課程進度
週次
日期
單元主題
第1週
2/21  第1,2章: 課程背景及學習指引, 整合發展環境初步與簡易C#程式 
第2週
2/28  國定假日 
第3週
3/07  第3章: 實值變數與運算式 
第4週
3/14  第3,4章: 實值變數與運算式, 流程控制  
第5週
3/21  第4章: 流程控制 
第6週
3/28  第5章:陣列. 繳交並討論第一次作業  
第7週
4/04  溫書假. 請自修第5章未教到的部分, 列入考試範圍 
第8週
4/11  第6章: 函式 
第9週
4/18  期中考 
第10週
4/25  第6,7章: 函式, 程式規劃與函式導向程式設計 
第11週
5/02  第7,8章:程式規劃與函式導向程式設計, 物件與類別. 繳交並討論第二次作業, 繳交分組名單及期末專題構想書  
第12週
5/09  第8,9章: 物件與類別, 物件導向程式設計  
第13週
5/16  第9章: 物件導向程式設計 
第14週
5/23  第10章至10.4: 繼承與多型. 繳交並討論第三次作業  
第15週
5/30  第10章至10.8, 第12章至12.4: 繼承與多型, 基礎視窗程式設計 
第16週
6/06  第12章: 基礎視窗程式設計. 請自修第11章:檔案讀寫與例外處理, 列入考試範圍 
第17週
6/13  第13章:Collections與應用 13.1, 13.2, 13.4, 13.6 
第18週
6/20  期末考 
第19週
6/27  期末專題程式發表會