♦程式設計能力檢定面面觀 ♦程式檢定序言 ♦檢定實施辦法 ♦檢定實施細則
程式設計是資訊工程相關系所的核心技能。資訊工程系要求學生畢業之前必須通過程式設計能力檢定已經成為常態。本系為提升學生程式設計能力,自九十六學年度起,要求學生必須通過系辦的程式設計能力檢定,也編了一套程式能力檢定題庫,分為基礎題與進階題兩類,合計八十多道程式設計題。每次程式能力檢定出題的範圍,從題庫抽選三到四題基礎題和三到四題的進階題,再由命題老師另外新增題目,製作一份基礎題與進階題各五道共十道程式設計題的檢定試卷。再由學生上機考試,考試時間為三小時。每學期舉辦兩次檢定。通過標準為於畢業之前參加程式設計能力檢定考試累計通過至少兩題進階題,合計至少通過五題。幾年施行下來,考生反映題庫裡有些題目有題意不明的疑慮等缺失,引發我們重新檢視、修正題庫的動機。
為了有一套更適合我們學生程度的程式設計題庫,一方面供學生作為程式設計的練習,協助他們逐步建立程式設計能力;另方面作為程式設計能力檢定出題的題庫,希望可以確實鑑別學生程式設計的能力。以舊題庫為基礎,蒐集題庫文獻加以修改後建立了這一套題庫。這套題庫的題目形式與國內外主要的程式設計比賽如ACM或教育部每年舉辦的軟體設計競賽甲組以及程式設計能力檢定如CPE的題庫相容,可以做為學生參加校外程式設計比賽的模擬練習題。雖然我們已經盡力校正,由於時間倉促,錯誤在所難免,敬請大家多多指教,讓這一套題庫可以精益求精,成為初學程式設計者的經典練習題庫。
弘光科技大學 資訊工程系
教授 張貿翔
2013/10/03
瑞士知名計算機科學家Nikiklaus Wirth提出計算機科學的名句『資料結構 + 演算法 = 程式』,而且更進一步認為『程式 = 演算法 + 資料結構 + 程式設計方法 + 語言工具與環境』。故而要設計一個結構良好且具有高執行效率的程式,程式設計師應具備這四方面的知識。進而可知程式設計是給出解決特定問題過程的程式,是軟體構造活動中的重要組成部分。程式設計往往以某種程式語言為工具,給出這種語言下的程式。程式設計過程則應當包括分析、設計、編碼、測試、除錯等不同階段。這使得程式設計成為一個複雜的心智活動過程,勞動所得的成品『程式』,可視為複雜心智活動設計產生的藝術品。因此荷蘭知名計算機科學家Edsger Wybe Dijkstra甚至認為『程式設計是一門藝術』。
既然如此,程式設計啟不具有高學習門檻、陡峭學習曲線,而叫人望之卻步,無法有效掌握嗎?並非如此,隨著硬體技術的飛速發展與軟體規模的日益龐大,程式結構更加的簡化,程式的可維護性、可複用性、可延展性…等日益加添與重要,再加上程式開發工具功能與日俱增且完善,皆使得程式開發工作負荷,得以銳減且大幅提升效率。
執教以來,有相當多學生問我,如何有效學習程式設計?據我觀察及實際教學經驗,我給予的意見是『觀摩、多想、多做、多比較』,從程式語言語法學習開始,熟悉並記憶語法,了解其語意,觀摩範例,然後思考別人為何如此設計程式(包含演算法及其配合的資料結構設計),再嘗試由自己的經驗與想法,盡可能的予以改善,最後再進行程式比較分析,截長補短,從而精進自我程式設計技能。並且不斷的重複這個循環,力求不間斷的程式設計訓練,如此當能有效的學習程式設計、提升程式設計技能,設計出結構良好且執行效率高的程式。
最後非常感謝學校提供這次程式設計教師教學反省社群的機會,讓我能有幸參與,進而再次自我反思,如何設計並安排適合資工系學生的程式設計學習演練的題庫,讓同學得以磨練程式設計技巧,提升程式設計技能。今題庫整理編列成冊,並將予以出版,希望能藉此幫助更多對程式設計有興趣、有熱誠、願意自我挑戰的同學,讓其在程式設計學習訓練上,得到可依循並可自我磨練的依據。
弘光科技大學 資訊工程系
助理教授 楊昌儒
2013/10/18
教授「程式設計」課程幾年下來,經常有同學會詢問我:哪一些書籍對於初學者比較合適,或是有沒有短時間想要上手程式設計的介紹書籍?我的回答通常都是:請同學到學校圖書館,找到相關書籍,如果有一本書可以讓你從第一個語法或函數讀完後,還有興趣繼續念第二個,那這本書對你而言就是一本適合你念的書.也許是個人的研究興趣是「數位學習」的關係,所以很能理解「因材施教」在傳統授課上實施的困難度,也就從來不強迫同學一定要購買任何的教科書籍;僅強調任何一本書若有興趣讓你再繼續閱讀,對個人而言就是一本「適合個人的程式設計工具書」.
而強調「程式設計工具書」的原因則在於:坊間許多程式語言的相關書籍會以語法與函數使用為基本範例練習題,對於使用者而言,僅是用來查詢如何使用語法與函數。時至今日,拜網際網路之賜,只要google “C程式語言+教學+語法”等關鍵字,不難發現大大小小的教學網站與程式設計案例分享,亦回應了前述-並不強迫同學一定要購買教科書籍;因此,才會強調「程式設計書籍大多僅可為查詢語法或函數使用之」。
那到底要怎麼學好程式設計呢?就是「每日不間斷的練習」,一天只要能寫一個程式即可,包含從標頭的宣告到最後程式的結尾,一開始可能會需要範例程式,我並不反對參考範例程式,但,並非一字不漏的照抄哦!而是從修改繼而延伸、擴充程式之功能,使其更加完整;一至二個月內若能持續不斷地練習,即使沒有範例程式可參考,亦能看到問題即能以程式邏輯的觀點實現。
感謝弘光科技大學提供了教師教學反省社群的機會,使資訊工程系有幸能夠參與,繼而能夠將適合同學們練習之程式設計題庫整理成冊,希望可以幫助同學們在學習程式設計練習有所依據。
弘光科技大學 資訊工程系
助理教授 張怡君
2013.10.18
這是一個匯集了許多程式設計題目的題庫本,在這裡我們要感謝張貿翔主任為我們學生編輯出這樣多的好題目。一個資訊工程系的學生,無論你是屬於高教體系或是技職體系,最重要的核心能力便是程式設計了,因此我們希望同學們能藉由這樣的一份好教材鍛鍊自己的程式能力。
同學在做這本題目的時候,一定會發現題目幾乎都跟平常所修習一些比較偏向”應用”的課程無關,也會發現許多題目都跟數理邏輯的思考能力有關。事實上,能與國際接軌的程式設計大賽的題目也是跟數理邏輯有相當大的關係。這當然是有道理的。因為一個好的程式設計師,他所寫出的程式不僅要正確,而且還要兼顧到效率與性能,所以程式設計師在面對一個問題的時候,必須要有縝密的思考,而所有基礎學科中,最能訓練這種能力的學科便是數學了。回想一下自己學數學的過程中,遇到一個題目,不就是一步一步地,進行合理的推演,最後得到一個真確的答案嗎? 因此一個好的程式設計師,其數學能力必定不會太差。這也是為什麼許多大專院校的資工系要招生時,常常會加重數學科目的計分,研究所招生考試,考的是數學科(離散數學,線性代數甚至是機率)而不是程式設計或是網頁設計之類的。
然而我這幾年在技職體系任教,我很訝異有些技職體系的學生,居然認為自己念的是技職體系,所以數學不好就沒有關係。這是非常嚴重錯誤的觀念! 從小到大,幾乎所有的升學考試(當然包含技職學生入學的四技二專統一測驗)都含有國文英文與數學三科,國文是每天自己所使用的語言,英文是身為地球村一份子的重要工具,數學則是日常生活中面對問題的思考訓練,數學並不只是狹隘地在那裏做一些符號的運算,一些邏輯上的思考,其實也是數學的範疇,日常生活皆數學(同學可以去查查何謂計算語言學,你會發現國文英文和數學還真有關係)。結果同學進入了資工系之後,開始逃避數學,不去選修系上開的離散數學,線性代數或是機率,這樣的代價就是,你的程式能力只會日漸向下而不自知!
現在我們很高興能有張主任的這份題庫本誕生,相信同學在練習的過程中,一定會發現許多題目要解開它,還真得補強一下自己的數學功力纔行喔。相信同學也會發現,數學進步的同時,程式一定也能進步的!
弘光科技大學 資訊工程系
助理教授 滕元翔