吳舜歆 梁寶蘭
【摘要】針對傳統(tǒng)應用型本科C++程序設(shè)計課程存在的問題,進行一系列的教學改革。強調(diào)程序設(shè)計方法的學習、掌握,同時引入“程序設(shè)計在線評測系統(tǒng)”加強學生的實踐環(huán)節(jié),并引入案例教學,以培養(yǎng)學生綜合運用所學知識進行軟件開發(fā)。實踐證明,以上措施有利于提高學生的學習興趣,為后續(xù)專業(yè)課程的學習打下良好的基礎(chǔ)。
【關(guān)鍵詞】應用型本科 程序設(shè)計課程 教學改革
【基金項目】2014年度廣東省高等教育教學改革資助項目(GDJG20142517)。
【中圖分類號】G64 【文獻標識碼】A 【文章編號】2095-3089(2016)05-0230-02
1.前言
毋庸置疑,學會編程、掌握編程對計算機專業(yè)的學生來講非常重要。掌握一門程序設(shè)計語言,就等于掌握了跟計算機交流的工具。對于很多計算機專業(yè)的同學來講,C++是他們的第一門程序設(shè)計課程。學好C++,不僅掌握了跟計算機交流的工具,也為后續(xù)專業(yè)課程的學習打下良好的基礎(chǔ),同時有助于建立自信心。
2.當前存在的問題
目前的C++程序設(shè)計課程的教學主要存在以下幾個問題:
(1)教學內(nèi)容過分關(guān)注程序設(shè)計語言的語法和語義細節(jié),整個課程是以程序設(shè)計語言為綱來組織教學內(nèi)容。由于程序設(shè)計語言具有大量繁雜語法知識點,使得老師往往采用灌輸式教學模式,花費大量課時資源用于講授瑣碎的語法知識,而不是花在程序設(shè)計思想和方法的傳授上。
(2)教學方法采用語言工具書的闡述方式,一般是先介紹一種語法結(jié)構(gòu)的形式和意義,然后給出簡單示例或示例程序,這些示例和示例程序的主要作用只是用于對語法結(jié)構(gòu)使用方法的說明,學生并不能通過這些示例體會問題分析、程序思維和構(gòu)造的方法。整個課程也很少引入綜合性的教學案例,沒有讓學生體會到:針對要解決的問題,如何進行分析并逐漸將其精確化;如何針對問題的計算需求,設(shè)計解決問題的過程;如何將問題解決過程精確化,選擇適當?shù)某绦蚪Y(jié)構(gòu)實現(xiàn)它。
(3)學生上機實踐的時間較少,不能透過大量編程實踐掌握程序設(shè)計的相關(guān)理論、方法。學生上機寫程序,往往限于自身的水平,對測試數(shù)據(jù)考慮不全面,從而導致程序?qū)懲曛箅S便找?guī)讉€測試數(shù)據(jù)測一測,如果沒有問題,就算程序是正確的。實際上,對于初學程序設(shè)計的學生來說,如何設(shè)計更加全面的測試數(shù)據(jù)確實是一個不小的挑戰(zhàn)。所以往往出現(xiàn)這樣的情況,學生的程序?qū)嶋H上是錯的,但由于學生使用的測試數(shù)據(jù)比較片面,從而誤以為程序是正確的。對于課程書面作業(yè),學生交上來的程序不少時候連編譯都通不過。
3.教學改革
針對應用型本科C++程序設(shè)計課程的教學需要,在教學中突出計算思維的培養(yǎng),將其貫穿于整個課程的教學和實踐。通過培養(yǎng)學生掌握常見的程序設(shè)計方法,進而提高程序設(shè)計水平,為后續(xù)專業(yè)課程的學習打下牢固的基礎(chǔ)。同時引入案例教學,培養(yǎng)學生開發(fā)小軟件的能力,增強學生的學習興趣。
3.1重視程序設(shè)計方法
傳統(tǒng)的C++程序設(shè)計課程過于強調(diào)語法,課堂所介紹的例子很多是為了驗證C++的語法知識。這往往導致學生缺乏程序設(shè)計方法的培養(yǎng),結(jié)果是拿到一個問題不知道該如何去考慮,無從下手。
我們在實際教學中,側(cè)重于將教學重心放到培養(yǎng)學生程序設(shè)計方法上。特別注重窮舉、遞推、遞歸、回溯等常見程序設(shè)計方法的介紹、訓練。進而培養(yǎng)學生的計算思維。實踐證明,學生通過掌握這些常見的程序設(shè)計方法,分析問題、解決問題的能力得到了很大的提高。而不是像以往一樣,一個問題來了以后,不知道如何去分析、解決問題。從而打下了良好的編程基礎(chǔ),建立了專業(yè)自信心。
3.2加強實踐環(huán)節(jié)
針對傳統(tǒng)教學中,學生往往實踐環(huán)節(jié)比較欠缺的問題。我們在教學中引入了“程序設(shè)計在線評測系統(tǒng)”。該系統(tǒng)擁有一個經(jīng)過精心設(shè)計的題庫,同時它具有以下功能:
(1)實時判題。學生可以在任何地方、在任何時間做題,然后提交自己的源代碼。系統(tǒng)會實時地對學生的代碼進行評測,并給出相應的評測結(jié)果。主要有以下幾種情況:編譯錯、答案錯、格式錯、運行時出錯、超時和接受。如果學生提交的代碼不被系統(tǒng)接受,學生可以對代碼進行修改,然后再次提交。
(2)布置作業(yè)。老師可以根據(jù)實際教學的需要在系統(tǒng)里面布置作業(yè),限定本班的同學才能參與。系統(tǒng)會對學生提交的代碼進行實時的評判,并對學生的做題情況進行排名,不需要人工干預。同時老師可以設(shè)定作業(yè)的截止提交時間,超過截止時間系統(tǒng)將拒收作業(yè)。老師可以登陸系統(tǒng)一目了然地知道學生的做題情況。
(3)組織比賽。老師可以根據(jù)教學的需要適當?shù)慕M織一些比賽,以此調(diào)動學生的學習積極性。系統(tǒng)會自動評測學生提交的代碼,并對學生進行實時的排名,比賽一結(jié)束,比賽結(jié)果同時就出爐。
(4)用戶管理。系統(tǒng)記錄各用戶的做題信息,并保存用戶提交的源代碼。
(5)排名機制。系統(tǒng)提供排名機制。學生既可以查詢自己在所有用戶中的排名,也可以查詢自己在年級、班級的排名。
(6)論壇。學生可以在論壇上討論相關(guān)的題目,互相學習。
由于“程序設(shè)計在線評測系統(tǒng)”提供了強有力的支持,能夠?qū)崟r判題,并且提供了排名,這大大提高了學生編程的熱情。不少學生甚至通宵達旦地編程以解決題庫中的問題。這種編程的熱情在引入該系統(tǒng)之前是不可想象的。
3.3引入案例教學
“程序設(shè)計在線評測系統(tǒng)”有力地鍛煉了學生了編程能力,提高了學生的學習熱情。但畢竟沒有做出看得見、摸得著的軟件。為了彌補這個缺陷,我們在教學中引入了案例教學。通過案例教學,引導學生開發(fā)一些小軟件,從而進一步提高學生的學習興趣,培養(yǎng)學生綜合運用所學知識開發(fā)軟件的能力。
我們在教學中通過精心設(shè)計,引入了5個案例,分階段實施案例教學。通過在不同章節(jié)引入相應的案例來教授學生靈活運用所學知識解決實際問題的能力,提高學生的編程技能、學習興趣。各案例介紹如下:
(1)萬年歷:功能為顯示某年某月的月歷(陽歷信息)。這個案例分為4個版本。分別用于控制語句、函數(shù)、數(shù)組和面向?qū)ο笾蓄惖慕虒W過程。
(2)猜數(shù)字游戲:既有傳統(tǒng)的機器隨機生成一個4位數(shù),然后玩家來猜。又可以玩家隨機出一個數(shù),機器來猜。用于函數(shù)、數(shù)組的教學。
(3)打字游戲:屏幕隨機在一個位置掉下一個字符,讓玩家輸入該字符,直到正確或觸底為止。用于數(shù)組的教學。
(4)井字游戲:在3*3格子上進行的連珠游戲。機器和玩家輪流在格子留下O和X標記,由最先在任意一條直線上成功連接三個標記的一方獲勝。用于指針和引用的教學。
(5)二十一點:玩家的目標是使自己手中的牌的點數(shù)總和不超過21且盡量大。用于繼承和多態(tài)的教學。
以上5個案例,既有實用性,又有趣味性。后面的4個案例雖然也是游戲,但均不涉及圖形接口,并不會增加學生的負擔。這5個案例貫穿整個課程的教學,分階段地實施,能夠?qū)W生在整個課程的學習中隨時調(diào)動起來。通過教會學生開發(fā)出一個個實用的、有趣的小軟件,大大提高他們學習的興趣。
4.結(jié)束語
針對應用型本科C++程序設(shè)計課程的教學需要,突出強調(diào)程序設(shè)計方法的培養(yǎng),利用“程序設(shè)計在線評測系統(tǒng)”強化學生的編程實踐,同時引入案例教學,進一步培養(yǎng)學生綜合運用所學知識的能力。實踐證明,通過以上的改革措施,學生的編程興趣、編程能力得到了很大的提高。
參考文獻:
[1]吳舜歆,梁寶蘭.C++程序設(shè)計課程案例教學探索[J].高教學刊,2016(8):108-109,111.
[2]吳舜歆,梁寶蘭.Online Judge在C++程序設(shè)計課程實踐教學中的應用[J].高教學刊,2016(9):164,167.
[3]李文新.加強基礎(chǔ),提供平臺,營造氛圍,全方位培養(yǎng)創(chuàng)新能力——北京大學計算機學科教學體系改革[J].計算機教育,2008(1):20-22
作者簡介:
吳舜歆(1978-),男,漢族,廣東潮州人,講師,碩士,研究方向為機器學習、推薦系統(tǒng)。