周 昕
(哈爾濱理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
C++程序設(shè)計課程教學(xué)方法改革
周 昕
(哈爾濱理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
針對“C++程序設(shè)計”課程原有教學(xué)模式中存在的局限性,結(jié)合計算機應(yīng)用專業(yè)的實際,提出了以明確教學(xué)目標、強化教材建設(shè)、采用“案例教學(xué),任務(wù)驅(qū)動”的教學(xué)方法、通過教與練完美結(jié)合的各層次實踐能力訓(xùn)練,以及充分發(fā)揮網(wǎng)絡(luò)教學(xué)平臺作用等特色的新型教學(xué)方法的改革,達到了增強學(xué)生理論水平,提高實踐能力,提升學(xué)習(xí)興趣,促進教與學(xué)的雙向互動,提高學(xué)生編程能力、改善教學(xué)效果的目的。
C++程序設(shè)計;教學(xué)方法;實踐
基于VisualC++6.0可視化開發(fā)平臺的C++程序設(shè)計語言,以其強大的開發(fā)功能受到 IT業(yè)界的一致認同,是眾多理工科院校開設(shè)的計算機基礎(chǔ)必修課。該課程具有很強的可操作性,其實踐教學(xué)是培養(yǎng)學(xué)生編程能力的重要手段[1]。
目前,各高校普遍是以《C++程序設(shè)計》[2]為講授內(nèi)容。伴隨著一系列的教學(xué)改革,舊有的教材、教學(xué)方法、教學(xué)模式和教學(xué)手段都不再適用,探索一套適應(yīng)當(dāng)前 C++課程教學(xué)的教學(xué)法勢在必行。本文旨在初步探究一套讓學(xué)生重視 C++編程應(yīng)用能力,提高學(xué)生的學(xué)習(xí)興趣,促進教與學(xué)的雙向互動,增強學(xué)生解決實際問題能力的教學(xué)方法。
(一)以理論作為教學(xué)的首要目的
長期以來,理論教學(xué)作為主導(dǎo)型教學(xué)模式,一直在我國高等學(xué)校的教學(xué)中占據(jù)著核心地位。目前,C++課程的教學(xué)仍采用課堂講授、布置作業(yè)及實驗,這種“教本位”的教學(xué)模式中,教師是課堂的中心,注重教的原發(fā)性和主動性,把著眼點放在“教”上,忽視了學(xué)生的主體性,讓學(xué)生的學(xué)習(xí)始終處于被動狀態(tài),師生之間缺少互動,無法發(fā)揮學(xué)生的主觀能動性[3]。學(xué)生普遍反映對知識應(yīng)用缺乏整體感,按部就班地學(xué)習(xí) C++程序設(shè)計的知識點,而沒有依托于完整的實際項目,會令學(xué)生感到所學(xué)的知識點支離破碎,不成體系,學(xué)完以后容易遺忘。而且,缺乏實際工程項目開發(fā)體驗,只是停留在知識點學(xué)習(xí)以及例題的練習(xí)上,沒有實際工程項目開發(fā)的歷練和體驗,就無法直接感受所學(xué)知識在實際工作中的作用和地位,將會抑制學(xué)生的學(xué)習(xí)興趣,影響學(xué)習(xí)效果[4]。
(二)教材選擇不當(dāng)
選擇教材是教學(xué)過程中非常重要的一個環(huán)節(jié),是直接反映教學(xué)重點風(fēng)向標。選擇重于理論的教材,教師很容易偏向介紹理論知識;反之則偏向介紹應(yīng)用知識。早期教學(xué)中,教師容易落入教材千年不變的窠臼,不能審時度勢地伴隨當(dāng)今數(shù)據(jù)庫發(fā)展趨勢,而片面講解通用性理論,這些將最終影響到學(xué)生能力和興趣的培養(yǎng)。
(三)教學(xué)手段陳舊
由于課堂教學(xué)學(xué)時有限,只能傳授基本知識點,而且我們的學(xué)生一直是在考試體制的管制下學(xué)習(xí)的,因此學(xué)生學(xué)習(xí)不主動、教學(xué)效果不明顯,加上部分學(xué)生對實踐環(huán)節(jié)不夠重視,導(dǎo)致學(xué)生在上機時不會融會貫通,缺乏獨立解決問題的能力。
由于教材內(nèi)容、重點和教學(xué)條件的限制,傳統(tǒng)的教學(xué)手段一般比較單一、落后,教師在教學(xué)的過程中側(cè)重陳述,學(xué)生重書本、輕實踐的最終結(jié)果恰好適得其反,導(dǎo)致了學(xué)生的實踐能力無法提高,程序的閱讀能力差。
(一)明確教學(xué)目標,突出重點、把握難點
C++語言程序設(shè)計課程的教學(xué)目標為:通過該課程的教學(xué),使學(xué)生掌握程序設(shè)計語言的一些基本概念和語法規(guī)則,掌握程序設(shè)計的一般方法,掌握過程化程序設(shè)計與面向?qū)ο蟪绦蛟O(shè)計方法,進一步培養(yǎng)學(xué)生的軟件開發(fā)能力。
根據(jù)此目標,面對內(nèi)容繁多的 C++語言,必須突出重點,突出實用性。主要教導(dǎo)學(xué)生能正確運用 C++語言編寫程序,從思想與算法上去學(xué)習(xí)面向?qū)ο缶幊蘙5]。
1.突出重點:C++的內(nèi)容繁多,不可能在有限的課堂時間內(nèi)全面講解,而應(yīng)該有重點地去講授知識要點。如 C++基本數(shù)據(jù)類型、語法結(jié)構(gòu)、程序結(jié)構(gòu)、傳統(tǒng)結(jié)構(gòu)化程序設(shè)計、數(shù)組、指針類和對象、繼承和派生類、多態(tài)性和虛函數(shù)、面向?qū)ο缶幊痰葍?nèi)容。
2.把握難點:教學(xué)內(nèi)容中涉及很多的抽象概念,既有難度,又有深度。如數(shù)組、指針、繼承、多態(tài)性等。
(二)加強教材建設(shè),提高學(xué)生理論水平和實踐能力
教師在教學(xué)的過程中應(yīng)當(dāng)選擇合適的教材,對教學(xué)的內(nèi)容能作合適的安排。由于學(xué)生學(xué)習(xí)該課程的能力和興趣往往差別很大,對于學(xué)有余力的學(xué)生,應(yīng)該為他們創(chuàng)造深入學(xué)習(xí)的機會。教材應(yīng)該是一個學(xué)習(xí)的園地,不是演講稿,教師的講課就好像是導(dǎo)游,為學(xué)生游覽整本書提供指導(dǎo)。
我們將“授課要精練,教材內(nèi)容要廣”作為教學(xué)改革的一項措施,這樣有利于加強素質(zhì)教育,從而提高教學(xué)質(zhì)量。教材中以一個重點案例貫穿全書,使各章知識既相互獨立又相輔相成,讓學(xué)生在一學(xué)期的學(xué)習(xí)后,以本案例為基礎(chǔ),掌握完整開發(fā)一套數(shù)據(jù)庫系統(tǒng)的全過程。
除此之外,還要向?qū)W生推薦適當(dāng)?shù)膮⒖假Y料和文獻,作為教材的有益補充。讓教材為教學(xué)服務(wù),最大程度地提高學(xué)生的理論水平和實踐能力。
(三)采用“案例教學(xué),任務(wù)驅(qū)動”的教學(xué)方法
在教學(xué)過程中,給出具體的案例,即提出問題,引導(dǎo)學(xué)生在問題中學(xué)習(xí),給學(xué)生時間思考、討論,以解決問題,從而更深入地展開學(xué)習(xí)。實踐證明,這種教學(xué)方法能夠充分調(diào)動學(xué)生學(xué)習(xí)的積極性和主動性[6]。
例如在講數(shù)組的概念時,教師先設(shè)置問題編程計算個人的數(shù)學(xué)平均成績。根據(jù)以前所學(xué),學(xué)生會想到定義一個變量,通過循環(huán)來實現(xiàn)。進一步要求計算個人的數(shù)學(xué)成績的均方差。學(xué)生想到需要說明個類型相同的變量用于存放這個人的數(shù)學(xué)成績。再進一步要求計算個人的數(shù)學(xué)成績均方差。這時候如再說明個變量,則會將問題復(fù)雜化,學(xué)生此刻需要討論該如何合理說明變量。最后,再深入一步求個人的數(shù)學(xué)平均成績。此時,當(dāng)教師引出數(shù)組的概念、分析數(shù)組的性質(zhì)時,學(xué)生不僅能夠很容易記住數(shù)組的性質(zhì),還能夠知道在什么情況下使用數(shù)組類型,達到事半功倍的效果。
在案例的選擇上,要注意以下幾點:
1.實踐性強,應(yīng)符合教學(xué)的實際,不能主觀臆造。
2.啟發(fā)性好,必須包括一定的問題,能啟發(fā)學(xué)生的思維。
3.代表性強,使之反映同類問題的一般特征,能夠?qū)W(xué)生起到舉一反三和觸類旁通的作用。
4.難易適中,可以考慮總體看有難度,但通過層層分解,得到由一序列學(xué)生易于想出的子問題,讓學(xué)生感到自己有能力實現(xiàn),愿意主動積極地參與。
我們常用案例有:聊天程序、通訊錄、商品庫存管理、圖書館管理等。
任務(wù)設(shè)計與制定要有可操作性、趣味性和拓展性[7]114??刹僮餍员WC學(xué)生都能完成實驗而促進學(xué)生學(xué)習(xí)信心的建立,讓每一位學(xué)生都有收獲,使所有學(xué)生都“動”起來。趣味性體現(xiàn)在提高學(xué)生學(xué)習(xí)的興趣,讓學(xué)生帶著興趣來做任務(wù),即便遇到困難也不會輕易放棄,對每一個任務(wù)都躍躍欲試,對進一步的學(xué)習(xí)充滿期待。拓展性是讓學(xué)有余力的學(xué)生有發(fā)揮的余地,激發(fā)他們進一步鉆研的斗志。因此,最好在滿足教學(xué)要求的前提下選擇一些與現(xiàn)實生活聯(lián)系比較緊密的題目做任務(wù)。
(四)加強實踐教學(xué)
C++程序設(shè)計是一門實踐性很強的課程[7]113,僅僅靠教學(xué)中“精講多練”是不夠的,還應(yīng)該配套其他的實踐學(xué)習(xí)。程序設(shè)計的實驗教學(xué)通常分為三個層次:
(1)基礎(chǔ)與驗證型實驗;(2)設(shè)計與開發(fā)型實驗;(3)研究與創(chuàng)新型實驗。
只有把它們貫穿整個教學(xué)過程,通過逐步提升,才能完成 C++程序設(shè)計課程的教學(xué)目標,培養(yǎng)學(xué)生分析問題、解決問題的能力,培養(yǎng)學(xué)生的創(chuàng)新意識。我們在“C++程序設(shè)計”的基礎(chǔ)教學(xué)中主要以第一層次為主,在“C++課程設(shè)計”環(huán)節(jié)中完成第二層次的任務(wù),并在其后的課外科研設(shè)計中,向第三層次推進。
教學(xué)活動中,把基礎(chǔ)教學(xué)與課程設(shè)計相結(jié)合,各有側(cè)重,互為補充。在基礎(chǔ)教學(xué)中采用W indows平臺下的控制臺編程,突出編程基礎(chǔ)能力的培養(yǎng)。在課程設(shè)計中引入標準W indows圖形界面編程,把面向?qū)ο蟮木幊趟枷霊?yīng)用于解決實際問題,提高學(xué)生編程應(yīng)用能力,使教學(xué)的難點得到較好地分解,降低學(xué)習(xí)的難度。
整個實踐教學(xué)組織過程中,教師可從以下幾個方面進行考慮。
1.理論教學(xué)與上機實踐緊密銜接。實踐盡量在理論講授之后立即進行,隨講隨練,趁熱打鐵,會取得比較理想得效果。有條件時,在電子教室授課更為理想,教師可以在講課之余,現(xiàn)場輔導(dǎo)學(xué)生上機演練。
2.明確實踐目的和任務(wù)。根據(jù)教學(xué)內(nèi)容,編寫含有實例和習(xí)題的上機實踐指導(dǎo)書,實踐前,先熟悉實踐指導(dǎo)書給出的主要步驟;上機實踐過程中,讓學(xué)生模仿實例進行操作,細心體會實例中所包含的理論知識,然后獨立完成上機習(xí)題。實踐結(jié)束要求完成實踐報告,之后就普遍存在的問題進行課堂講解。
3.做好輔導(dǎo)工作。學(xué)生上機時,應(yīng)隨時注意同學(xué)的實踐過程和情況,并及時給予指導(dǎo),有問題及時糾正,這樣上機實踐效果會更好。
4.認真批閱實踐報告。讓學(xué)生每次實驗都應(yīng)有詳細的實驗報告,寫出收獲和體會,已解決和尚未解決的問題,進一步完善的方法或設(shè)想。對課程設(shè)計后期階段,還應(yīng)該有小型設(shè)計答辯會,分組都來談?wù)勗O(shè)計方案的制定,匯報分工與合作的情況,演示運行自己的系統(tǒng)。
(五)充分利用網(wǎng)絡(luò)教學(xué)平臺
使用形象化資料可以激發(fā)學(xué)生的學(xué)習(xí)興趣,并加強教學(xué)效果。因此教師要精心策劃教案,提供豐富的實例,精心制作 CA I課件,使教學(xué)內(nèi)容緊湊有序,形象直觀生動,便于學(xué)生實時理解掌握概念和方法,提高教學(xué)效果。
充分發(fā)揮網(wǎng)絡(luò)教學(xué)平臺的優(yōu)勢,作為課堂教學(xué)的補充,使學(xué)生能隨時交流、復(fù)習(xí)和了解 C++語言的最新動態(tài)。在此平臺之上,學(xué)生可以反復(fù)下載課件,可以進行在線答疑,同時鼓勵學(xué)生參與網(wǎng)上論壇,開展各種學(xué)習(xí)討論與交流,使其在積極、活躍的學(xué)習(xí)氛圍中掌握相關(guān)知識。
(六)結(jié)合學(xué)生課外科研活動,培養(yǎng)學(xué)生解決實際問題的能力
根據(jù)我院倡導(dǎo)的,以提高學(xué)生解決實際問題能力為主旨,廣泛開展學(xué)生課外科研活動的精神,從去年開始,我以 C ++語言課程為平臺,收集一些典型問題布置給學(xué)生,形成小課題。讓學(xué)生自由選題,單獨承擔(dān),利用本教學(xué)階段的學(xué)習(xí)內(nèi)容,通過親自調(diào)研、查閱文獻、收集資料、分析研究、設(shè)計實施來解決問題,將學(xué)到的理論知識和現(xiàn)實生活實際問題緊密結(jié)合。
小課題完成后,讓學(xué)生在“學(xué)生課外科研活動總結(jié)”上介紹自己的成果,互相交流,并訓(xùn)練表達能力。在教學(xué)內(nèi)容的下一個階段,教師可以為學(xué)生再布置新的題目,或讓學(xué)生用新學(xué)到的知識對上一階段的課題進行改進,得到更好的解決方法介紹給其他學(xué)生。
以上教學(xué)方法在計算機專業(yè)的C++程序設(shè)計課程中進行試用,教學(xué)效果反映較好。學(xué)生對該課程普遍表示感興趣。通過實踐,明顯提高了學(xué)生的編程能力和應(yīng)用能力。教師在今后的教學(xué)工作中,還要繼續(xù)關(guān)注課程的發(fā)展方向和趨勢,選擇適當(dāng)教材,更新知識體系和教學(xué)手段,使學(xué)生適應(yīng)編程的實際需要。
[1]鄒曉華,華偉.C++程序設(shè)計語言教學(xué)改革與實踐[J].今日科苑,2008,(21):117.
[2]鄭莉.C++語言程序設(shè)計[M].北京:清華大學(xué)出版社, 2006:19-20.
[3]顧勛梅.C++課程教學(xué)改革的探討與研究 [J].科教文匯,2009,(8):39.
[4]趙香會,賀萌.項目教學(xué)法在高職 C++課程教學(xué)中的探索和應(yīng)用[J].科技信息,2009,(33):299.
[5]余戰(zhàn)秋.《C++語言程序設(shè)計》課程教學(xué)方法研究[J].巢湖學(xué)院學(xué)報,2007,(9):140-142.
[6]賈振華,李瑛.《C++程序設(shè)計》課程教學(xué)方法探析[J].華北航天工業(yè)學(xué)院學(xué)報,2006,(8):47-49.
[7]劉彥賓.C++課程設(shè)計教學(xué)實踐與探討[J].萍鄉(xiāng)高等??茖W(xué)校學(xué)報,2009,(6).
Abstract:This paper explores the teachingmethodsofC++coursewhich is based on pointingout the limits in the teaching course at present,and concerning computermajored students'practice.The methods aims to enhance the students'ability of theory and practice,arouse their interest and promote the interactivity be tween teaching and learning,enhance the students'abilityof programming and application.
Key words:C++programming;teachingmethods;practice
(責(zé)任編輯:侯秀梅)
Research on TeachingM ethods of C++Programm ing
ZHOU Xin
(Harbin University of Science and Technology,Harbin 150080,China)
G642.0
A
1001-7836(2010)06-0072-03
2010-04-19
周昕(1968-),女,黑龍江哈爾濱人,講師,從事面向?qū)ο蟪绦蛟O(shè)計課程理論教學(xué)研究。