馬振嬰
摘 要 基于高校非計(jì)算機(jī)專(zhuān)業(yè)的實(shí)際教學(xué)需求,進(jìn)行C/C++融合課程的探索和實(shí)踐,精心設(shè)計(jì)教學(xué)和實(shí)驗(yàn)內(nèi)容,并采用對(duì)比式、互動(dòng)式、聯(lián)想式和啟發(fā)式教學(xué)模式,取得較好的教學(xué)效果。但在教學(xué)中仍需解決學(xué)生個(gè)體差異大等各種問(wèn)題。
關(guān)鍵詞 非計(jì)算機(jī)專(zhuān)業(yè);C/C++融合課程;網(wǎng)上教學(xué)平臺(tái)
中圖分類(lèi)號(hào):G642.3 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1671-489X(2017)10-0116-02
1 引言
C和C++是高校兩門(mén)重要的基礎(chǔ)選修類(lèi)程序設(shè)計(jì)課程,大部分理工科專(zhuān)業(yè)對(duì)兩門(mén)課程都有要求。但目前的狀況是基礎(chǔ)和專(zhuān)業(yè)必修課的學(xué)分要求增加,導(dǎo)致基礎(chǔ)選修課的學(xué)分縮減,各專(zhuān)業(yè)在制訂課程計(jì)劃時(shí),都只能選擇C和C++其中的一門(mén)課程。更由于教學(xué)方面的欠缺,相當(dāng)一大部分學(xué)生(非計(jì)算機(jī)專(zhuān)業(yè))并不知道C和C++之間的密切聯(lián)系,在求職應(yīng)聘或?qū)嵙?xí)工作中走了不少?gòu)澛贰?/p>
為了解決這個(gè)問(wèn)題,筆者在教學(xué)內(nèi)容和方式上進(jìn)行研究和探索,嘗試將兩門(mén)課程進(jìn)行融合教學(xué)。這樣做既可以讓學(xué)生獲取“修一門(mén),得兩門(mén)”的益處,還可以讓他們更加深刻地理解面向結(jié)構(gòu)程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)的區(qū)別,為今后進(jìn)一步進(jìn)行程序設(shè)計(jì)的學(xué)習(xí)打下良好的基礎(chǔ)。
當(dāng)然,如何在有限的課時(shí)內(nèi)進(jìn)行有效的融合教學(xué),并不是一件簡(jiǎn)單的事情,需要對(duì)教學(xué)和實(shí)驗(yàn)內(nèi)容安排、教學(xué)方式和方法進(jìn)行深入的研究和總結(jié),以避免兩門(mén)課程都學(xué)不好的尷尬局面。下面筆者將結(jié)合教學(xué)實(shí)踐經(jīng)驗(yàn),對(duì)這兩個(gè)方面進(jìn)行深入探討,以求拋磚引玉。
2 教學(xué)和實(shí)驗(yàn)內(nèi)容的設(shè)計(jì)
教學(xué)內(nèi)容設(shè)計(jì) 表1是單C、單C++和C/C++融合課程的理論課時(shí)設(shè)計(jì)(理論32學(xué)時(shí))。在融合課程的教學(xué)安排中,不帶下劃線的是C和C++共有的部分,正常講授即可;帶下劃線的是C++區(qū)別于C的部分,需要用到對(duì)比、聯(lián)想和啟發(fā)式等教學(xué)技巧。具體的教學(xué)方法將在下一節(jié)進(jìn)行詳細(xì)討論。
第三章節(jié)(9~12課時(shí))在學(xué)生掌握了函數(shù)的使用后,即可引入對(duì)象的概念。沒(méi)有在課程剛開(kāi)始就引入對(duì)象編程的原因是,學(xué)生還沒(méi)有對(duì)變量與函數(shù)有深刻的認(rèn)識(shí),過(guò)早引入對(duì)象的概念,容易誘發(fā)學(xué)生的畏難情緒,不利于他們的消化和吸收。
單C++課程的后面部分內(nèi)容,這類(lèi)高級(jí)部分安排的課時(shí)數(shù)比較少。因?yàn)?2課時(shí)的學(xué)時(shí)有限,同時(shí)因?yàn)榉怯?jì)算機(jī)專(zhuān)業(yè)學(xué)生的特點(diǎn),對(duì)他們的要求比計(jì)算機(jī)專(zhuān)業(yè)的要相對(duì)降低一些,所以這類(lèi)的高級(jí)部分和指針的部分可以做相應(yīng)的弱化。
實(shí)驗(yàn)設(shè)計(jì) C和C++的實(shí)驗(yàn)學(xué)時(shí)都是32學(xué)時(shí),一共八個(gè)小實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)四學(xué)時(shí),具體內(nèi)容安排見(jiàn)表2。C/C++融合課程從第二個(gè)實(shí)驗(yàn)開(kāi)始,就引入面向?qū)ο蟮木幊獭T诿看螌?shí)驗(yàn)中,要求學(xué)生用面向過(guò)程和面向?qū)ο髢煞N方式來(lái)完成同一個(gè)題目。第四個(gè)實(shí)驗(yàn)(字符數(shù)組)中,要求用string.h系統(tǒng)庫(kù)函數(shù)和string對(duì)象兩種方式實(shí)現(xiàn)。最后一個(gè)實(shí)驗(yàn)中,引導(dǎo)學(xué)生探索使用C++對(duì)象代替C的結(jié)構(gòu)數(shù)據(jù)類(lèi)型的可行性。
3 教學(xué)方式
對(duì)比式教學(xué) 俄國(guó)教育家烏申斯基說(shuō)過(guò):“比較是一切理解和思維的基礎(chǔ),我們正是通過(guò)比較來(lái)了解世界上的一切?!庇捎贑和C++的緊密聯(lián)系性質(zhì),在C/C++融合課程中,筆者大量采用對(duì)比教學(xué)方法,如printf(scanf)和cin(cout)的對(duì)比,string.h庫(kù)函數(shù)和string對(duì)象的對(duì)比,用兩種方法(基于函數(shù)和基于對(duì)象)實(shí)現(xiàn)同一個(gè)實(shí)驗(yàn)設(shè)計(jì)的對(duì)比,等等。筆者還做了一些民意調(diào)查,了解學(xué)生更習(xí)慣和掌握哪一種編程方式,并讓他們總結(jié)和分析兩種方式的優(yōu)缺點(diǎn)。
互動(dòng)式教學(xué) 程序設(shè)計(jì)是一門(mén)需要和學(xué)生充分交流的課程。課堂內(nèi)外采用Sakai(網(wǎng)上教學(xué)平臺(tái))和雨課堂(手機(jī)APP)作為教學(xué)輔助手段,以增加和學(xué)生的互動(dòng)性。課前教師將課堂內(nèi)容PPT推送給學(xué)生進(jìn)行預(yù)習(xí),課堂上在講完一個(gè)知識(shí)點(diǎn)后,會(huì)推送相應(yīng)的習(xí)題給學(xué)生,學(xué)生將答案返回給教師,教師即可了解學(xué)生對(duì)這個(gè)知識(shí)點(diǎn)的掌握程度。課后的習(xí)題推送和批閱也可以在雨課堂APP上進(jìn)行。
聯(lián)想式教學(xué) 為了增強(qiáng)課堂的生動(dòng)性,把面向函數(shù)和面向?qū)ο髢蓚€(gè)概念和現(xiàn)實(shí)生活聯(lián)系起來(lái)。面向函數(shù)的編程用“分而治之”的道理來(lái)闡述。面向?qū)ο蟮母拍?,則用生活中的人及事物進(jìn)行聯(lián)想。比如:人有身高、體重、外貌等各種屬性,還有跑、跳、畫(huà)畫(huà)、唱歌、跳舞等各種動(dòng)作和技能;對(duì)象封裝的變量聯(lián)想到人的屬性,對(duì)象封裝的函數(shù)聯(lián)想到人的動(dòng)作和技能等。
啟發(fā)式教學(xué) 由于課時(shí)少,教學(xué)內(nèi)容多,又是C/C++兩門(mén)課程的融合教學(xué),時(shí)間非常緊張。因此,針對(duì)非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的特點(diǎn),對(duì)各章節(jié)里面那些實(shí)用性不強(qiáng)、偏難偏深的點(diǎn)進(jìn)行刪減。未講的部分告訴能力強(qiáng)的學(xué)生課外學(xué)習(xí)。要求學(xué)生課前必須充分預(yù)習(xí),在課堂上只學(xué)習(xí)重難點(diǎn),利用雨課堂隨時(shí)答疑,并積極開(kāi)展一些啟發(fā)式的探討,要求學(xué)生花一定的時(shí)間在課外完成。比如:指針與內(nèi)存地址的關(guān)系,就需要學(xué)生有一定的課外學(xué)習(xí)量才能更好地理解;實(shí)驗(yàn)三的掃雷游戲,教師給出邊界判定方法,然后告訴學(xué)生說(shuō)這個(gè)方法還有很多值得改進(jìn)的地方,從而啟發(fā)學(xué)生進(jìn)行進(jìn)一步的探索。
4 實(shí)踐效果
在重慶大學(xué)非計(jì)算機(jī)專(zhuān)業(yè)對(duì)C/C++融合課程進(jìn)行了教學(xué)實(shí)踐。課程進(jìn)行當(dāng)中利用Sakai(網(wǎng)上教學(xué)平臺(tái))、雨課堂和QQ答疑群和學(xué)生進(jìn)行了交流。大部分學(xué)生反映,對(duì)比學(xué)習(xí)和啟發(fā)式學(xué)習(xí)對(duì)他們幫助很大。教學(xué)方式生動(dòng)靈活,能夠有效激發(fā)學(xué)生對(duì)程序設(shè)計(jì)學(xué)習(xí)的興趣,學(xué)到的東西比單一的C或C++課程要多。
最終的考核體系是卷面60%+平時(shí)40%。從成績(jī)來(lái)看,優(yōu)良率20%,合格率65%,不及格率15%;和單C課程比較,差別不大。
5 存在問(wèn)題
由于來(lái)自不同省份不同地區(qū),學(xué)生自身的基礎(chǔ)相差太大。有些學(xué)生小學(xué)就開(kāi)始接觸程序設(shè)計(jì),非??斓亟邮芎瓦m應(yīng)了對(duì)比和啟發(fā)式教學(xué);而有些學(xué)生(特別是邊遠(yuǎn)地區(qū)),整門(mén)課上完了還沒(méi)有弄清楚分支和循環(huán),更別說(shuō)后續(xù)部分了。如何解決學(xué)生間存在的巨大的個(gè)體差異帶來(lái)的問(wèn)題,值得繼續(xù)深入思考和探索。另外,仍有部分學(xué)生感覺(jué)程序設(shè)計(jì)課程枯燥無(wú)味,實(shí)用性不強(qiáng)。
6 結(jié)論
從學(xué)生的意見(jiàn)反饋和最后考核的成績(jī)來(lái)看,C/C++融合課程的教學(xué)設(shè)計(jì)方案合理,理論和實(shí)驗(yàn)內(nèi)容安排恰當(dāng),教學(xué)方式和手段行之有效。今后將繼續(xù)完善理論和實(shí)驗(yàn)設(shè)計(jì),改進(jìn)教學(xué)方法,以增強(qiáng)課堂的實(shí)用性和趣味性。
參考文獻(xiàn)
[1]黃轉(zhuǎn)群.在程序設(shè)計(jì)教學(xué)中引入能動(dòng)模式,提高課堂教學(xué)有效性[J].中國(guó)信息技術(shù)教育,2009(24):91.
[2]劉煒.論如何應(yīng)用對(duì)比教學(xué)法進(jìn)行匯編語(yǔ)言教學(xué)[J].中國(guó)新通信,2013(4):64.endprint