周 林 姚 韻 鐘 倫
C++程序設(shè)計語言是在C 程序設(shè)計語言的基礎(chǔ)上擴充了面向?qū)ο髾C制而形成的一種面向?qū)ο蟮某绦蛟O(shè)計語言,它在降低軟件的復雜性,改善其重用性和可維護性,提高大型軟件的開發(fā)效率等方面具有十分重要的意義。C++程序設(shè)計課程是軟件工程、計算機科學與技術(shù)等專業(yè)的一門基礎(chǔ)課程,旨在培養(yǎng)學生樹立面向?qū)ο蟮木幊趟枷?,掌握有關(guān)面向?qū)ο蟮幕靖拍睿瑢W會面向?qū)ο蟪绦蛟O(shè)計的基本方法和技能,具備利用C++程序設(shè)計語言解決實際問題的能力,為后續(xù)課程的系統(tǒng)性學習和今后的應用開發(fā)打好基礎(chǔ)。
第一,教學模式單一,教學效果一般。C++程序設(shè)計課程理論教學中,教師基本按傳統(tǒng)的教學模式進行教學,通過板書和PPT 演示等方式講授課程的理論知識,使得學生被動地接受知識[1]。在實踐教學中,教師布置上機實訓的內(nèi)容,學生按照要求進行練習,鞏固相關(guān)理論知識。但由于理論教學的進度與實驗教學的進度不同步,學生在上實驗課時往往不太記得前面所學的理論知識,以致實踐效果不佳,影響后續(xù)內(nèi)容的學習。
第二,教材內(nèi)容傳統(tǒng),學習效果不佳。傳統(tǒng)C++程序設(shè)計課程的教材以C++語言的語法知識介紹為主線,其中的概念繁多、規(guī)則復雜,學生常常只注重語法知識的學習,而忽略了程序設(shè)計能力的訓練,因此,學習效果不佳,難以達到課程目標。
第三,考核方式單一,學習動力不足。C++程序設(shè)計課程目前的考核評價還是以期末筆試的方式來確定學生的成績。這種單一的評價方式未融入行業(yè)或企業(yè)的人才需求,無法全面客觀地反映學生的學習效果,難以將學生培養(yǎng)成符合行業(yè)或企業(yè)需求的程序設(shè)計人才。并且,由于課程考核中沒有上機考試,或者部分學校即便有上機考試,其成績所占比重也不大。這就容易讓學生不重視日常學習中對實踐能力的培養(yǎng),導致學生編程能力不足,從而逐漸喪失學習興趣,缺乏學習動力[2]。
順應時代發(fā)展,持續(xù)不斷地進行教學改革,加大課程的改革力度,積極調(diào)整課程內(nèi)容和教學方法等是抓好課程建設(shè)、提高教學質(zhì)量的關(guān)鍵。
C++語言是在C 語言的基礎(chǔ)上發(fā)展而來的,它們的基礎(chǔ)語法知識非常相似,所以教師在講授C++程序設(shè)計的時候,不需要特別強調(diào)語法,要盡早引入面向?qū)ο蟮挠嘘P(guān)概念,讓學生接受面向?qū)ο蟮乃枷?,理解面向?qū)ο蟮幕靖拍?,學會程序設(shè)計的基本方法和技能,不斷提高學生抽象思維。要將教學重點放在面向?qū)ο蟮某绦蛟O(shè)計思想上。教學內(nèi)容的整體布局如表1所示。
表1 C++程序設(shè)計教學內(nèi)容
學習C++ 程序設(shè)計時,一是學習C++ 語言本身,二是學習程序設(shè)計。無論是作為工具的語言,還是程序設(shè)計,其共同特點是應用性強。因此,在對C++程序設(shè)計課程進行設(shè)計的時候,要注重“行業(yè)或市場為導向、能力為本位”的人才培養(yǎng)模式,以面向?qū)ο蟪绦蛟O(shè)計為重點[3]。
一是項目導向,任務(wù)驅(qū)動。設(shè)計一個涵蓋各個章節(jié)知識的項目,比如可以將人力資源管理系統(tǒng)細分為若干個功能模塊,作為學習的案例。在案例中引出問題,通過解決問題來學習和掌握相關(guān)知識點。采用任務(wù)驅(qū)動、案例教學法,可以激發(fā)學生對程序設(shè)計的學習興趣,提高學生使用C++語言解決實際生活中問題的能力。
二是實施學科競賽驅(qū)動機制。學??梢远ㄆ谂e辦一些相關(guān)的學科競賽,比如程序設(shè)計大賽、計算機作品賽等,對一些有潛能的、表現(xiàn)優(yōu)異的學生進行表彰,并鼓勵他們加入學院的創(chuàng)新協(xié)會,對其進行重點培養(yǎng)。然后,在創(chuàng)新協(xié)會中選拔出一些在編程方面拔尖的學生,代表學校參加省級比賽,甚至國家級比賽。以各種技能競賽拓展教學平臺,通過以賽促教、以賽促學、賽練結(jié)合的方式,增強學生的創(chuàng)新意識,提高學生的實踐能力。
一是講、練結(jié)合式教學??紤]到學生在課堂上能集中注意力聽課的時間是有限的,所以教師的講授時間可以根據(jù)班上學生的聽課情況做出調(diào)整,不一定要整堂課都講授理論知識。教師要一邊講解一邊觀察,發(fā)現(xiàn)有大部分學生的注意力開始下降時應暫停講授,可以布置一個與前面講授的知識點相關(guān)的習題讓學生進行練習,并要求學生在限定的時間內(nèi)完成,將學生在課堂上的答題情況納入平時成績的考核之中。這種教學方式通過教學狀態(tài)的轉(zhuǎn)換,不僅可以讓學生再次集中注意力,還可以讓學生及時運用所學知識解決問題,對所學內(nèi)容進行鞏固,激發(fā)他們的學習興趣,調(diào)動其主觀能動性[4]。
二是啟發(fā)式教學。課堂的主體是學生,教師在課堂上講授的知識,只有學生接收到并真正理解了才有意義,因此,要讓學生參與教學,調(diào)動他們的學習積極性。C++程序設(shè)計課程的每個知識點都有其提出的應用背景,在實際教學過程中,教師可以通過遞進的方式開展啟發(fā)式教學。比如,在介紹類的定義的時候,可以先回顧聲明一個結(jié)構(gòu)體的一般形式,并設(shè)計一個小程序去測試,然后在結(jié)構(gòu)體聲明的基礎(chǔ)上,把struct 用class 代替,其他地方不變,則結(jié)構(gòu)體的聲明就變成了類的聲明。此時,再運行剛剛的小程序,會發(fā)現(xiàn)出錯了。報錯信息cannot access private member declared in class 的展示,說明類與結(jié)構(gòu)體的區(qū)別是缺省的訪問權(quán)限不同。結(jié)構(gòu)體中定義的成員缺省的訪問權(quán)限為public,類缺省的訪問權(quán)限為private。由此引出類中的成員函數(shù)。如果類中的數(shù)據(jù)成員完全無法訪問,類的存在就沒什么意義了,那要怎樣訪問呢?答案是在類中定義訪問相應數(shù)據(jù)成員的函數(shù)成員,訪問權(quán)限說明為public。這樣,就可以通過調(diào)用公有成員函數(shù)實現(xiàn)對數(shù)據(jù)成員的訪問。最后,給出類定義的一般形式,并進行完整性說明。這種遞進的過程將類的定義形式順理成章地展示在學生面前,使得學生理解起來會更加方便,并且留下比較深刻的印象。
三是現(xiàn)場編寫代碼?,F(xiàn)場編寫代碼的教學方法是指,在課堂上利用投影儀、多媒體、計算機等工具,結(jié)合開發(fā)環(huán)境,一步一步地進行程序開發(fā),一邊敲代碼一邊進行相關(guān)知識的講解,將程序的編輯、編譯、調(diào)試、運行等環(huán)節(jié)都展示給學生,使學生可以觀摩到每一個案例程序的全部開發(fā)過程,從而更快上手操作,減少初學者對編程的畏懼感?,F(xiàn)場編寫代碼的教學方法會使整個課堂更有生氣,并且使課堂的互動性和趣味性明顯增強,激發(fā)學生的學習熱情和主動性。
四是引入學科競賽,以賽促學。在教學過程中,引入“藍橋杯”等專業(yè)學科競賽的試題,以賽促教、以賽促學,提高學生創(chuàng)新實踐能力。在課程教學的中后期,當學生掌握了一定的基礎(chǔ)知識和程序設(shè)計方法之后,鼓勵學生參加“藍橋杯”等專業(yè)學科競賽。首先,教師可以為學生介紹各種專業(yè)競賽的比賽規(guī)則、參賽流程、注意事項等,讓學生對各類專業(yè)學科競賽有一定的認識,激發(fā)學生的興趣,引導他們關(guān)注競賽,分析真題,學習競賽中涉及的相關(guān)內(nèi)容和知識。其次,教師可以指導學生參加學校的專業(yè)學科選拔賽,引導學生結(jié)合比賽要求深入學習計算機相關(guān)的算法、數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計方法等,指導學生選擇合適的題目?!耙再惔俳蹋再惔賹W,學賽融合”的方法讓學生能夠更加系統(tǒng)地學習計算機相關(guān)知識,為其將來就業(yè)打好基礎(chǔ)。實踐證明,這種教學方式能使學生參加學科競賽的積極性大大提高,學習熱情不斷上升,學科競賽成績也有顯著提高。許多學生在藍橋杯、大學生計算機設(shè)計大賽等專業(yè)競賽中取得了良好的成績。
五是建立網(wǎng)上學習平臺,培養(yǎng)學生自主學習的能力。學生自主學習能力的培養(yǎng)對其以后的工作和學習大有裨益。由于自主學習能力是創(chuàng)新能力培養(yǎng)的基礎(chǔ),培養(yǎng)學生自學能力是高校教育教學中的一個重要任務(wù),尤其是應用型高校更應加強學生自主學習能力的培養(yǎng)。自主學習能夠?qū)φn堂學習的知識進行有效補充和延伸。自主學習能力培養(yǎng)的關(guān)鍵除了引導學生加強課外學習外,還要為學生的課外學習建立一個良好的網(wǎng)絡(luò)學習平臺。利用網(wǎng)絡(luò)平臺,教師可以充分參與、管理學生的學習過程,掌握學生的學習動態(tài),從而及時為學生答疑解惑。同時,建立網(wǎng)上學習資源,上傳課程大綱、教學日歷、網(wǎng)絡(luò)課件、教學視頻、參考資料、模擬題庫等學習資料,為學生的課前預習、課后復習提供豐富的資源和個性化的輔助。在C++程序設(shè)計教學中也可以利用網(wǎng)絡(luò)平臺、多媒體、計算機等手段輔助教學,提高教學趣味性,調(diào)動學生學習積極性。在教師的引導下,鼓勵學生利用網(wǎng)絡(luò)教學平臺上提供的各種教學資源與教師互動,加強師生間的交流,鼓勵學生參與教學和科研項目,共同探討和學習,積極討論、發(fā)言,提出問題并最終解決問題。這樣能夠充分發(fā)揮學生學習的主觀能動性,提升學習效率。通過加強網(wǎng)絡(luò)平臺的應用,改變傳統(tǒng)以教為主的教學方式,將課堂教學從以教師為中心轉(zhuǎn)變?yōu)橐詫W生為中心,促使學生在掌握基礎(chǔ)知識的同時,發(fā)揮學生的自主學習能力和創(chuàng)造能力,達成應用型高校培養(yǎng)適應新時代發(fā)展需要的復合型、應用型人才的目標。
傳統(tǒng)的試卷筆試考核方式著重考核學生對課程基本知識點和語法的掌握情況,但是這些成績不能完全體現(xiàn)出學生的程序設(shè)計能力。因此,可以適當增加實踐考核的比重,著重考查學生的綜合素質(zhì)。這種考核方式既考查了學生對基本知識的掌握情況,又考查了學生的編程能力[5]。比如,對于C++程序設(shè)計課程設(shè)計來說,可以先讓學生把完成的程序及相關(guān)文檔提交到教師郵箱或指定的地方,由教師逐一檢查交過來的程序,讓程序驗收合格的學生到講臺上進行項目程序的演示,并通過答辯的形式進一步了解學生的實際完成情況和對課程相關(guān)知識的掌握程度。
綜上所述,本文從課程教學內(nèi)容、課程設(shè)計、課程教學方法以及考核方式四個方面對C++程序設(shè)計課程的教學改革進行了探索,并在軟件工程、計算機科學與技術(shù)等專業(yè)中對該課程的教學改革手段加以實踐,效果良好。為了進一步提高該課程的教學質(zhì)量,提升計算機相關(guān)專業(yè)學生學習運用C++語言進行編程的能力,我們將繼續(xù)對該課程教學的各個環(huán)節(jié)進行探索和改革,以期獲得更大的進步。