摘要:本文主要從三點一線式教學(xué)方法上來指導(dǎo)C++面向?qū)ο蟪绦蛟O(shè)計課程的實踐教學(xué),并且補充案例輔助教學(xué)以及建立學(xué)生學(xué)習(xí)團(tuán)隊來提高實踐教學(xué)質(zhì)量。從實踐效果來看,這些方法對提高學(xué)生的實際編程能力有顯著效果,能大大提高C++課程的實踐教學(xué)質(zhì)量,對于培養(yǎng)面向應(yīng)用的高級專門人才具有積極作用。
關(guān)鍵詞:C++面向?qū)ο蟪绦蛟O(shè)計;實踐教學(xué);三點一線;案例教學(xué);教學(xué)改革
在C++面向?qū)ο蟪绦蛟O(shè)計課程教學(xué)中,提高學(xué)生實際編程能力一直是高校教師追求的目標(biāo)。目前,在對該課程的教學(xué)研究中,多側(cè)重于教學(xué)體系和模式的改革[1-3]、課程建設(shè)的研究[4]等方面。對于如何提高學(xué)生的實際編程能力和熟練運用C++進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計方面研究不多。為了提高學(xué)生運用C++語言的綜合能力,以及實踐操作能力,本文從三點一線式教學(xué)方法來指導(dǎo)實踐教學(xué),同時輔以專業(yè)案例教學(xué)來保障學(xué)生對C++課程的學(xué)習(xí),最大限度的提高學(xué)生的實踐動手能力。
1C++課程的實踐教學(xué)
C++面向?qū)ο蟪绦蛟O(shè)計是計算機相關(guān)專業(yè)學(xué)生進(jìn)行程序設(shè)計的一門重要的編程基礎(chǔ)課程。課程的主要目的是培養(yǎng)學(xué)生使用面向?qū)ο蟮某绦蛟O(shè)計方法來進(jìn)行軟件項目開發(fā)。實踐教學(xué)環(huán)節(jié)就是讓學(xué)生有學(xué)習(xí)和練習(xí)編程的機會。C++課程的實踐教學(xué)環(huán)節(jié)主要有實驗教學(xué)、綜合性的課程實習(xí)以及課程設(shè)計等。實驗教學(xué)主要解決學(xué)生對C++語言以及面向?qū)ο蟮幕靖拍畹木毩?xí)和理解,并且掌握可視化的C++開發(fā)環(huán)境和工具的使用。綜合性的課程實習(xí)或課程設(shè)計主要是讓學(xué)生練習(xí)綜合運用C++知識的能力,進(jìn)而讓他們熟悉和掌握使用C++或VC++來開發(fā)實用軟件項目的方法和過程。
C++課程的實驗教學(xué)主要內(nèi)容有:(1)至少熟悉和掌握一種可視化的C++開發(fā)工具。比如:Microsoft公司的Visual studio C++等工具;(2)C++語言編程基礎(chǔ)知識;(3)C++語言中對象和類及相關(guān)知識;(4)C++運算符重載;(5)類的繼承;(6)類的多態(tài)性。
C++語言綜合性的課程實習(xí)或課程設(shè)計是一種使用C++語言進(jìn)行的綜合實踐過程,它是綜合運用C++或VC++來設(shè)計一個較大的實用系統(tǒng),是對學(xué)生綜合運用C++語言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計能力的培養(yǎng)。為了盡快讓學(xué)生熟悉并掌握使用面向?qū)ο蟪绦蛟O(shè)計來開發(fā)實用系統(tǒng)的能力,這就要求綜合實踐的選題應(yīng)強調(diào)貼近實際軟件項目或選擇合適的橫向科研項目。綜合實踐是按照分組來完成的,每組完成一個項目,每組人員由1~3人組成,由組長負(fù)責(zé)管理該組。通過自由分組,能讓學(xué)生相互學(xué)習(xí),并且由程序設(shè)計能力強的同學(xué)可以幫助指導(dǎo)本組其他同學(xué),從而共同進(jìn)步和提高。
2三點一線教學(xué)方法
C++面向?qū)ο蟪绦蛟O(shè)計課程的實踐教學(xué)質(zhì)量最終體現(xiàn)出來的是學(xué)生使用C++進(jìn)行程序設(shè)計的能力。在作者多年的C++實踐教學(xué)經(jīng)驗總結(jié)基礎(chǔ)上,本文提出的三點一線式教學(xué)方法可以有效提高學(xué)生的C++課程的實踐操作能力,大幅提高C++課程的實踐教學(xué)效果。這里所講的三點一線教學(xué)方法的含義為:三點是指三個基本點,即理論教學(xué)、實驗教學(xué)、課程設(shè)計教學(xué);一線是指程序設(shè)計這條主線。抓好理論教學(xué)、實驗教學(xué)、課程設(shè)計教學(xué)的最終目的是提高學(xué)生的程序設(shè)計能力。程序設(shè)計能力、算法分析與設(shè)計能力、大型軟件系統(tǒng)的分析設(shè)計與應(yīng)用能力是計算機專業(yè)學(xué)生的三個基本能力[5]。培養(yǎng)學(xué)生的面向?qū)ο蟮某绦蛟O(shè)計能力正是C++課程實踐教學(xué)的中心任務(wù),即是實踐教學(xué)的主線,C++課程教學(xué)的任務(wù)就是圍繞這條主線而進(jìn)行。
2.1理論教學(xué)
C++課程的理論教學(xué)不同其他課程的理論教學(xué),它的理論教學(xué)不是只為講解理論,而是要為實踐教學(xué)服務(wù)。
為了提高實踐教學(xué)質(zhì)量,理論教學(xué)環(huán)節(jié)是重要的第一步。優(yōu)秀的理論教學(xué)可以讓學(xué)生很好的掌握C++的基本知識及編程要點。學(xué)生首先應(yīng)掌握理解面向?qū)ο蟮囊恍┗靖拍?,比?對象、類、面向?qū)ο蟪绦蛟O(shè)計的其他知識點,包括類的繼承、運算符重載、多態(tài)性、類模板等等。在講解基本概念時,應(yīng)多與程序設(shè)計聯(lián)系起來,讓學(xué)生知道:為何有這個概念,如何來運用這個概念。理論教學(xué)重點是要教會學(xué)生掌握這些基本概念和C++基本語句,并運用到程序設(shè)計中,即教會學(xué)生如何編寫程序。但是要熟練和靈活的編寫程序,就要到實踐教學(xué)中去學(xué)習(xí)了。
為了提高理論教學(xué)質(zhì)量,還可以借助于網(wǎng)絡(luò)和多媒體技術(shù)。通過網(wǎng)絡(luò)可以發(fā)布學(xué)習(xí)輔助資料(包括:課件、各種大綱、各種指導(dǎo)書、習(xí)題解答、教學(xué)案例及其它資料等)以及即時的輔導(dǎo)答疑。這樣可以極大的方便師生的互動并及時解決學(xué)習(xí)中的問題,還可以方便教師掌握學(xué)生的學(xué)習(xí)動態(tài),從而提高師生之間的互信,進(jìn)而建立良好的教和學(xué)的氣氛,并提升學(xué)生的學(xué)習(xí)興趣。通過多媒體可以進(jìn)行實時的編程教學(xué),讓學(xué)生對用C++編程有一個比較直觀的印象,讓他們有一個可以借鑒的內(nèi)容,從而更快的掌握編程要點。
2.2實驗教學(xué)
實驗教學(xué)是C++課程教學(xué)中的很重要的一個環(huán)節(jié)。它主要是要求學(xué)生通過上機操作,更進(jìn)一步的理解C++中面向?qū)ο蟮南嚓P(guān)概念,靈活的把C++語言運用到程序設(shè)計當(dāng)中去,學(xué)會如何使用面向?qū)ο蟮姆椒ň帉懗绦颉榱颂岣邔嶒灲虒W(xué)的效果和質(zhì)量,除了對學(xué)生的指導(dǎo)和管理外,我們特別強調(diào)實驗指導(dǎo)書的重要性,并要求實驗指導(dǎo)書必須滿足下列要求。
(1) 實驗內(nèi)容設(shè)計要求針對性強。實驗指導(dǎo)書上明確了實驗的內(nèi)容,這些內(nèi)容主要是根據(jù)知識點的安排來設(shè)置的。根據(jù)相關(guān)的知識點,給定一些題目,然后由學(xué)生自己編寫程序并上機調(diào)試通過。這些題目,針對性都很強,這樣便于學(xué)生對特定知識點的靈活運用。
(2) 明確對程序的調(diào)試要求。上機實驗就是要求學(xué)生編寫程序。衡量編寫程序能力的一個重要指標(biāo)就是調(diào)試程序的能力,所以,對學(xué)生上機調(diào)試程序的能力應(yīng)該非常重視,這就要求教師在實驗指導(dǎo)書中要明確指出程序調(diào)試的目的和要求。只有做到了調(diào)試程序的好手,才會是一個編程的高手。在實驗課程的前幾次課上,教師應(yīng)詳細(xì)指導(dǎo)學(xué)生進(jìn)行程序的調(diào)試。
另外,我們要求實驗指導(dǎo)書的內(nèi)容應(yīng)該詳細(xì),但也要防止對內(nèi)容規(guī)定太死扳這種情況。因為這樣抑制了學(xué)生的創(chuàng)造能力的發(fā)揮,對學(xué)生提高動手能力有負(fù)面影響。
還有,為了提高上機效率,實驗指導(dǎo)書應(yīng)事先發(fā)給學(xué)生,讓他們在上機前做好準(zhǔn)備,最好是要求他們直接寫好程序的初稿,上機時只需要調(diào)試就行了。這樣做不但可以加快實驗上機的效率,并且可以增加調(diào)試程序的時間,從而提高學(xué)生的編程能力。
但是,在實驗教學(xué)中一定要注意一個問題:回答學(xué)生的提問需要掌握方法。作者在帶學(xué)生上機時,經(jīng)常碰到這樣的問題:學(xué)生上機時,首先把程序全部輸入完畢,然后編譯運行。這時,編譯時就顯示出一大堆的錯誤。學(xué)生一看,驚了!不知從何下手。于是,學(xué)生馬上求助老師。這時,教師不要馬上去給學(xué)生排錯,而應(yīng)該告訴學(xué)生編程和調(diào)試的方法。這就是:編程時,不要一次輸入很多內(nèi)容,而是只輸入一小段內(nèi)容后,就馬上進(jìn)行編譯。沒有錯誤后,再編寫輸入后面的內(nèi)容。反復(fù)調(diào)試,直到整個程序編寫完成。
2.3課程設(shè)計教學(xué)
課程設(shè)計教學(xué)是綜合運用知識能力的體現(xiàn),是實踐教學(xué)最關(guān)鍵的環(huán)節(jié)之一,也是課程結(jié)束后最后一次綜合的實踐練習(xí)過程,所以必須非常重視課程設(shè)計教學(xué)。為提高課程設(shè)計教學(xué)效果,我們提出采用加強管理、精選課題、培育興趣、案例輔助等四個方面來進(jìn)行教學(xué)和管理。
(1) 加強管理。課程設(shè)計在教學(xué)計劃中的安排一般都是一周或兩周的時間。但是,為了讓學(xué)生有充分的時間選題和準(zhǔn)備,我們一般會提前一個月安排課程設(shè)計任務(wù)。在這么長的時間內(nèi)來做課程設(shè)計,加強管理就顯得特別重要。加強管理體現(xiàn)在這些方面:課程設(shè)計的安排要到位;對學(xué)生的設(shè)計進(jìn)度要進(jìn)行跟蹤;對學(xué)生的上機操作要做及時的指導(dǎo);對課程設(shè)計的結(jié)果檢查要嚴(yán)格;對課程設(shè)計的考核要科學(xué)。
(2) 精選課題。由于課程設(shè)計是綜合運用C++知識開發(fā)一個實用系統(tǒng),所以要難易適中,課題的內(nèi)容應(yīng)與實際應(yīng)用系統(tǒng)掛鉤。這要求學(xué)生的課題名由學(xué)生自己決定的同時,教師應(yīng)嚴(yán)格把關(guān),
(3) 培育興趣。學(xué)生能否編好程序,與學(xué)生是否對編程有興趣是有很大關(guān)系的。在課程設(shè)計中,由于是在一個較短的時間內(nèi),要求學(xué)生編出一個小的應(yīng)用系統(tǒng)。為達(dá)到這個目的,培育學(xué)生編程興趣是非常重要的。要培養(yǎng)學(xué)生“樂于學(xué)、勤于練、善于思”的能力。另外,在學(xué)生選擇課題時,可以優(yōu)先學(xué)生自己選擇,讓他們選擇自己感興趣的課題。比如:一些同學(xué)喜歡做各種游戲程序、一些同學(xué)喜歡做界面類設(shè)計程序等等。學(xué)生選完后,教師最后把關(guān),審查課題是否合適,包括課題的工作量、牽涉到的知識點以及課題難易程度等。學(xué)生選擇了自己感興趣的課題以后,他們做起來的積極性肯定會提高,程序設(shè)計能力自然也會得到提高。
(4) 案例輔助。案例輔助對學(xué)生的課程設(shè)計是非常重要的。有了案例輔助,學(xué)生就可以根據(jù)已有的案例進(jìn)行模仿學(xué)習(xí),從而事半功倍。本文后面對案例輔助教學(xué)進(jìn)行了適當(dāng)?shù)姆治觥?/p>
2.4培養(yǎng)學(xué)生程序設(shè)計能力為主線
上述三個基本點的教學(xué)歸根到底還是為提高學(xué)生的程序設(shè)計能力為主線。學(xué)生學(xué)習(xí)C++課程的目的不是純粹為學(xué)C++而學(xué)C++,而是要使用C++語言進(jìn)行軟件項目的開發(fā)。所以,C++課程的最終目的就是培養(yǎng)學(xué)生使用C++進(jìn)行程序設(shè)計的能力,只有學(xué)生使用C++編程能力強大了,這個課程的教學(xué)目的才達(dá)到了。
理論教學(xué)把編程需要用到的基本概念、語句、語法等介紹清楚;實驗教學(xué)把理論教學(xué)中的基本概念、語句、語法等知識進(jìn)行驗證、強化,并靈活運用到程序設(shè)計中,學(xué)會進(jìn)行單一功能的程序設(shè)計;課程設(shè)計則把理論教學(xué)和實驗教學(xué)中的各知識點綜合起來進(jìn)行練習(xí),培養(yǎng)學(xué)生使用C++進(jìn)行實用軟件開發(fā)的基本能力。
在培養(yǎng)學(xué)生程序設(shè)計能力的同時,應(yīng)當(dāng)注意拓寬學(xué)生的知識面。比如:要求學(xué)生不但會用C++編程,而且要求他們盡量采用VC++來編程,進(jìn)而要求同學(xué)們熟悉和掌握MFC編程。
3案例輔助實踐教學(xué)
案例輔助即要求任課老師要準(zhǔn)備非常豐富的教學(xué)案例,在整個教學(xué)過程中,把這些案例分發(fā)給學(xué)生,讓他們在自己的實踐教學(xué)過程中有一個可以參照的范本,并且在他們平時學(xué)習(xí)練習(xí)中,也可以去模仿,去琢磨,從而達(dá)到事半功倍的效果。
在準(zhǔn)備案例時,要遵循“易學(xué)”、“有趣”和“有用”的原則,這樣有利于激發(fā)學(xué)生的求知欲望[6]。同時還應(yīng)該注意如下的問題:
(1) 案例涉及到的知識點要盡可能多,不但應(yīng)包括C++編程的基本知識,更重要的是涉及到VC++編程時的各種知識點。比如,在MFC編程中,案例涉及的知識點可以有[7]:菜單應(yīng)用、鼠標(biāo)響應(yīng)、字體應(yīng)用、圖片控件、計時器、狀態(tài)欄、位圖操作等等。
(2) 各個知識點的案例數(shù)量要多,但案例本身不能太大。每個案例最好只用來練習(xí)一個知識點,這樣案例本身就會簡單,學(xué)生學(xué)習(xí)起來就不會吃力。相反,如果一個過大的案例,其中牽涉到許多知識點,那么學(xué)生練習(xí)起來就會無所適從,不知從何下手,這樣的案例就會起不到應(yīng)有的作用。
(3) 最后要有1~2個綜合的案例讓學(xué)生參考。前面介紹過:一個案例最好只介紹一個知識點,而不要有多個。其實,這是方便學(xué)生對各個知識點的學(xué)習(xí)。但是,一旦學(xué)生掌握了各個知識點后,要把各個知識點綜合起來時,還是需要1到2個綜合的案例來讓學(xué)生學(xué)習(xí)用。讓學(xué)生知道如何組織各個相關(guān)知識來開發(fā)一個較大項目。比如:一個完整的網(wǎng)絡(luò)通信程序或一個小型的游戲系統(tǒng)等。
4學(xué)習(xí)團(tuán)隊建設(shè)
根據(jù)學(xué)生的興趣和愛好,可以組成學(xué)生學(xué)習(xí)團(tuán)隊,或者吸納優(yōu)秀的學(xué)生到創(chuàng)新實驗室。在一個團(tuán)隊中,學(xué)生們可以相互的學(xué)習(xí),共同提高。我們學(xué)院就專門開設(shè)了一個學(xué)生創(chuàng)新實驗室,把一些優(yōu)秀的學(xué)生都集中在一起,跟著老師一起做項目或參加一些大學(xué)生競賽活動。在實驗室的學(xué)生由于經(jīng)常在一起學(xué)習(xí),一起做項目,所以他們的動手能力都是很強的。有這些學(xué)生做榜樣,又可以帶動整個班級的學(xué)習(xí)氣氛,并且可以給其他同學(xué)提供幫助,從而提高了整個班級學(xué)生的實踐動手能力。
5結(jié)語
近幾年來,在C++面向?qū)ο蟪绦蛟O(shè)計課程的教學(xué)過程中,對我院計算機相關(guān)專業(yè)的學(xué)生采用上述的實踐教學(xué)方法后,我院學(xué)生使用C++編程能力普遍得到了很大的提高。學(xué)生多次在計算機作品大賽上獲獎,獲獎等級也越來越高。并且,每年通過國家軟件技術(shù)資格和水平考試的人數(shù)也逐年上升。大部分同學(xué)考試獲得系統(tǒng)設(shè)計師資格。由于部分同學(xué)實踐動手能力很強,他們畢業(yè)后馬上就找到了很好的工作崗位。
本文主要從三點一線式教學(xué)方法上來指導(dǎo)C++面向?qū)ο蟪绦蛟O(shè)計課程的實踐教學(xué),并且補充案例輔助教學(xué)以及建立學(xué)生學(xué)習(xí)團(tuán)隊來提高實踐教學(xué)質(zhì)量。從實踐效果來看,這些方法對提高學(xué)生的實際編程能力有顯著效果,能大大提高C++課程的實踐教學(xué)質(zhì)量,對于培養(yǎng)面向應(yīng)用的高級專門人才具有積極作用。但是,在具體運用三點一線式教學(xué)時,任課老師還可以充分發(fā)揮自己的主觀能動性,根據(jù)自己學(xué)生的具體問題進(jìn)行具體分析,改良三點一線式教學(xué),有可能收到更好的實踐教學(xué)效果。
參考文獻(xiàn):
[1] 羅憲,王家偉,周建麗. 高級語言程序設(shè)計、面向?qū)ο蟪绦蛟O(shè)計精品課程教學(xué)改革與實踐[J]. 重慶交通大學(xué)學(xué)報:社科版,2009,9(1):142-143.
[2] 吳粉俠,段群,李紅. 面向?qū)ο蟪绦蛟O(shè)計課程教學(xué)模式的探索與實踐[J]. 福建電腦,2009(8):36-37.
[3] 劉旭紅,伶俐鵑. 面向?qū)ο蟪绦蛟O(shè)計雙語教學(xué)的探索與實踐[J]. 教育理論與實踐,2007(27):77-78.
[4] 宋海玉,李錫祚,王玲芬,等. 面向?qū)ο蟪绦蛟O(shè)計課程建設(shè)的探索與實踐[J]. 計算機教育,2009(5):91-94.
[5] 中國計算機科學(xué)與技術(shù)學(xué)科教程2002研究組. 中國計算機科學(xué)與技術(shù)學(xué)科教程CCC2002[M]. 北京:清華大學(xué)出版社,2002.
[6] 邱桂華,袁麗. 案例教學(xué)在C++面向?qū)ο蟪绦蛟O(shè)計中的實踐[J]. 江西藍(lán)天學(xué)院學(xué)報,2008,3(4):51-52.
[7] 網(wǎng)冠科技. Visual C++6.0時尚編程百例[M].北京:機械工業(yè)出版社,2001.
Practical Teaching Research on C++ Object-oriented Programming
PENG Zhao-yi, ZHU Yan-hui1, ZHOU Yu2
(1. School of Computer and Communication, Hunan University of Technology, Zhuzhou 412008, China; 2. School of Electrical and Information Engineering, Hunan University of Technology, Zhuzhou 412008, China)
Abstract: In this paper, we use the three basic points and a main line teaching methods to guide practice teaching of C++ object-oriented programming course, and use added case-assisted teaching methods and establish the student learning teams to improve the quality of practical teaching. Practices have proved that these methods can effectively improve the students’ programming capability, and can greatly enhance the quality of C++ practical teaching, and have positive effects in the training of application-oriented high-level specialized personnel.
Key words: C++ object-oriented programming; practical teaching; three basic points and a main line; case teaching; teaching reform
(編輯:白杰)