石魯生等
摘 要:文章從新建地方本科院?!盋++程序設(shè)計”課程的教學(xué)現(xiàn)狀出發(fā),分析“C++程序設(shè)計”課程教學(xué)存在的問題,并指出了“C++程序設(shè)計”課程教學(xué)改革的路徑。
關(guān)鍵詞:C++程序設(shè)計;教學(xué)改革;新建地方本科院校
中圖分類號:G642.0 文獻(xiàn)標(biāo)識碼:A 文章編號:1002-4107(2015)10-0027-02
一、“C++程序設(shè)計”教學(xué)現(xiàn)狀
作為剛剛獨(dú)立建校不久的新建地方本科院校,宿遷學(xué)院一直以培養(yǎng)本科應(yīng)用型創(chuàng)新人才為根本任務(wù),注重培養(yǎng)學(xué)生的實(shí)踐能力和創(chuàng)新精神,強(qiáng)調(diào)適應(yīng)未來就業(yè)的需要。
“C++程序設(shè)計”是宿遷學(xué)院計算機(jī)、軟件工程等專業(yè)的一門重要專業(yè)基礎(chǔ)課,主要是以C++語言為載體,全面系統(tǒng)地向?qū)W生介紹面向?qū)ο蟮木幊趟枷牒图夹g(shù),因此它既是面向過程的C語言的自然延伸和發(fā)展,又是Java、C#等面向?qū)ο笳Z言的基礎(chǔ)。由于其兼具面向過程和面向?qū)ο蟮碾p重特征,在由面向過程的程序設(shè)計轉(zhuǎn)入面向?qū)ο蟮某绦蛟O(shè)計的學(xué)習(xí)過程中起著承上啟下的重要作用。當(dāng)然”C++程序設(shè)計”的應(yīng)用性和實(shí)踐性也非常強(qiáng)。
宿遷學(xué)院原有”C++程序設(shè)計”教學(xué)工作存在諸多問題。如教學(xué)內(nèi)容不能適應(yīng)人才培養(yǎng)的實(shí)際需求,教學(xué)重點(diǎn)偏重于語法細(xì)節(jié);教學(xué)過程仍是教師“自問自答”的傳統(tǒng)“填鴨式”教學(xué)[1],學(xué)生毫無興趣;雖然有實(shí)踐環(huán)節(jié),但是設(shè)計單調(diào),考核缺乏有效手段,無法切實(shí)提高學(xué)生的實(shí)際動手能力;在課堂教學(xué)之外,“教”與“學(xué)”,教師與學(xué)生嚴(yán)重脫離,學(xué)生的疑問不能方便、快捷地得到教師的幫助,教師也很難了解學(xué)生平時的實(shí)際情況。針對以上問題,自2012年開始,我們對”C++程序設(shè)計”的教學(xué)內(nèi)容、教學(xué)過程、實(shí)踐環(huán)節(jié)以及課外指導(dǎo)等方面進(jìn)行了一些探索與實(shí)踐,取得了初步的成果。校級”C++程序設(shè)計”網(wǎng)絡(luò)課程于2014年業(yè)已建成,目前校級精品課程項(xiàng)目正在建設(shè)之中。
二、“C++程序設(shè)計”教學(xué)改革路徑
(一)優(yōu)化教學(xué)內(nèi)容,突出教學(xué)重點(diǎn)
考慮到宿遷學(xué)院在開設(shè)”C++程序設(shè)計”之前已經(jīng)開設(shè)了”C語言”,因此教學(xué)內(nèi)容當(dāng)然以面向?qū)ο鬄榻^對主角,并據(jù)此選取了教材[2]。
教學(xué)中將相對固定的面向?qū)ο蟮膬?nèi)容進(jìn)行重新整合,分成類與對象,繼承與派生、多態(tài)性與虛函數(shù)、運(yùn)算符重載與輸入輸出流等四個部分,重點(diǎn)對類與對象的基本概念、構(gòu)造函數(shù)、繼承以及多態(tài)性等知識進(jìn)行詳細(xì)介紹,弱化運(yùn)算符重載、非常見輸入輸出流等內(nèi)容,C++對C的擴(kuò)充部分全部留給學(xué)生自學(xué)。
盡管有不少專家學(xué)者強(qiáng)調(diào)C++的教學(xué)要淡化語法,突出算法[3],但針對宿遷學(xué)院新建地方本科院校和生源的現(xiàn)實(shí)情況,在實(shí)際教學(xué)中,我們的重點(diǎn)既有計算機(jī)的編程思想也有最小集語法,也即在突出面向?qū)ο缶幊趟枷牒退惴ㄔO(shè)計的同時,對最常用的基本語法仍然重點(diǎn)講解,較少使用的語法一帶而過,缺乏實(shí)踐價值的語法舍棄不講。做到既滿足后續(xù)課程的需要,又盡量與學(xué)生畢業(yè)后的就業(yè)相對接。
(二)將計算思維引入教學(xué)
計算思維是由美國卡內(nèi)基·梅隆大學(xué)計算機(jī)科學(xué)系主任周以真教授提出的[4],她認(rèn)為計算思維是運(yùn)用計算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計以及人類行為理解等涵蓋計算機(jī)科學(xué)之廣度的一系列思維活動。
對于計算機(jī)或軟件工程專業(yè)的學(xué)生來說,學(xué)習(xí)C++或者其他語言的目的不僅僅是為了畢業(yè)后能夠成為一名合格的程序員,更重要的是通過學(xué)習(xí)深入理解并掌握利用計算機(jī)分析和解決問題的思路和方法,而這正是教師在教學(xué)過程中需要傳輸給他們的計算思維。
因此我們將計算思維融入教學(xué)全過程中去,每個部分都利用計算思維的觀點(diǎn)作為引導(dǎo),學(xué)習(xí)中鼓勵學(xué)生多角度去思考問題,從認(rèn)識規(guī)則、熟悉規(guī)則、使用規(guī)則轉(zhuǎn)變成尋找規(guī)則、探究規(guī)則、理解規(guī)則,將理論課也全部搬進(jìn)計算機(jī)房,一人一臺計算機(jī),利用極域電子教室進(jìn)行理論教學(xué),以學(xué)生動手練習(xí)替代教師課堂演示,使學(xué)生主動參與到實(shí)際教學(xué)之中,真正思考起來。實(shí)踐和作業(yè)環(huán)節(jié)也打破常規(guī),布置一些不設(shè)統(tǒng)一要求的題目,鼓勵學(xué)生進(jìn)行自主創(chuàng)新和探索。
(三)打造個性化實(shí)踐教學(xué)環(huán)節(jié)
實(shí)踐環(huán)節(jié)是新建地方本科院校培養(yǎng)應(yīng)用型人才的關(guān)鍵一環(huán),而實(shí)踐環(huán)節(jié)又必須以切實(shí)提高學(xué)生的實(shí)際動手能力,適應(yīng)未來就業(yè)需要為首要目標(biāo)。
首先,傳統(tǒng)的實(shí)踐內(nèi)容往往來自于課本或?qū)嶒?yàn)指導(dǎo)書,性質(zhì)大多為驗(yàn)證性,并容易找到參考答案。現(xiàn)在由教師根據(jù)課程知識體系和學(xué)生實(shí)際情況靈活出題,性質(zhì)大多為設(shè)計性和綜合性,題目也只給出基本要求,鼓勵學(xué)生在此基礎(chǔ)上精彩發(fā)揮,并允許學(xué)有余力者根據(jù)知識內(nèi)容為自己出題,也借此不斷豐富實(shí)踐內(nèi)容。
其次,調(diào)整實(shí)踐環(huán)節(jié)實(shí)施過程。我們會提前1—2周布置實(shí)踐內(nèi)容,要求學(xué)生提前編寫好初步的源程序代碼,上機(jī)課之初就通過極域電子教室提交。然后課堂時間主要是對程序進(jìn)行調(diào)試和修改,直至獲得滿意的結(jié)果,經(jīng)教師檢查合格后,提交運(yùn)行結(jié)果和新的源程序。我們鼓勵每次最先圓滿完成任務(wù)的三名學(xué)生成為“小老師”,他們可以和教師一樣在課堂上自由指導(dǎo)需要幫助的學(xué)生,并得到額外的加分獎勵。每次上機(jī)課結(jié)束前,預(yù)留一定時間給此次任務(wù)完成最好的學(xué)生,將其作品講解、演示給全班同學(xué)。這些措施給予學(xué)生們極大的競爭意識和成就感,也形成了你追我趕、不甘落后的學(xué)習(xí)氛圍,提升了學(xué)習(xí)的積極性和興趣。
最后,考慮到生源的實(shí)際情況,一方面教師對關(guān)鍵性技術(shù)問題進(jìn)行提示和指導(dǎo),但并不限制每位學(xué)生完成實(shí)踐任務(wù)的時間,學(xué)期內(nèi)任何時間完成都能提交,教師隨時可以檢查;另一方面教師在檢查時不僅要看運(yùn)行結(jié)果,而且還會針對具體程序進(jìn)行提問,借此鼓勵所有學(xué)生獨(dú)立完成程序的編寫和調(diào)試工作。學(xué)生只有通過不懈努力反復(fù)修正自己的錯誤程序,才能應(yīng)對教師檢查中的提問環(huán)節(jié),才能學(xué)會如何編寫和調(diào)試程序,實(shí)際動手能力才能切實(shí)得以提高。
(四)充分利用網(wǎng)絡(luò)課程平臺,實(shí)現(xiàn)“教”與“學(xué)”的零距離
2014年6月份建成的”C++程序設(shè)計”網(wǎng)絡(luò)課程平臺上,除了一些傳統(tǒng)的教學(xué)常規(guī)資料(大綱、周歷、課件、課堂教學(xué)錄像和學(xué)生作業(yè)等)之外,還加入了一些新鮮的內(nèi)容。
首先受到MOOC的啟發(fā),自2014年起,我們錄制了幾段簡短的視頻,以生動活潑的形式、簡單有趣的例子介紹一些重要的知識點(diǎn),如構(gòu)造函數(shù)重載、this指針、虛函數(shù)等。雖然制作水平和開放程度與國內(nèi)外流行的MOOC相比還有非常大的差距,但也吸引了校內(nèi)外不少學(xué)生的目光,取得了不錯的效果,因而該工作還將繼續(xù)開展。
其次我們在學(xué)生作業(yè)環(huán)節(jié)引入了Online Judge在線判題系統(tǒng),雖然由于現(xiàn)實(shí)原因?qū)嶋H作業(yè)成績并不完全由此系統(tǒng)決定,但是由該在線判題系統(tǒng)給出的格式錯誤或無法編譯、運(yùn)行時錯誤、答案錯誤、超時、通過等各種狀態(tài),仍然極大地調(diào)動了學(xué)生學(xué)習(xí)的積極性,大幅度地提高了作業(yè)程序的質(zhì)量。
最后在答疑解惑模塊,所有問題除了按學(xué)生發(fā)問時間和教師回復(fù)時間兩種常見方式排序外,我們將所有問題進(jìn)行了詳細(xì)的分類。現(xiàn)在學(xué)生在課堂之外,如有疑問大部分均可以方便快捷地在相應(yīng)分類中找到答案,如遇新問題,發(fā)問時必須詳細(xì)勾選問題類別,然后再由教師適時確認(rèn)類別并加以回復(fù),當(dāng)然其他感興趣的學(xué)生也可以一同參與討論。
(五)成立“小微型學(xué)習(xí)組織”,用第二課堂促進(jìn)第一課堂
在第一課堂之外,我們還積極推進(jìn)第二課堂的工作,系內(nèi)成立了多個“小微型學(xué)習(xí)組織”,與C++程序設(shè)計關(guān)系密切的主要有兩個:“軟件開發(fā)小組”和“程序設(shè)計小組”。每組配備指導(dǎo)教師2—3人,組員在學(xué)生自愿報名基礎(chǔ)上,由指導(dǎo)教師考核后確定,并根據(jù)實(shí)際需要進(jìn)行動態(tài)管理。小組均有相對固定的學(xué)習(xí)活動場地,每周利用晚上或周末時間,集中進(jìn)行1—2次學(xué)習(xí)或討論,其余時間根據(jù)階段任務(wù)安排自主展開活動,其間由指導(dǎo)教師輪流加以指導(dǎo)。“軟件開發(fā)小組”主要利用C++、Java、C#等語言并結(jié)合教師課題與校內(nèi)外實(shí)際需要進(jìn)行軟件開發(fā),目前已經(jīng)有“宿遷學(xué)院監(jiān)考管理系統(tǒng)”、“宿遷學(xué)院后勤報修系統(tǒng)”、“宿遷人才新干線”等近十個系統(tǒng)成功開發(fā)并投入使用?!俺绦蛟O(shè)計小組”以C、C++和Java為主要編程語言,參加了校內(nèi)外各種級別的程序設(shè)計大賽,目前已經(jīng)在“宿遷學(xué)院程序設(shè)計競賽”、“藍(lán)橋杯大賽”、“ACM大學(xué)生程序設(shè)計競賽”等比賽中斬獲頗豐。
“小微型學(xué)習(xí)組織”所取得的每項(xiàng)成果,都吸引了不少學(xué)生加入其中,像“軟件開發(fā)”和“程序設(shè)計”小組不但顯著提升了組內(nèi)學(xué)生的編程能力和水平,而且隨著小組成員的動態(tài)管理,帶動和影響了一大批對程序設(shè)計感興趣的學(xué)生投入其中,有力推動了第一課堂和教師的教學(xué)科研工作。
“C++程序設(shè)計”作為入門級的面向?qū)ο蟪绦蛟O(shè)計課程,編程思想抽象、理解困難、語法復(fù)雜[5],對于宿遷學(xué)院這類新建地方本科院校來說還有師資力量偏弱、學(xué)生基礎(chǔ)較差等因素,如何使學(xué)生真正愿意學(xué)、學(xué)進(jìn)去并取得收獲,我們進(jìn)行了一系列的探索。實(shí)踐證明這些工作激發(fā)了學(xué)生的學(xué)習(xí)興趣,調(diào)動了學(xué)生的學(xué)習(xí)積極性,突出了學(xué)習(xí)重點(diǎn),降低了學(xué)習(xí)的復(fù)雜度,切實(shí)提升了學(xué)生的實(shí)際動手能力,促進(jìn)了本科應(yīng)用型創(chuàng)新人才的培養(yǎng)。
參考文獻(xiàn):
[1]楊樹媛,張志勇,馮向萍.“從做中學(xué)”教學(xué)思想在“C++
程序設(shè)計”課程教學(xué)改革中的應(yīng)用[J].軟件導(dǎo)刊,2014,
(11).
[2]譚浩強(qiáng).C++面向?qū)ο蟪绦蛟O(shè)計:第2版[M].北京:清華
大學(xué)出版社,2014:11-15.
[3]楊煉,鄒超偉,毛韶陽.應(yīng)用型本科院校C++課程教學(xué)改
革探索[J].計算機(jī)教育,2014,(21).
[4]Jeannette M W.Computational thinking[J].Commun-
ications of the ACM,2006,(3).
[5]章品正,於文雪.設(shè)計模式在C++課程教學(xué)中的運(yùn)用
[J].計算機(jī)教育,2014,(14).