衛(wèi)春芳
摘要:本文論述了我校針對(duì)非計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)“C++程序設(shè)計(jì)”所存在的問(wèn)題,依據(jù)實(shí)際教學(xué)經(jīng)驗(yàn)從教學(xué)內(nèi)容、教學(xué)方法和實(shí)踐教學(xué)三方面進(jìn)行教學(xué)改革。本著“淡化程序設(shè)計(jì)理論,強(qiáng)化技能訓(xùn)練”的課程教學(xué)原則,我們重新組織教學(xué)內(nèi)容、采取案例式教學(xué)、加強(qiáng)學(xué)生的技能訓(xùn)練,以提高學(xué)生的計(jì)算機(jī)應(yīng)用水平。
關(guān)鍵詞:課程改革;C++;教學(xué)內(nèi)容;教學(xué)方法
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
1目前教學(xué)中存在的問(wèn)題
“C++程序設(shè)計(jì)”現(xiàn)已成為大多數(shù)院校理工科學(xué)生必修的程序設(shè)計(jì)基礎(chǔ)課。非計(jì)算機(jī)專業(yè)對(duì)程序設(shè)計(jì)的要求不同、學(xué)時(shí)不同,對(duì)學(xué)生的邏輯思維和基礎(chǔ)知識(shí)結(jié)構(gòu)要求也不同,所以教師不能只是沿用計(jì)算機(jī)專業(yè)的教學(xué)理念與教學(xué)方法。
C++具有繁多的數(shù)據(jù)類型以及復(fù)雜、靈活多變的語(yǔ)法結(jié)構(gòu),對(duì)于第一次接觸程序設(shè)計(jì)的學(xué)生來(lái)說(shuō),要理解這些概念比較困難,容易挫傷學(xué)生學(xué)習(xí)編程的積極性,因此應(yīng)對(duì)C++的教學(xué)內(nèi)容進(jìn)行適當(dāng)刪減,以滿足非計(jì)算機(jī)專業(yè)學(xué)生的學(xué)習(xí)要求。
目前開設(shè)的“C++程序設(shè)計(jì)”課程,大部分教師還是沿用“C程序設(shè)計(jì)”的講授方法,對(duì)面向?qū)ο蟮闹R(shí)只是局限于教材上的例子,例子只局限于某個(gè)知識(shí)點(diǎn),不利于面向?qū)ο蟾拍畹睦斫?傳統(tǒng)的教學(xué)方法和教學(xué)內(nèi)容已不能滿足學(xué)生的需求。為此,必須找到一種適合學(xué)生學(xué)習(xí)特點(diǎn)的教學(xué)方法,使學(xué)生在有限的時(shí)間內(nèi)迅速掌握C++的基本概念、基本技能和應(yīng)用,激發(fā)學(xué)生對(duì)本課程的興趣。
“C++程序設(shè)計(jì)”是一門實(shí)踐性很強(qiáng)的課程,但目前的實(shí)踐課教學(xué)存在很多弊端。傳統(tǒng)的教學(xué)方法中,程序?qū)嶒?yàn)環(huán)節(jié)只是配合每一章所學(xué)的內(nèi)容進(jìn)行實(shí)踐,這樣的方法讓學(xué)生只是孤立地了解程序設(shè)計(jì)的知識(shí),所涉及的知識(shí)面較窄,缺少學(xué)科的綜合性,造成學(xué)生實(shí)際動(dòng)手能力很差,無(wú)法將實(shí)際的具體問(wèn)題和程序設(shè)計(jì)知識(shí)聯(lián)系起來(lái)。因此我們應(yīng)對(duì)“C++程序設(shè)計(jì)”實(shí)驗(yàn)教學(xué)進(jìn)行改革和實(shí)踐,將教學(xué)的目的變?yōu)槔碚摵蛯?shí)踐并重,以提高學(xué)生的編程能力。
2教學(xué)內(nèi)容的改革
C++語(yǔ)言內(nèi)容繁多,在有限的課時(shí)內(nèi)不可能也不必要面面俱到,所以教師要有效地組織教學(xué)、突出重點(diǎn)、把握難點(diǎn),不要過(guò)多鉆研語(yǔ)法細(xì)節(jié),而要把握C++程序設(shè)計(jì)的算法思想、基本原理,由整體到具體,培養(yǎng)學(xué)生對(duì)C++語(yǔ)言的興趣及正確的思維模式。在確定教學(xué)內(nèi)容和方式時(shí),要根據(jù)學(xué)生的計(jì)算機(jī)基礎(chǔ)、專業(yè)背景、學(xué)習(xí)目標(biāo)來(lái)安排。我們首先嘗試將課程重點(diǎn)劃分為三個(gè)層次:
基礎(chǔ)層重點(diǎn):數(shù)據(jù)類型、C++運(yùn)算符、邏輯表達(dá)式及常用的C++內(nèi)部函數(shù);
中間層重點(diǎn):控制結(jié)構(gòu)、數(shù)組、指針、結(jié)構(gòu)等知識(shí)及基本應(yīng)用;
核心層重點(diǎn):函數(shù)、類及構(gòu)造、繼承、多態(tài)、C++流。
三層重點(diǎn)教學(xué)體系更加科學(xué)地使學(xué)生在循序漸進(jìn)中有效地學(xué)習(xí)C++基礎(chǔ)知識(shí),掌握程序設(shè)計(jì)的基本技能,有重點(diǎn)地加強(qiáng)了對(duì)學(xué)生編程能力的培養(yǎng)。
其次,我們將課程內(nèi)部結(jié)構(gòu)進(jìn)行了改革:弱化指針,將指針內(nèi)容淺化,并移到函數(shù)之前講授;面向過(guò)程部分占60%比重,面向?qū)ο蟛糠终?0%比重。
再次,教學(xué)方法上采用案例式教學(xué),教學(xué)內(nèi)容應(yīng)圍繞教學(xué)案例進(jìn)行劃分,每一知識(shí)點(diǎn)內(nèi)容均通過(guò)生動(dòng)、有效的示例講授相關(guān)知識(shí)點(diǎn)內(nèi)容,我們將教學(xué)案例一般劃分為三個(gè)層次:
(1) 基礎(chǔ)案例:采用簡(jiǎn)潔案例驗(yàn)證基礎(chǔ)知識(shí),此類案例著重于較高的教學(xué)效率,使學(xué)生以直接的方式掌握基礎(chǔ)語(yǔ)句使用格式及系統(tǒng)內(nèi)部函數(shù)使用格式,理解相關(guān)基礎(chǔ)知識(shí)。
(2) 簡(jiǎn)單程序案例:包含多個(gè)知識(shí)點(diǎn)的小型程序示例。
(3) 單元綜合案例:每一章主要知識(shí)點(diǎn)及已學(xué)內(nèi)容的綜合案例。其示例內(nèi)容為實(shí)際應(yīng)用程序設(shè)計(jì)內(nèi)容的某一模塊或某一功能部分,使學(xué)生所學(xué)內(nèi)容緊密地結(jié)合實(shí)際應(yīng)用。
基本型案例、設(shè)計(jì)型案例及綜合型案例相輔相成,使學(xué)生更快速、更準(zhǔn)確地掌握相關(guān)知識(shí)點(diǎn)內(nèi)容。
3教學(xué)方法的改革
“C++程序設(shè)計(jì)”中很多知識(shí)比較抽象、枯燥,學(xué)生不容易接受理解,教師在課堂教學(xué)中應(yīng)該巧用生活中的實(shí)例化繁為簡(jiǎn),以實(shí)例引導(dǎo),講解語(yǔ)法規(guī)則。我們?cè)诮虒W(xué)方法上嘗試采用案例式教學(xué),在每一章節(jié)、甚至每一節(jié)課均以要解決的實(shí)際問(wèn)題為主導(dǎo),構(gòu)建問(wèn)題情境,引導(dǎo)學(xué)生運(yùn)用計(jì)算機(jī)語(yǔ)言描述解決問(wèn)題的方法與步驟。案例教學(xué)法打破了以教材為中心的傳統(tǒng)教學(xué)模式,不按教材的順序授課,而是以精選出的程序設(shè)計(jì)案例為中心,把學(xué)習(xí)的重點(diǎn)放在具體案例的講述上,把要學(xué)習(xí)的語(yǔ)法和概念融入到具體案例中講解。每一案例的教學(xué)方法采用以下三個(gè)步驟:
第一步:提出實(shí)際問(wèn)題;
第二步:介紹解決問(wèn)題的方法;
第三步:歸納出一般規(guī)律和概念。
采用“提出問(wèn)題——介紹解決問(wèn)題的方法——?dú)w納出一般規(guī)律和概念”的新教學(xué)三部曲,使學(xué)生在學(xué)習(xí)每個(gè)新知識(shí)點(diǎn)時(shí)都有一個(gè)完整的、實(shí)際的、具體和有形的項(xiàng)目作為知識(shí)的聯(lián)想和應(yīng)用載體,進(jìn)一步介紹C++程序設(shè)計(jì)的理論和方法。它不同于以前教學(xué)中“提出概念——解釋概念——舉例說(shuō)明”的傳統(tǒng)三部曲,整個(gè)教學(xué)過(guò)程強(qiáng)調(diào)在應(yīng)用中學(xué)習(xí),從而避免了枯燥、繁雜的理論說(shuō)教,這不僅能增進(jìn)學(xué)生的學(xué)習(xí)興趣和積極性,而且對(duì)提高學(xué)生綜合分析和解決實(shí)際問(wèn)題的能力也大有幫助。
在學(xué)習(xí)的不同階段應(yīng)采用不同的訓(xùn)練方式,教學(xué)方法改革的第二點(diǎn)是將學(xué)習(xí)C++劃分為以下三個(gè)階段:
初期階段:教師應(yīng)以演示編程為主,學(xué)生模仿編程訓(xùn)練的方式,在此過(guò)程中教師詳細(xì)地講解程序設(shè)計(jì)思路、程序設(shè)計(jì)方法及程序設(shè)計(jì)步驟;
中期階段:教師演示部分難度較大的代碼編寫過(guò)程,學(xué)生在教師啟發(fā)下完成其余的代碼編寫過(guò)程;
后期階段:以教師簡(jiǎn)介程序設(shè)計(jì)思路、程序功能模塊設(shè)計(jì)特點(diǎn)及主要技術(shù)運(yùn)用特點(diǎn),學(xué)生完成全部代碼編寫,教師則起輔導(dǎo)學(xué)生作用,教師充分注意因材施教。
教學(xué)方法改革的第三點(diǎn)是采用“三語(yǔ)”教學(xué)并用,“三語(yǔ)”教學(xué)是指以中、英及C++三種語(yǔ)言描述程序代碼功能及實(shí)現(xiàn)方式,使學(xué)生易于理解每一代碼行,從而理解整個(gè)程序。
“中”是指用我們正常的語(yǔ)言描述某一代碼行;
“英”是指在對(duì)代碼行中每一個(gè)英文單詞正確發(fā)音基礎(chǔ)上,講解其單詞原義及在代碼行中的意義;
“C++語(yǔ)言”是指在中、英語(yǔ)言講解的基礎(chǔ)上用C++語(yǔ)言實(shí)現(xiàn)代碼行,并解析其功能特點(diǎn)等。
4實(shí)踐教學(xué)的改革
“C++程序設(shè)計(jì)”語(yǔ)言是實(shí)踐性很強(qiáng)的一門課,培養(yǎng)學(xué)生的實(shí)踐能力是教學(xué)的首要目的。因此,在授課的同時(shí),如何引導(dǎo)學(xué)生利用上機(jī)實(shí)驗(yàn)來(lái)加強(qiáng)實(shí)踐也是教學(xué)中的一個(gè)重要環(huán)節(jié)。我們?yōu)閷W(xué)生安排1:1的上機(jī)實(shí)驗(yàn)課時(shí),其中2/3的上機(jī)實(shí)驗(yàn)是有老師輔導(dǎo)的,其余1/3由學(xué)生自主完成。上機(jī)作業(yè)要求與課堂內(nèi)容有很好的銜接性,并且難易程度有機(jī)結(jié)合。在上機(jī)實(shí)驗(yàn)前,教師要講清內(nèi)容與算法,布置相關(guān)的編程作業(yè),由學(xué)生單獨(dú)動(dòng)手編寫程序,上機(jī)調(diào)試,培養(yǎng)學(xué)生自己解決問(wèn)題的能力。教師在上機(jī)時(shí)要發(fā)揮其主導(dǎo)地位,可以提出改進(jìn)算法的思路,讓學(xué)生自己操作。實(shí)驗(yàn)完畢,教師對(duì)實(shí)驗(yàn)結(jié)果加以檢查,并對(duì)出現(xiàn)的問(wèn)題及時(shí)加以討論和講解。
“C++程序設(shè)計(jì)”實(shí)驗(yàn)教學(xué)的目的應(yīng)是:(1)緊密配合理論教學(xué),通過(guò)相關(guān)實(shí)驗(yàn),幫助和加深對(duì)語(yǔ)句功能的理解;(2)通過(guò)實(shí)驗(yàn)可以將各門課程學(xué)到的知識(shí)融會(huì)貫通,思考利用C++程序設(shè)計(jì)語(yǔ)言解決實(shí)際應(yīng)用問(wèn)題的有效方法,從而使學(xué)生分析和解決問(wèn)題的能力得到鍛煉和提高。因此我們將實(shí)踐教學(xué)訓(xùn)練體系劃分為以下三個(gè)層次:
基本實(shí)驗(yàn):占整個(gè)實(shí)驗(yàn)學(xué)時(shí)的60%。包括兩個(gè)部分,一是驗(yàn)證操作,教師在講授過(guò)程中學(xué)生直接操作驗(yàn)證的內(nèi)容,如C++語(yǔ)句語(yǔ)法基本格式、C++系統(tǒng)函數(shù)的基本驗(yàn)證,約占整個(gè)課程學(xué)時(shí)數(shù)的25%以上。二是驗(yàn)證型實(shí)驗(yàn),對(duì)C++語(yǔ)法和函數(shù)的基本應(yīng)用,要求掌握程序的基本調(diào)試技能。
設(shè)計(jì)型實(shí)驗(yàn):占整個(gè)實(shí)驗(yàn)學(xué)時(shí)的30%。例如循環(huán)應(yīng)用、數(shù)組應(yīng)用、排序問(wèn)題、類與對(duì)象應(yīng)用等,要求能編寫簡(jiǎn)單應(yīng)用程序。
綜合設(shè)計(jì)型實(shí)驗(yàn):例如結(jié)構(gòu)化方法編程應(yīng)用、面向?qū)ο蠓椒ň幊虘?yīng)用、C++流應(yīng)用等,約占整個(gè)實(shí)驗(yàn)學(xué)時(shí)的10%。
綜合設(shè)計(jì)型實(shí)驗(yàn)由教師布置或由學(xué)生結(jié)合本人的興趣,從實(shí)際應(yīng)用中選擇有具體應(yīng)用背景的實(shí)驗(yàn)題目,安排學(xué)生分組共同完成。綜合設(shè)計(jì)型實(shí)驗(yàn)的具體內(nèi)容如下:
(1) 教師給學(xué)生講解綜合設(shè)計(jì)型實(shí)驗(yàn)的題目要求,要求學(xué)生在選好題目的基礎(chǔ)上,認(rèn)真研究題目要求,自行查閱有關(guān)資料,寫出系統(tǒng)的需求分析,總體框架設(shè)計(jì)。
(2) 將系統(tǒng)的需求分析,總體框架設(shè)計(jì)交給教師批閱,師生一起討論,確定系統(tǒng)的詳細(xì)設(shè)計(jì)方案。
(3) 在限定的時(shí)間內(nèi)完成C++語(yǔ)言的代碼設(shè)計(jì),完成各個(gè)功能單元的實(shí)現(xiàn)和調(diào)試。
(4) 聯(lián)編調(diào)試,要求把各個(gè)功能塊聯(lián)編起來(lái)進(jìn)行調(diào)試。
(5) 寫出相關(guān)的系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)等實(shí)驗(yàn)報(bào)告。
綜合設(shè)計(jì)型實(shí)驗(yàn)建立起以學(xué)生為中心的教學(xué)模式,這樣既鍛煉了學(xué)生的動(dòng)手能力,也加強(qiáng)了他們交流與團(tuán)結(jié)協(xié)作的精神,全面提升學(xué)生的程序設(shè)計(jì)與軟件開發(fā)能力。
另外,我們建立了互動(dòng)式教學(xué)體系,通過(guò)建設(shè)“C++程序設(shè)計(jì)”課程網(wǎng)站,包括課程資料、實(shí)驗(yàn)指導(dǎo)、網(wǎng)上答疑、知識(shí)自測(cè)等子系統(tǒng),形成功能強(qiáng)大、教學(xué)資源豐富的網(wǎng)絡(luò)教學(xué)環(huán)境,開辟新的教學(xué)與復(fù)習(xí)手段,使學(xué)生學(xué)習(xí)和鞏固知識(shí)的渠道多樣化,進(jìn)而提高我們的教學(xué)質(zhì)量。課程資料提供了包括章節(jié)重點(diǎn)、教學(xué)課件等,用于配合課堂教學(xué)起到相輔相成的作用;通過(guò)網(wǎng)上答疑突破時(shí)空的限制,實(shí)現(xiàn)了教師與學(xué)生之間交流新思想和解決學(xué)習(xí)中遇到的難題。知識(shí)自測(cè)提供了試題的在線考試和模擬訓(xùn)練,試題類型包括判斷題、選擇題和問(wèn)答題,學(xué)生在學(xué)完相應(yīng)章節(jié)的內(nèi)容后,可自行選擇測(cè)試內(nèi)容和題型進(jìn)行在線測(cè)試。
5結(jié)論
程序設(shè)計(jì)課程的教學(xué)目的是要通過(guò)一門程序設(shè)計(jì)語(yǔ)言的教學(xué),使學(xué)生掌握程序設(shè)計(jì)語(yǔ)言的本質(zhì),包括基本結(jié)構(gòu)和基本算法等,從而掌握程序設(shè)計(jì)的一般方法?!癈++程序設(shè)計(jì)”首先應(yīng)重新組織教學(xué)內(nèi)容,將課程重點(diǎn)劃分為基礎(chǔ)層、中間層和重點(diǎn)層三個(gè)層次,我們對(duì)課程內(nèi)部結(jié)構(gòu)進(jìn)行調(diào)整,在教學(xué)方法上采用案例式教學(xué),對(duì)教學(xué)案例劃分為基礎(chǔ)案例、簡(jiǎn)單程序案例和單元綜合案例,采用“提出問(wèn)題——介紹解決問(wèn)題的方法——?dú)w納出一般規(guī)律和概念”的新教學(xué)三部曲,將深?yuàn)W的理論講得通俗易懂,增進(jìn)學(xué)生的學(xué)習(xí)積極性。在教學(xué)過(guò)程中,應(yīng)采用中文、英文及C++三種語(yǔ)言共同教學(xué),強(qiáng)調(diào)學(xué)生實(shí)際應(yīng)用和實(shí)際動(dòng)手能力的培養(yǎng),加強(qiáng)實(shí)驗(yàn)教學(xué)環(huán)節(jié),注重啟發(fā)式教學(xué)與綜合作業(yè)的結(jié)合,提高學(xué)生的綜合編程能力。
進(jìn)行“C++程序設(shè)計(jì)”課程的改革,主要是將現(xiàn)代計(jì)算機(jī)程序開發(fā)的主要手段傳授給學(xué)生,淡化程序設(shè)計(jì)理論,強(qiáng)化實(shí)驗(yàn)及實(shí)訓(xùn)過(guò)程,培養(yǎng)學(xué)生抽象思維能力,訓(xùn)練學(xué)生初步的編程能力,強(qiáng)化訓(xùn)練調(diào)試程序技能,使其具有一定的程序開發(fā)能力,有利于學(xué)生將計(jì)算機(jī)這種現(xiàn)代化工具運(yùn)用于今后的學(xué)習(xí)工作中。
參考文獻(xiàn):
[1] 譚浩強(qiáng). C++程序設(shè)計(jì)[M]. 1版. 北京:清華大學(xué)出版社,2004.
[2] 刁成嘉. C++面向?qū)ο缶幊袒A(chǔ)[M]. 1版. 北京:機(jī)械工業(yè)出版社,2008.
[3] 金麗. C++語(yǔ)言課程教學(xué)改革[J]. 科技信息:學(xué)術(shù)研究版,2007(35):201.
[4] 敖志廣. 非計(jì)算機(jī)專業(yè)本科生C語(yǔ)言的教學(xué)實(shí)踐[J]. 計(jì)算機(jī)教育,2007(2):53-54.
[5] 高枚. C/C++教學(xué)改革的探索與實(shí)踐[J]. 計(jì)算機(jī)時(shí)代,2005(11):8-10.