徐小青 李曉東
摘要:針對(duì)教師與學(xué)生普遍認(rèn)為高級(jí)語(yǔ)言“難教也難學(xué)”的現(xiàn)狀,文章從教學(xué)內(nèi)容、教學(xué)方法與手段等方面介紹了“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程所進(jìn)行的改革。實(shí)踐證明,這些教學(xué)改革效果良好,不僅有利于培養(yǎng)學(xué)生學(xué)習(xí)興趣,而且有利于培養(yǎng)學(xué)生分析問題與解決問題的能力。
關(guān)鍵詞:C語(yǔ)言;教學(xué)內(nèi)容;教學(xué)方法與手段;教學(xué)改革
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
1引言
我院“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程是以C語(yǔ)言作為指定語(yǔ)言的。它不但成為計(jì)算機(jī)專業(yè)的必修課,而且也越來越多地成為非計(jì)算機(jī)專業(yè)的學(xué)習(xí)課程。但在“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程教學(xué)中,許多學(xué)生都認(rèn)為C語(yǔ)言涉及的概念比較復(fù)雜,規(guī)則繁多,使用靈活,容易出錯(cuò),且程序設(shè)計(jì)課程邏輯性又很強(qiáng),學(xué)生不能很好地理解算法,編寫程序也很困難,教師教學(xué)和學(xué)生學(xué)習(xí)都感到困難,并在不同程度上產(chǎn)生畏難心理。特別是我院將C語(yǔ)言作為學(xué)生進(jìn)校后首先接觸的第一門專業(yè)基礎(chǔ)課,這種現(xiàn)象尤為明顯,而C語(yǔ)言基礎(chǔ)打不牢會(huì)直接影響后續(xù)專業(yè)課程的學(xué)習(xí)。因此如何改革“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程,進(jìn)一步提高教學(xué)效果,成為專業(yè)課程建設(shè)中的一個(gè)緊迫任務(wù)。
本文根據(jù)多年的程序設(shè)計(jì)課程的教學(xué)實(shí)踐,對(duì)“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程從教學(xué)內(nèi)容、教學(xué)手段、教學(xué)方法等方
面提出幾點(diǎn)建議。
2教學(xué)內(nèi)容
2.1教材的選擇
我院一開始使用的教材是由譚浩強(qiáng)教授編著的《C程序設(shè)計(jì)》,該書的特色是針對(duì)初學(xué)者的特點(diǎn)和認(rèn)知規(guī)律,精選內(nèi)容,分散難點(diǎn),降低臺(tái)階,例題較為豐富,通過深入淺出的敘述,闡明C語(yǔ)言復(fù)雜的概念,知識(shí)結(jié)構(gòu)系統(tǒng)、清晰、通俗易懂。但在編程思路和編程技巧方面較為欠缺。
在2005級(jí)學(xué)生中使用了Harvey M.Deitel和Paul J. Deitel編著的《C程序設(shè)計(jì)經(jīng)典教程》,該書的特色是應(yīng)用軟件工程原理講述結(jié)構(gòu)化程序設(shè)計(jì)方法,加強(qiáng)對(duì)控制語(yǔ)句和模塊化的有效使用,并強(qiáng)調(diào)程序的清晰性,通過從各種渠道收集來的大量實(shí)例、習(xí)題以及項(xiàng)目,讓學(xué)生能夠有機(jī)會(huì)來解決現(xiàn)實(shí)世界中有趣的問題,對(duì)學(xué)生編程思路和編程技巧有很好的幫助。但在整個(gè)知識(shí)結(jié)構(gòu)方面不如譚書系統(tǒng)和清晰。
由以上分析可知,兩本教材各有利弊,經(jīng)過實(shí)踐比較,并結(jié)合我院學(xué)生的實(shí)際情況,現(xiàn)在計(jì)算機(jī)科學(xué)與技術(shù)系仍然使用《C程序設(shè)計(jì)經(jīng)典教程》教材,而其他系使用《C程序設(shè)計(jì)》教材,但都給出若干本參考書,以彌補(bǔ)各自的不足。如電子信息工程系的參考書為:
《C語(yǔ)言設(shè)計(jì)教程》,薛萬(wàn)鵬等譯,機(jī)械工業(yè)出版社
《C程序設(shè)計(jì)經(jīng)典教程》,(美)Harvey M.DeitelPaul J.Deitl著,清華大學(xué)出版社
《從問題到程序——程序設(shè)計(jì)與C語(yǔ)言引論》,裘宗燕編著,機(jī)械工業(yè)出版社
《The C Programming Language》,Brain W.Kernighan,清華大學(xué)出版社
2.2課堂教學(xué)內(nèi)容的改革
以譚浩強(qiáng)的《C程序設(shè)計(jì)》為例,教學(xué)內(nèi)容主要包括C語(yǔ)言語(yǔ)法基礎(chǔ)、數(shù)據(jù)類型、程序控制結(jié)構(gòu)、函數(shù)、指針、文件等。教材在內(nèi)容組織上,在語(yǔ)法上講解過細(xì)、過多。在各章節(jié)的編程例子中,多數(shù)難度較大,分析較少;不夠形象,學(xué)生較難理解,且適用性不強(qiáng)。筆者本著“深入淺出,突出實(shí)用”的指導(dǎo)思想,在課堂教學(xué)過程中,對(duì)教學(xué)內(nèi)容重新進(jìn)行了歸納,將難點(diǎn)再次分散,以縮小臺(tái)階,達(dá)到循序漸進(jìn)。例如,C語(yǔ)言數(shù)據(jù)類型、運(yùn)算符、表達(dá)式種類繁多,放在一塊講授,學(xué)生學(xué)習(xí)起來難度較大,且過于枯燥,于是筆者就將其分散在不同的章節(jié)。譬如,先介紹算術(shù)型的數(shù)據(jù)類型、運(yùn)算符以及相關(guān)的表達(dá)式,使學(xué)生學(xué)習(xí)起來沒有想象中的那么難,緊接著又教學(xué)生編寫簡(jiǎn)單、實(shí)用的C程序,然后趁機(jī)引入基本輸入、輸出函數(shù)就順理成章了。這樣一來臺(tái)階小了,學(xué)生的信心也增加許多,學(xué)習(xí)積極性很快就被提高起來。對(duì)于生硬的語(yǔ)言敘述,盡量改用生動(dòng)的、學(xué)生熟悉的例子進(jìn)行比喻,進(jìn)行詳盡引導(dǎo)。例如,在開始學(xué)習(xí)指針的概念時(shí),教材對(duì)“間接存取”敘述比較深硬,學(xué)生難以理解,就借用比喻:將A房間的鑰匙放在B房間里,若要取A房間里的物品,就需要先打開B房間,取出A鑰匙,再打開A房間,取出A房間的物品,這就是“間接存取”。學(xué)生很快就能理解,也加深了指針的概念。在教學(xué)過程中,還應(yīng)及時(shí)查閱英文版教材和有關(guān)報(bào)刊雜志,對(duì)較難理解的概念,用不同的方式給以解釋。
2.3實(shí)驗(yàn)教學(xué)內(nèi)容的改革
“高級(jí)語(yǔ)言程序設(shè)計(jì)”是一門實(shí)踐性很強(qiáng)的課程,既要掌握概念,更要?jiǎng)邮志帉懗绦?。其主要任?wù)就是培養(yǎng)學(xué)生具有一定的閱讀程序、設(shè)計(jì)編寫程序的能力,分析問題、解決問題的能力和邏輯思維的能力。因此,上機(jī)實(shí)驗(yàn)是學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言必不可少的實(shí)踐環(huán)節(jié),特別是C語(yǔ)言靈活、簡(jiǎn)潔,更需要通過編程的實(shí)踐來真正掌握它。
筆者對(duì)實(shí)驗(yàn)內(nèi)容上進(jìn)行了認(rèn)真的探討,在實(shí)驗(yàn)題目的設(shè)置上,應(yīng)根據(jù)課時(shí)安排以及要掌握基本知識(shí)進(jìn)行,一般一次實(shí)驗(yàn)給出2~3個(gè)實(shí)驗(yàn)題目,分為必做與選做。這樣做的好處是一方面保留基礎(chǔ)性實(shí)驗(yàn),相對(duì)簡(jiǎn)單的基礎(chǔ)編程實(shí)驗(yàn)。使學(xué)生能夠較順利地編寫出程序,并及時(shí)理解和消化課堂教學(xué)內(nèi)容,同時(shí)也使學(xué)生獲得一定的成就感,使其學(xué)習(xí)熱情得到進(jìn)一步的提高。另一方面,增加一些實(shí)用性強(qiáng)的、難度略大的實(shí)驗(yàn)題目,以進(jìn)一步提高學(xué)生的編程能力;同時(shí)還可以滿足較高層次學(xué)生的需要。下面以電子信息工程系為例介紹實(shí)驗(yàn)內(nèi)容的設(shè)置。
我院為非計(jì)算機(jī)科學(xué)與技術(shù)系和信息安全系開設(shè)的“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程的實(shí)驗(yàn)學(xué)時(shí)是12學(xué)時(shí),共4個(gè)實(shí)驗(yàn)。由于實(shí)驗(yàn)課時(shí)較少,在實(shí)驗(yàn)內(nèi)容的安排上就顯得十分重要。第一次實(shí)驗(yàn)安排在約6學(xué)時(shí)以后,實(shí)驗(yàn)內(nèi)容是“熟悉上機(jī)環(huán)境、編寫簡(jiǎn)單程序”,其目的是讓學(xué)生熟悉C語(yǔ)言上機(jī)環(huán)境,學(xué)習(xí)完整的C程序開發(fā)過程和程序調(diào)試方法;理解簡(jiǎn)單的C程序結(jié)構(gòu)。為學(xué)生課下上機(jī)練習(xí)打下良好的基礎(chǔ)。鑒于函數(shù)、指針和文件是C語(yǔ)言的重點(diǎn)和難點(diǎn),我們分別將其作為第二、第三、第四次的實(shí)驗(yàn)內(nèi)容;其他各章我們也給出相應(yīng)的實(shí)驗(yàn)題目,讓學(xué)生課下自己上機(jī)練習(xí)。
另一方面要重視實(shí)驗(yàn)的總體要求,強(qiáng)調(diào)上機(jī)實(shí)驗(yàn)要經(jīng)歷三個(gè)步驟:
(1) 上機(jī)前的準(zhǔn)備
讓學(xué)生寫出實(shí)驗(yàn)預(yù)習(xí)報(bào)告。內(nèi)容包括對(duì)實(shí)驗(yàn)題目的理解和分析,選擇適當(dāng)算法,畫出流程圖并編寫程序。分析可能遇到的問題及解決的對(duì)策。準(zhǔn)備幾組測(cè)試程序的數(shù)據(jù)和預(yù)期的正確結(jié)果,以便發(fā)現(xiàn)程序中可能存在的錯(cuò)誤。
(2) 上機(jī)輸入和編輯程序,并調(diào)試運(yùn)行程序
首先調(diào)用C語(yǔ)言集成開發(fā)環(huán)境,輸入并編輯事先準(zhǔn)備好的源程序;然后進(jìn)行調(diào)式。在調(diào)試過程中,要充分利用C語(yǔ)言集成開發(fā)環(huán)境提供的調(diào)試手段和工具,例如單步跟蹤、設(shè)置斷點(diǎn)、監(jiān)視變量值的變化等。整個(gè)過程應(yīng)自己獨(dú)立完成。不要遇到一點(diǎn)小問題就找老師,學(xué)會(huì)獨(dú)立思考,勤于分析,通過自己實(shí)踐得到的經(jīng)驗(yàn)用起來更加得心應(yīng)手。同時(shí)加大實(shí)驗(yàn)的輔導(dǎo)。
(3) 整理上機(jī)實(shí)驗(yàn)結(jié)果,寫出實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)結(jié)束后,要求學(xué)生整理實(shí)驗(yàn)結(jié)果并認(rèn)真分析和總結(jié),寫出實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)報(bào)告要包括如下內(nèi)容:
實(shí)驗(yàn)內(nèi)容:實(shí)驗(yàn)題目與要求。
算法說明:用文字或流程圖說明。
程序清單
3教學(xué)方法與手段
在教學(xué)方法上,從以教師為主體的“滿堂灌”的方式轉(zhuǎn)向以學(xué)生為主體、教師為主導(dǎo)的教學(xué)方法。有效地培養(yǎng)學(xué)生的分析問題與解決問題的能力。以“選擇排序”為例,筆者沒有平鋪直敘地介紹算法與程序代碼,而是先給出例題:在長(zhǎng)度為10的數(shù)組中找出最小元素,并與第一個(gè)元素對(duì)調(diào),引導(dǎo)學(xué)生編寫出相應(yīng)程序。然后給出新的問題:在后9個(gè)元素中最小值與第二個(gè)元素對(duì)調(diào)應(yīng)如何修改;……;在后10-i個(gè)元素中最小值與第i+1個(gè)元素對(duì)調(diào)應(yīng)如何修改;最后總結(jié)出選擇排序算法的全過程,直至整個(gè)程序編寫完整。即沿著問題帶出算法,由算法帶出程序設(shè)計(jì)語(yǔ)言的思路講述C語(yǔ)言中的各個(gè)知識(shí)點(diǎn)。整個(gè)講解過中結(jié)合板書,逐步引導(dǎo),層層深入,取得很好的教學(xué)效果。
在C語(yǔ)言教學(xué)過程中,注意各章節(jié)講述中的前后呼應(yīng)和類比,加深學(xué)生的理解與應(yīng)用。例如以“求1000以內(nèi)的所有‘水仙花數(shù)”例題為例,筆者先后分別在循環(huán)控制、數(shù)組和函數(shù)三章中進(jìn)行了講解,讓學(xué)生自己總結(jié)出最佳的程序結(jié)構(gòu),提高編程能力。同時(shí)通過不同的解題方法,有利于學(xué)生加深對(duì)所學(xué)知識(shí)的理解,讓學(xué)生真正體會(huì)到C語(yǔ)言的靈活性,激發(fā)學(xué)生的學(xué)習(xí)興趣和求知欲。
另外在C語(yǔ)言教學(xué)過程中,還要充分發(fā)揮學(xué)生的積極性與主動(dòng)性。筆者針對(duì)這門課程的特點(diǎn),激發(fā)學(xué)生主動(dòng)思考,課前可以給學(xué)生布置幾個(gè)專題,讓學(xué)生利用課余時(shí)間去思考、收集資料,并在課堂上組織學(xué)生發(fā)言和討論。這種教學(xué)法不僅可以讓學(xué)生獲得許多課外知識(shí),同時(shí)也促進(jìn)教學(xué)內(nèi)容的改革,而且也有利于充分挖掘?qū)W生的學(xué)習(xí)潛力。
在教學(xué)手段上,積極采用現(xiàn)代化的教學(xué)手段,如多媒體教學(xué)、網(wǎng)絡(luò)教學(xué)等,這樣有利于激發(fā)學(xué)生的學(xué)習(xí)興趣,發(fā)展學(xué)生的主體能力;同時(shí)由于多媒體信息量大,也能夠優(yōu)化教學(xué)過程。但多媒體教學(xué)也有一些不利之處,主要體現(xiàn)在不恰當(dāng)?shù)氖褂脮?huì)分散學(xué)生注意力,影響主要問題的理解,也不利于發(fā)揮學(xué)生的想象力。在C語(yǔ)言程序設(shè)計(jì)課程教學(xué)過程中,考慮到課程的特點(diǎn),揚(yáng)長(zhǎng)避短,將傳統(tǒng)教學(xué)與多媒體教學(xué)進(jìn)行了有機(jī)的結(jié)合。例如可以將一些概念、語(yǔ)句的格式、大信息量的案例代碼制作成課件,在課堂做展示供學(xué)生增加信息量用。但對(duì)于案例分析或程序的編寫過程,就發(fā)揮傳統(tǒng)教學(xué)的優(yōu)勢(shì),進(jìn)行課堂討論、板書講解、結(jié)合提問,將問題層層剖析、層層深入,達(dá)到師生互動(dòng)的效果,學(xué)生的想象力也會(huì)得到充分的發(fā)揮,對(duì)問題的理解也變得更容易。另外,充分利用網(wǎng)絡(luò)資源,將電子教案、大綱、課件、習(xí)題等放在網(wǎng)上,供學(xué)生自行調(diào)用,同時(shí)通過其QQ、E-mail等形式對(duì)學(xué)生的提問進(jìn)行
答疑、討論,以彌補(bǔ)課堂教學(xué)的不足。
4改革課程考核辦法
建立一個(gè)服務(wù)于課程目標(biāo)的學(xué)生學(xué)習(xí)評(píng)價(jià)方法是一項(xiàng)非常重要的工作,考核不是目的,“以考促學(xué)”才是考核的本質(zhì)。
傳統(tǒng)的期末“筆試”這種單一的、“一考定終身”式的考核方式,已遠(yuǎn)遠(yuǎn)不能滿足課程的需要。為使考核真正發(fā)揮“以考促學(xué)”的作用,我們改革了考核內(nèi)容和考核方法,重視對(duì)學(xué)生學(xué)習(xí)過程的考核,重視實(shí)際動(dòng)手能力的考核,側(cè)重考核學(xué)生對(duì)知識(shí)的融會(huì)貫通和靈活運(yùn)用能力,而不僅僅是基本理論、基本知識(shí)的掌握。具體的改革措施如下:
(1) 變單一考核為復(fù)合考核,從多個(gè)方面對(duì)學(xué)生進(jìn)行考核。課程總成績(jī)由平時(shí)成績(jī)、實(shí)驗(yàn)成績(jī)、期中成績(jī)、期末成績(jī)四個(gè)部分構(gòu)成。其中,平時(shí)成績(jī)考核包括對(duì)出勤、隨堂實(shí)訓(xùn)、課堂提問、作業(yè)等部分;實(shí)驗(yàn)成績(jī)考核是針對(duì)課程的4次實(shí)驗(yàn)成績(jī)。
(2) 衡量這門課學(xué)習(xí)的好壞,不是看學(xué)生“知不知道”,而是“會(huì)不會(huì)干”。期末試題考核的方法不用是非題和選擇題,把重點(diǎn)放在讀程序、編制程序和調(diào)試程序。
實(shí)踐表明,這種考核方法不但能更客觀地反映學(xué)生的學(xué)習(xí)情況,同時(shí)也能促進(jìn)學(xué)生學(xué)習(xí),起到良好的教學(xué)效果。
5結(jié)束語(yǔ)
本文教學(xué)內(nèi)容、教學(xué)方法與手段的改革,是根據(jù)實(shí)際教學(xué)過程中學(xué)生存在的問題提出的,并已經(jīng)在“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程教學(xué)實(shí)踐中加以運(yùn)用,得到大部分學(xué)生的認(rèn)可,取得了較好的教學(xué)效果。當(dāng)然,同樣的教學(xué)內(nèi)容面對(duì)不同的學(xué)生,在使用與設(shè)計(jì)某種教學(xué)方法時(shí),還要求學(xué)生的配合才行,也就是說教的方法與學(xué)的方法要有機(jī)統(tǒng)一。我們將繼續(xù)努力探索,使“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程教學(xué)日趨完善。希望本文能對(duì)大學(xué)計(jì)算機(jī)基礎(chǔ)教學(xué)有一定的借鑒作用。
參考文獻(xiàn):
[1] 譚浩強(qiáng).C程序設(shè)計(jì)[M].3版.北京:清華大學(xué)出版社,2005.
[2] (美)Harvey M.Deitel,Paul J.Deitl.C程序設(shè)計(jì)經(jīng)典教程[M].4版.北京:清華大學(xué)出版社,2005.
“High-level Language Programming” Course Teaching Reform and Practice
XU Xiao-qing, LI Xiao-dong
(Department of Computer Science and Technology, Institute of Beijing Electronic Science and Technology, Beijing 100070, China)
Abstract: In view of teachers and students generally agreeing that high-level language is both difficult to learn and hard to teach, the “high-level language program design” course reform practice is introduced from the teaching content, teaching methods and means. Practice has proved that the reform of the teaching is effective, which will not only help students interest in learning, but also be conducive to train students abilities to analyze and solve problems.
Key words: C language; teaching content; teaching methods and means; teaching reform