|
課程名稱 |
程式設計 Programming Design |
|
開課學期 |
114-1 |
|
授課對象 |
資訊管理學系 |
|
授課教師 |
何承遠 |
|
課號 |
IM1003 |
|
課程識別碼 |
705 10300 |
|
班次 |
02 |
|
學分 |
3.0 |
|
全/半年 |
半年 |
|
必/選修 |
必修 |
|
上課時間 |
星期二7,8,9(14:20~17:20) |
|
上課地點 |
管一B01 |
|
備註 |
週四ABC實習在小電腦教室,開學前請仔細閱讀課程大綱並依指示收看課程影片。 限外系(所)學生 總人數上限:70人 外系人數限制:70人 |
|
|
|
|
課程簡介影片 |
|
|
核心能力關聯 |
核心能力與課程規劃關聯圖 |
|
課程大綱
|
|
為確保您我的權利,請尊重智慧財產權及不得非法影印
|
|
課程概述 |
2025.09.02 更新:
如果想申請加簽或旁聽,請在 2025.09.03 23:59 前填寫以下表單:
https://forms.gle/EEt9def2NGts3GD2A
作業一題目在這裡:
https://www.dropbox.com/scl/fi/xgt7bea156zddm5ohqak9/PD114-1_hw01.pdf?rlkey=ssdozjragwoy3k0y39sl2e84d&dl=0
======
2025.08.16 更新:
114-1 的課程說明影片在 https://www.youtube.com/playlist?list=PLMHSr8fseBzVbEgGOZq1rQ79b0Rd6GnGc,總長度約 90 分鐘,歡迎快轉,但請想修課的同學務必看完。
這邊整理 9/2 14:00 前大家應該完成的事項如下:
* 看完「01 Introduction」、「02 Selection and Repetition」、「03 Digital Systems」的影片
* 在 PDOGS 做完 Homework 0
* 看完「04 Variables and Arrays」的影片
======
2025.08.11 更新:
歡迎來到 114-1 的「程式設計」!以下是本課程的重要資訊,很長,但很完整,請準備修課的同學們務必仔細閱讀:
(一)課程資訊:
114-1 的課程大綱在 https://www.dropbox.com/scl/fi/39m19ezd4ts64378wp0qh/PD114-1_syllabus250811.pdf?rlkey=17t18q86rr31homqgtzku3cfa&st=j4okymz4&dl=0,請考慮修課的同學們務必仔細閱讀,以免錯過重要的課程規定。
這門課是設計給資管系大一同學的,並不假設修課同學有程式設計基礎,但它還是有它需要的難度和負擔,我希望(也相信)這是校內的入門級程式設計課程中數一數二困難且會帶來沉重負擔的(課程使用的程式語言 C++ 本身也就有不低的學習門檻)。如果真的沒有基礎,請把這門課想成至少六學分,並且務必少修一些課、預留足夠多的時間給這門課。
有鑑於此,如果是想學習基本程式設計,但自覺未來應該不會當軟體工程師的同學,建議修「商管程式設計」、「Python 程式設計基礎課程」或類似課程。如果修過這些課想要繼續進修,相較於再修一門程式設計,更建議修資料結構和(或)演算法。當然如果你確實知道自己為什麼需要這門課,只要有位子,都還是很歡迎的。
由於想修這門課的學生近年來愈來愈多,為了照顧想修課的同學並且兼顧課程品質,從 111-1 起,本課程一次開設兩班,「01 班」由孔令傑老師負責,「02 班」則由何承遠老師負責。兩班共享一模一樣的課程進度、課程影片(孔令傑老師錄的)、作業考試專案的題目、助教課、助教、NTU COOL 課程網站;不共享的學習活動,基本上只有正課時間的課堂練習和課堂補充,會由兩位老師各自帶領。
本課程所有的課程講義與影片,以及部分過往作業,都在 http://www.im.ntu.edu.tw/~lckung/course_web/#/course/Programming%20Design/introduction,歡迎大家自行取用、用以瞭解本課程,甚至在學期開始前預習。本學期的影片、講義、作業、考試、補充資料等等,會在課堂中使用 NTU COOL 提供給大家。
(二)選課須知:
因為課程內容、進度、要求、評分方式都幾乎一模一樣,所以修哪一班也幾乎沒有差別。為了方便分流,資管系(含雙主修資管系)請修 01 班,非資管系則請修 02 班。112-1 預計兩班合計收最多 180 名學生,網路初選兩班各 70 個名額。非臺大學生(包含交換生、外校生、三校聯盟等)網路初選不開放,第二階段或開學後若有剩餘名額即歡迎加選,若沒有剩餘則請大家諒解,把名額保留給最需要的同學。如果你想申請加簽與旁聽,請在開學後第一次上課到教室上課,並在當週三 23:59 前填寫申請表單(網址將於課程第一天公布),預計在第二週的週三發放授權碼。旁聽不限名額,申請就有。
加簽方面,表單上會有填寫動機、相關背景的欄位,所以可以不用在學期開始前寫信跟老師們說自己有加簽的企圖。若學生人數實在過多必須取捨,則以有完成作業零和作業一且表現好的優先,其次參考學院、學系、年級、動機、背景等,但沒有一定哪個學院優先、哪個年級優先等等,都是到時候綜合決定。
(三)學期開始前的自主學習:
如課程大綱(連結在上面)所述,授課團隊在 2012 到 2023 的 11 年間,每一年都得到來自同學們一樣的回饋:課程前半段步調太緩,後半段則步調太快。這雖然是很主觀的感受,但客觀來看也合理,畢竟絕大部分課程都是後面困難前面相對簡單,這門課也不例外,而 C++ 中關於物件導向的部分對初學者來說也特別難掌握。此外,同學們也持續反應課程任務(作業、專案)太多、學期後半的學習活動(例如期末專案)和學期後半的課程內容關聯性太小等等。因此在 112-1 學期起我們做了如下調整:
(1) 期末專案規模縮小,不要求也不鼓勵同學們自學並製作圖形介面;
(2) 期中專案規模縮小,變成一份作業,從團隊做三週變成個人做一週;
(3) 新增期末考,測驗學期後半段內容;
(4) 將過往學期中最初兩週的內容(共三個講次,講次 1 到 3,Introduction、Selection and Repetition、Computer Systems)交由學生們自主學習,學期的第一週進行的就是過往第三週的課程。授課團隊提供了課程影片、練習題、練習題解答等相關學習素材給學生們。課程講義與影片在前面的連結中有;練習題在 PDOGS(https://pdogs.ntu.im/)上,而 PDOGS 的使用說明可以參考 https://www.youtube.com/watch?v=MP1oxBizCwI。最後,如課程大綱所述,這門課程以翻轉教室的方式進行,所以在開學第一次上課進教室前,同學們也應該先看完講次 4 的 Variables and Arrays 影片,以便課堂上可以做練習、聽延伸說明。
在 112-1、113-1 兩個學期,這樣的調整獲得了學生們和教學團隊的一致認同,所以在 114-1 我們會繼續這樣進行,也要請同學們務必配合。
*關於要求開學前先自主學習是否不近人情,我們是這麼想的:(A) 若能藉此讓學生們在學期中不要爆炸,把相對容易、自己學得會的部分透過自學來完成,應該對同學們是利大於弊。(B) 到 Arrays 之前的內容,通常是一般高中以及大學的入門程式設計課會涵蓋的內容,大部分同學要自學應該辦得到。(C) 如果自學前 Array 前的內容就覺得極為困難,建議還是先去修比較適合自己的程式設計課程。(D) 當然有些同學可能不幸沒接收到這個資訊,沒有在學期開始前先自學。就這點來說,我們的想法是:修一門課的學生,照理說在選課前是應該注意透過官方管道公告的課程規定,我們也會透過各種方法通知即將進入資管系的新生;若還是有同學沒留意到且仍然想要修課,也還是可以在開學第一週自行多花時間跟上課程進度,也不會傷害到成績。(E) 資管系還是有部分新生過往沒有相關的程式設計學習經驗,因此我們會在開學前提供 office hour 給這些同學們一些額外的協助;對於非資管系的同學們,由於並非必須修這門課,且我們能量有限,因此只會在開學後一視同仁地提供 office hour,請大家見諒。(F) 總之,我們盡力把課程規劃成對同學們最好的形式,但還是不可能滿足所有不同學生的要求,只能請大家多多幫忙、配合了。
(四)其他問題:
如果還有問題,可以寫信到 r14942144@ntu.edu.tw 請教這學期的大助教陳鵬仁,若有大助教無法回答的問題,他會再問兩位老師後給予答覆。 |
|
課程目標 |
(1) Being able to read precise requirements and implement algorithms and object-oriented programs in C++ correctly. (2) Being able to explain the execution of every C++ program statement at the memory level. (3) Being able to develop large-scale software in C++ with the help of generative AI. (4) Being able to tell whether a program is good or not, explain why, and design software or algorithms without the help of generative AI. (5) Being able to communicate and collaborate with technical and non-technical people to build a good software application. |
|
課程要求 |
|
|
預期每週課前或/與課後學習時數 |
|
|
Office Hours |
|
|
指定閱讀 |
|
|
參考書目 |
請見課程大綱 |
|
評量方式 (僅供參考) |
- 本校尚無訂定 A+ 比例上限。
- 本校採用等第制評定成績,學生成績評量辦法中的百分制分數區間與單科成績對照表僅供參考,授課教師可依等第定義調整分數區間。詳見學習評量專區 (連結)。
|
|
針對學生困難提供學生調整方式 |
|
上課形式 |
提供學生彈性出席課程方式 |
|
作業繳交方式 |
學生與授課老師協議改以其他形式呈現 |
|
考試形式 |
|
|
其他 |
由師生雙方議定 |
|