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