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