魯紅英 肖思和 孫淑霞
摘要:針對目前高校C語言程序設(shè)計課程教學(xué)的現(xiàn)狀及存在的問題,結(jié)合課程組在國家級精品課程“C/C++語言程序設(shè)計”建設(shè)過程中的經(jīng)驗和收獲,提出“以應(yīng)用為前提,學(xué)生為主體,知識為主線,培養(yǎng)學(xué)生的實踐動手能力為著力點”的教學(xué)理念,闡述如何構(gòu)建一套教材體系完善、教學(xué)資源豐富、教學(xué)手段先進(jìn)、教學(xué)評價合理、考核方式差異化的教學(xué)體系。
關(guān)鍵詞:C/C++語言程序設(shè)計;教學(xué)改革;國家精品課程;教學(xué)方法
文章編號:1672-5913(2013)07-0095-04
中圖分類號:G642
1 課程教學(xué)現(xiàn)狀及存在問題
“C/C++語言程序設(shè)計”是理工科非計算機(jī)專業(yè)本科學(xué)生的第二門計算機(jī)課程,也是大學(xué)計算機(jī)基礎(chǔ)系列課程的核心課程?!癈/C++語言程序設(shè)計”課程的內(nèi)容抽象,概念和語法規(guī)則較多,特別講究適用技巧。長期以來,高校都在不斷地探索和實踐關(guān)于“C/C++語言程序設(shè)計”課程的教學(xué)改革,但仍然存在很多問題。例如,教學(xué)依然以傳統(tǒng)教學(xué)方式為主,不能將實驗環(huán)節(jié)與課堂教學(xué)環(huán)節(jié)很好地相互連貫,相互印證,使得理論教學(xué)和實踐教學(xué)脫節(jié);某些教師忽視學(xué)生的實踐能力和創(chuàng)新能力的培養(yǎng),使學(xué)生在分析問題和解決問題時無從下手,缺乏編程和調(diào)試的能力;實驗教學(xué)中的多數(shù)實驗內(nèi)容是驗證性的,學(xué)生機(jī)械式的運行程序,對知識的理解只停留在表面上;理論和實驗課時數(shù)較少,上課信息量大,學(xué)生接受知識的進(jìn)度不一樣,這就導(dǎo)致教師和學(xué)生的學(xué)習(xí)步調(diào)不一致。
針對上述問題,許多高校對“C/C++語言程序設(shè)計”課程的教學(xué)作出了有益的探索,如文獻(xiàn)[1]提出“通、實、新、聯(lián)”的教學(xué)理念;文獻(xiàn)[2]提出教學(xué)設(shè)計原理;文獻(xiàn)[3]提出項目教學(xué)法;文獻(xiàn)[4]提出案例教學(xué)法;文獻(xiàn)[5]提出“機(jī)房授課+自主學(xué)習(xí)”的授課模式;文獻(xiàn)[6]提出將“以應(yīng)用為背景,以知識為主線,以提高能力和興趣為目的,變應(yīng)試為應(yīng)用”的教學(xué)理念應(yīng)用于該課程的教學(xué)中。這些方法均在一定程度上激發(fā)了學(xué)生的學(xué)習(xí)興趣,增強(qiáng)了學(xué)生的動手能力,取得了較為明顯的教學(xué)效果。
為了探究出適合成都理工大學(xué)人才培養(yǎng)的課程特點,“C/C++語言程序設(shè)計”課程組經(jīng)過多年的課程建設(shè)和對教學(xué)環(huán)節(jié)的研究與探索,提出了“以應(yīng)用為前提,學(xué)生為主體,知識為主線,培養(yǎng)學(xué)生的實踐動手能力為著力點”的教學(xué)理念,構(gòu)建了一套教材體系完善、教學(xué)資源豐富、教學(xué)手段先進(jìn)、教學(xué)評價合理、考核方式差異化、精品課程網(wǎng)站新穎的教學(xué)體系。下面分別從教學(xué)設(shè)計、教學(xué)方法、教學(xué)手段、考核方式以及教學(xué)資源等方面進(jìn)行闡述。
2 教學(xué)設(shè)計及課程內(nèi)容組織
2.1教學(xué)設(shè)計
成都理工大學(xué)每年有4000名以上的學(xué)生參加“C/C++語言程序設(shè)計”課程學(xué)習(xí)。為實施因材施教,我們重視研究性學(xué)習(xí)、探究性學(xué)習(xí)、協(xié)作學(xué)習(xí)等現(xiàn)代教育理念在教學(xué)中的應(yīng)用,根據(jù)課程內(nèi)容和學(xué)生特征,對教學(xué)方法和教學(xué)評價進(jìn)行設(shè)計,并在教學(xué)理念與教學(xué)設(shè)計上實施了多種改革舉措。
1)以學(xué)生為中心的教學(xué)模式。
以學(xué)生為中心的教學(xué)模式讓教師從傳統(tǒng)的教學(xué)方式中解脫出來,變“教學(xué)”為“導(dǎo)學(xué)”。教師充分利用多種教學(xué)媒體和提示學(xué)習(xí)資源,講重點、解難點、釋疑點,講評作業(yè),指導(dǎo)學(xué)習(xí)方法,輔助小組學(xué)習(xí),發(fā)揮學(xué)生的主體作用,引導(dǎo)學(xué)生自主學(xué)習(xí),幫助學(xué)生培養(yǎng)自學(xué)能力。
教師要在理論課前了解學(xué)生是否掌握了與課程有關(guān)的基礎(chǔ)知識和基本技能,根據(jù)學(xué)生在實驗課的表現(xiàn)來了解學(xué)生是否掌握了教學(xué)目標(biāo)中要求學(xué)會的知識和技能,以及掌握的程度等信息,從而確定后續(xù)教學(xué)中應(yīng)重點講解和輔導(dǎo)的知識,根據(jù)學(xué)生的實際情況設(shè)計教學(xué)環(huán)節(jié)。對于部分優(yōu)秀學(xué)生和已經(jīng)學(xué)習(xí)了程序設(shè)計的學(xué)生,我們要加快他們的學(xué)習(xí)進(jìn)度,增加學(xué)習(xí)難度和深度,使他們可以很快在自己的專業(yè)中使用程序設(shè)計來解決相關(guān)問題。
2)精心準(zhǔn)備每一節(jié)課,激發(fā)學(xué)生學(xué)習(xí)積極性。
激發(fā)學(xué)生對程序設(shè)計課程的學(xué)習(xí)興趣,是本課程任務(wù)執(zhí)行的重要目標(biāo)。學(xué)生是主動學(xué)習(xí)還是被動學(xué)習(xí)會讓教學(xué)效果產(chǎn)生明顯的差別,因此每位教師都應(yīng)精心準(zhǔn)備每一節(jié)課。引領(lǐng)學(xué)生跨入程序設(shè)計大門的第一節(jié)課是極其重要的。學(xué)生所關(guān)心的是所學(xué)課程對自己的專業(yè)和今后的工作有什么作用,教師可從不同的專業(yè)角度,結(jié)合當(dāng)前最熱門的IT話題和實際應(yīng)用為學(xué)生介紹學(xué)習(xí)本課程的意義和作用,同時介紹一些往屆學(xué)生將所學(xué)程序設(shè)計知識用于數(shù)學(xué)建模、程序設(shè)計競賽、專業(yè)課程學(xué)習(xí)等方面的生動實例,這些都是教師第一節(jié)課的良好素材。
3)培養(yǎng)學(xué)生系統(tǒng)化的程序設(shè)計思維。
程序設(shè)計課程長期存在著注重語句、語法和細(xì)節(jié)的特點,基本上是以程序設(shè)計語言自身的體系為脈絡(luò)展開的。許多學(xué)生在學(xué)習(xí)程序設(shè)計語言課程時會覺得枯燥難學(xué),學(xué)過后又不能用來解決實際問題。所以學(xué)生雖然學(xué)了一定的程序設(shè)計知識,但編程能力較差?!糠謱W(xué)生在遇到實際問題依舊無從下手。而系統(tǒng)化程序設(shè)計思維培養(yǎng)模式是從本科生的認(rèn)知特點出發(fā),讓教師在教授學(xué)生程序設(shè)計課程、提高學(xué)生編程能力的同時,培養(yǎng)學(xué)生的系統(tǒng)化程序設(shè)計思維。
程序設(shè)計課程不僅教學(xué)生如何進(jìn)行計算機(jī)編程,而且教學(xué)生如何像程序員一樣思考問題。系統(tǒng)化的程序設(shè)計思維的培養(yǎng)過程就是讓學(xué)生自己動手解決實際問題的過程。這個過程充滿了學(xué)生對未知問題的探索、研究與創(chuàng)新,不僅可以教會學(xué)生解決在程序設(shè)計中遇到的問題,而且可以鍛煉思維,使學(xué)生的邏輯思維更加嚴(yán)密,這對一個理工科的大學(xué)生來說是至關(guān)重要的,對學(xué)生整體素質(zhì)的提高、程序設(shè)計課程整體教學(xué)水平的提高都有現(xiàn)實意義。
4)互換角色思考與提問。
在教學(xué)過程中我們發(fā)現(xiàn),很多學(xué)生不提問,有時是學(xué)生提不出問題,有時是不知該如何提問。這時,教師需要站在學(xué)生位置上,思考學(xué)生可能會有什么問題,然后由教師提出問題,讓學(xué)生來回答。如果學(xué)生不能回答,教師再為學(xué)生解答。教師備課時不再只是準(zhǔn)備我要講什么,而是思考學(xué)生會遇到什么難點,需要向?qū)W生提什么問題、解答什么問題?;诖四康?,教師需準(zhǔn)備大量經(jīng)典案例,提出問題,分析問題,并在問題中設(shè)置一些錯誤,讓學(xué)生思考原因,并進(jìn)一步思考如何修改錯誤,在這樣的學(xué)習(xí)過程中潛移默化地掌握基本的語法知識和解決問題的方法。這種模式轉(zhuǎn)變了學(xué)生的學(xué)習(xí)方式,激勵學(xué)生積極思考問題、分析和解決問題。
2.2理論課程設(shè)計
由于科學(xué)技術(shù)的快速發(fā)展,計算機(jī)科學(xué)與其他學(xué)科間的交叉、融合日益增強(qiáng)。大多數(shù)非計算機(jī)專業(yè)的培養(yǎng)目標(biāo)已將學(xué)生的計算機(jī)程序設(shè)計能力作為了一項重要內(nèi)容。
本課程主要是針對非計算機(jī)專業(yè)的理工科一年級大學(xué)生開設(shè)的。與計算機(jī)專業(yè)不同的是,非計算機(jī)專業(yè)學(xué)生一般只學(xué)一門語言課程。因此,該課程的教學(xué)就擔(dān)負(fù)起培養(yǎng)學(xué)生編程能力的重要責(zé)任,成為了學(xué)習(xí)其他程序設(shè)計語言的基礎(chǔ)。
根據(jù)非計算機(jī)專業(yè)各學(xué)科的培養(yǎng)目標(biāo),“C/C++語言程序設(shè)計”課程在理論課程內(nèi)容設(shè)計上注意知識結(jié)構(gòu)的合理,強(qiáng)調(diào)基本能力的培養(yǎng),注重基礎(chǔ)理論與實際應(yīng)用的融合。課程內(nèi)容體系結(jié)構(gòu)重點突出學(xué)以致用。課程內(nèi)容知識結(jié)構(gòu)由C語言簡單程序的編寫和調(diào)試、C語言程序設(shè)計基礎(chǔ)、控制結(jié)構(gòu)、數(shù)組、指針、函數(shù)、編譯預(yù)處理與變量的存儲類型、文件、結(jié)構(gòu)體與共用體、圖形程序設(shè)計基礎(chǔ)、C++程序設(shè)計基礎(chǔ)、查找和排序12部分組成。
根據(jù)學(xué)以致用的原則,在實際應(yīng)用中,函數(shù)是程序設(shè)計的重要內(nèi)容之一,也是學(xué)生學(xué)習(xí)的難點之一,因此在理論課程設(shè)計中,我們將函數(shù)的使用提前講解,讓學(xué)生盡早接觸函數(shù),理解模塊化的設(shè)計方法,掌握函數(shù)的基本設(shè)計和操作。在講授第2章有關(guān)輸入/輸出庫函數(shù)時,可同時結(jié)合第8章文件的知識,使學(xué)生掌握實際問題中涉及不同數(shù)據(jù)的不同輸入/輸出方式,較好地解決了學(xué)生學(xué)習(xí)C語言后不能熟練掌握文件操作的問題。
教材在內(nèi)容編排上注重易用性。每章的開頭設(shè)置本章學(xué)習(xí)目標(biāo),之后設(shè)置本章學(xué)習(xí)指導(dǎo),包含“課前思考”“本章難點”和“本章編程中容易出現(xiàn)的錯誤”。每章后的練習(xí)題涵蓋了程序設(shè)計中的常見算法,涉及簡單程序設(shè)計、較復(fù)雜程序設(shè)計、易于舉一反三的程序設(shè)計問題等內(nèi)容,使學(xué)生能夠通過練習(xí),大大地提高編程能力。
2.3實驗課程設(shè)計
“C/C++語言程序設(shè)計”是一門實踐性很強(qiáng)的課程。在近幾年的課程建設(shè)與教學(xué)改革中,實驗課程注重理論課程內(nèi)容與實驗內(nèi)容的有機(jī)結(jié)合,強(qiáng)調(diào)學(xué)生創(chuàng)新能力和實際動手能力的培養(yǎng)。C/C++程序設(shè)計實驗教學(xué)內(nèi)容改變了以往驗證性實驗為主的現(xiàn)象,使設(shè)計性實驗內(nèi)容占了70%以上。通過實驗,培養(yǎng)學(xué)生分析問題和解決問題的能力,以及動手能力和程序設(shè)計能力,從而加深對理論課程內(nèi)容的理解。
實驗課程配有實驗指導(dǎo)書,共設(shè)計了11個實驗項目和一個綜合程序設(shè)計,其基本出發(fā)點是幫助學(xué)生理解和消化課堂教學(xué)的內(nèi)容,培養(yǎng)學(xué)生自主學(xué)習(xí)能力,加強(qiáng)其實踐能力和團(tuán)隊協(xié)作精神,讓學(xué)生掌握程序設(shè)計的基本思想和方法。具體實驗內(nèi)容包括:C/C++簡單程序的編寫和調(diào)試、C語言程序設(shè)計基礎(chǔ)、控制結(jié)構(gòu)、數(shù)組、指針、函數(shù)、編譯預(yù)處理、文件、結(jié)構(gòu)體與共用體、圖形程序設(shè)計、C++程序設(shè)計基礎(chǔ)。
3 教學(xué)方法和手段
3.1教學(xué)方法
為了實現(xiàn)程序設(shè)計課程的教學(xué)目標(biāo),使學(xué)生不但掌握高級編程語言的知識、編程技術(shù)和基本算法,更要掌握程序設(shè)計的思想和方法,培養(yǎng)學(xué)生進(jìn)行問題求解和編程的能力,以及探索和創(chuàng)新能力,我們采用了多種教學(xué)方法,主要做了以下改革。
1)課內(nèi)與課外訓(xùn)練相結(jié)合,注重學(xué)生綜合能力的培養(yǎng)。
課內(nèi)教師根據(jù)教材進(jìn)行引導(dǎo)學(xué)習(xí),加強(qiáng)典型例題的啟發(fā)式講解。在分析常見錯誤案例的過程中,教師講解程序設(shè)計的基本方法、程序測試方法以及程序調(diào)試和排錯方法,幫助學(xué)生理解錯誤發(fā)生的原因和實質(zhì),掌握糾錯的方法和解決的對策。在實驗教學(xué)中,我們?yōu)槊刻脤嶒炚n設(shè)計相應(yīng)的實驗項目。實驗項目的設(shè)計注重實用性和綜合性。實踐教學(xué)強(qiáng)調(diào)大量程序設(shè)計的訓(xùn)練。教師在網(wǎng)上為學(xué)生發(fā)布一些經(jīng)典、實用、有一定挑戰(zhàn)性的作業(yè),鼓勵學(xué)生課外多訓(xùn)練,倡導(dǎo)學(xué)生課后以寢室為單位,組成學(xué)習(xí)小組,進(jìn)行討論、分析和解決問題。
為了激勵學(xué)生參與程序設(shè)計的實踐,進(jìn)一步提高學(xué)生程序設(shè)計的興趣,提升他們的軟件技術(shù)水平,成都理工大學(xué)每年舉行一次全校范圍的程序設(shè)計大賽。大賽采用初賽和決賽制,要求學(xué)生在2~4小時內(nèi)完成一個綜合性較強(qiáng)的程序設(shè)計題目,或在一段時間內(nèi)完成一個綜合程序設(shè)計題目,然后進(jìn)行答辯。
2)重視實踐教學(xué)環(huán)節(jié)、注重學(xué)生創(chuàng)新意識與應(yīng)用能力的培養(yǎng)。
為了培養(yǎng)學(xué)生的實踐動手能力,我們加強(qiáng)了實踐教學(xué)環(huán)節(jié)的管理。教師要積極使用多媒體實驗室的教學(xué)設(shè)備,進(jìn)行啟發(fā)、引導(dǎo)式的實驗指導(dǎo),將平時測試與期末測試結(jié)合,測試學(xué)生在1個小時內(nèi)調(diào)試和正確編寫程序的能力,引導(dǎo)和督促學(xué)生重視實踐教學(xué)。開放性實驗注重培養(yǎng)學(xué)生的創(chuàng)新意識與應(yīng)用能力。
3)網(wǎng)站互動學(xué)習(xí)。
課程組建立的教學(xué)網(wǎng)站、精品課程網(wǎng)站、課程資源平臺等為學(xué)生提供了網(wǎng)絡(luò)課程、網(wǎng)上答疑、作業(yè)提交、理論試題及答案、上機(jī)試題及答案、教學(xué)錄像、視頻節(jié)目、精品課程網(wǎng)站鏈接、相關(guān)學(xué)習(xí)網(wǎng)站鏈接等資源,擴(kuò)充了課堂教學(xué)區(qū)域。學(xué)生可以在任何時候、任何地點進(jìn)行互動學(xué)習(xí)。這種方法及時地解決了學(xué)生在學(xué)習(xí)中遇到的疑難問題。
4)改革考核方式,采用多元評價方式考核實驗成績。
為了提高學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生問題求解和編程能力,以及探索和創(chuàng)新能力,我們采用了開卷和閉卷相結(jié)合的考試方式,鼓勵基礎(chǔ)好的學(xué)生開卷考試,完成一個綜合編程題目。經(jīng)過實踐,參加開卷考試的學(xué)生在獨立分析問題、解決問題和編程能力上得到了很大提高。
3.2教學(xué)手段
多年以來,成都理工大學(xué)“C/C++語言程序設(shè)計”課程最大限度地、多方位地應(yīng)用了以下現(xiàn)代教育技術(shù)手段。
1)課堂多媒體理論教學(xué)。
本課程的理論教學(xué)將傳統(tǒng)教學(xué)手段和現(xiàn)代教育技術(shù)手段相結(jié)合,在應(yīng)用現(xiàn)代教育技術(shù)手段的同時,繼續(xù)發(fā)揮傳統(tǒng)教學(xué)的優(yōu)勢。課堂上多媒體課件的播放效果直接影響到學(xué)生的聽課效果,因此我們不僅制作了幻燈片,還利用Autherware、Flash等工具,制作了具有較強(qiáng)動畫效果的多媒體課件,將程序的執(zhí)行過程利用動畫演示,生動、形象地模擬了計算機(jī)執(zhí)行程序的真實情況。
2)建立計算機(jī)基礎(chǔ)教學(xué)網(wǎng)站。
我們開發(fā)課程網(wǎng)上教學(xué)平臺,為學(xué)生提供電子教案、多媒體課件、視頻等豐富的網(wǎng)上教學(xué)資源,同時提供討論和在線答疑,構(gòu)建以學(xué)生為中心的自主學(xué)習(xí)環(huán)境。
3)網(wǎng)上考試系統(tǒng)。
網(wǎng)上考試系統(tǒng)為學(xué)生提供了模擬和考試環(huán)境,實現(xiàn)了系統(tǒng)自動組卷和評分功能,為學(xué)生課后自學(xué)和自測、提高教學(xué)效果搭建了一個有效的平臺。
4 考核方式
課程考核可以采用開卷和閉卷2種形式。
1)閉卷考試由筆試和機(jī)試組成。
(1)筆試(占總成績的50%)主要考核語言基礎(chǔ)、基本的閱讀和編寫程序的能力。題型包括選擇題、填空題、程序閱讀題和程序填空題。
(2)機(jī)試(占總成績50%)主要考核程序設(shè)計能力,包括上機(jī)考試(占總成績的30%)和平時出勤及作業(yè)完成情況(占總成績的20%)。
2)開卷考試主要考核學(xué)生綜合程序設(shè)計的能力,獨立分析問題和解決問題的能力,難度較大。通常只有學(xué)習(xí)優(yōu)秀的學(xué)生可以參加開卷考試。這些學(xué)生必須是按時完成了每一次的實驗項目,且中期考試合格。開卷考試要求學(xué)生提供源程序、開卷考試報告并參加面試。
5 結(jié)語
通過對各種教學(xué)方法和教學(xué)手段的研究和探索,我們改變了傳統(tǒng)的知識傳授理念,從而更加注重學(xué)生解決實際問題的能力,并提出“以學(xué)生為主體,教師為引導(dǎo),網(wǎng)絡(luò)教學(xué)為輔助”的全新理念,極大地激發(fā)了學(xué)生的學(xué)習(xí)興趣,挖掘了學(xué)生的創(chuàng)造潛能,又培養(yǎng)了他們自主研究、協(xié)作學(xué)習(xí)的能力。實踐證明,通過上述教學(xué)改革措施,教學(xué)效果取得了顯著提高。在計算機(jī)二級c語言考試中,學(xué)生通過率較往年大大提升。當(dāng)然,實際教學(xué)過程是一個相當(dāng)復(fù)雜的系統(tǒng),也還存在著一些需要解決的問題,還需要我們在今后的實踐中繼續(xù)開拓,不斷探索。
參考文獻(xiàn):
[1]趙珊,賈宗璞,“C語言程序設(shè)計”課程教學(xué)模式改革方案探討[J],科技資訊,2011(35):185-187。
[2]黃群,C語言程序設(shè)計課程教學(xué)設(shè)計探討[J],計算機(jī)教育,2010(5):78-81。
[3]陳洪超,項目教學(xué)法在“C語言程序設(shè)計”課程中的應(yīng)用[J],重慶電力高等??茖W(xué)校學(xué)報,2012,17(3):29-30,36。
[4]左永文,案例教學(xué)法在“C語言程序設(shè)計”課程中的應(yīng)用[J],科技創(chuàng)新導(dǎo)報,2012(18):175-175。
[5]陳剛,朱曉燕,江漢大學(xué)“C語言程序設(shè)計”課程教學(xué)改革[J],計算機(jī)光盤軟件與應(yīng)用,2012(7):245-246。
[6]李敏杰,呂橙,王雅杰,“C語言程序設(shè)計基礎(chǔ)”的教學(xué)改革與實踐[J],現(xiàn)代計算機(jī):專業(yè)版,2012(8):45-49。
(見習(xí)編輯:劉麗麗)