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