摘要:“程序設(shè)計(jì)”課程是計(jì)算機(jī)專業(yè)重要的基礎(chǔ)課程,本文針對(duì)學(xué)生群體特點(diǎn)從課堂教學(xué)和實(shí)驗(yàn)環(huán)節(jié)兩方面進(jìn)行改革,抓住知識(shí)主線進(jìn)行循環(huán)教學(xué)、注重實(shí)踐能力培養(yǎng)的教學(xué)方法收到了很好的教學(xué)效果。實(shí)踐表明,教學(xué)改革在提高教學(xué)質(zhì)量、培養(yǎng)學(xué)生編程能力方面都是有效的。
關(guān)鍵詞:程序設(shè)計(jì);教學(xué)方法;教學(xué)改革;循環(huán)教學(xué);編程能力
“程序設(shè)計(jì)”課程作為計(jì)算機(jī)專業(yè)教育重要的基礎(chǔ)課程,是“數(shù)據(jù)結(jié)構(gòu)”、“操作系統(tǒng)”等后續(xù)專業(yè)課程的先行課,學(xué)生對(duì)這門課程的掌握程度直接影響到他們對(duì)整個(gè)計(jì)算機(jī)專業(yè)知識(shí)體系的掌握程度。我國教育部計(jì)算機(jī)教學(xué)指導(dǎo)委員會(huì)在“高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)發(fā)展戰(zhàn)略研究報(bào)告暨專業(yè)規(guī)范(試行)”中明確把“程序設(shè)計(jì)”列入計(jì)算機(jī)和信息技術(shù)相關(guān)學(xué)科專業(yè)的本科必修專業(yè)基礎(chǔ)課程[1],美國的ACM和IEEE的Computing Curricula 2005也把“程序設(shè)計(jì)”列為計(jì)算機(jī)專業(yè)本科必修課[2]。對(duì)任課教師來說,如何教好如此重要的一門課程是件值得思考的事情。
云南大學(xué)信息學(xué)院承擔(dān)計(jì)算機(jī)和信息技術(shù)方面的教學(xué)和科研工作,每年招收超過300人的本科生到學(xué)院就讀。在這些學(xué)生當(dāng)中,約90%來自云南本省,而其中的70%又來自經(jīng)濟(jì)和文化相對(duì)落后的地州各縣及農(nóng)村地區(qū),還有的來自少數(shù)民族邊遠(yuǎn)地區(qū)。即使是現(xiàn)在,這些學(xué)生在中學(xué)階段仍然沒有條件體驗(yàn)現(xiàn)代信息技術(shù)普及所帶來的好處,缺少從小接受計(jì)算機(jī)文化耳濡目染的機(jī)會(huì),缺乏計(jì)算機(jī)的基本操作,更不用說編程的經(jīng)歷。大部分學(xué)生共有的特點(diǎn)是英語和計(jì)算機(jī)基礎(chǔ)底子薄。因此,要提高教學(xué)質(zhì)量,必須考慮學(xué)生群體的特點(diǎn)。另一方面,“程序設(shè)計(jì)”作為基礎(chǔ)課,設(shè)置在大學(xué)一年級(jí),學(xué)生剛剛經(jīng)歷了緊張的高中學(xué)習(xí),初進(jìn)大學(xué)的學(xué)習(xí)狀態(tài)普遍不佳。在這樣的條件下,按常規(guī)教學(xué)方法開展“程序設(shè)計(jì)”教育難以取得理想的效果。
為了提高“程序設(shè)計(jì)”課程的教學(xué)質(zhì)量,達(dá)到知識(shí)和能力的聯(lián)合培養(yǎng)目標(biāo),我校奉行因材施教的人才培養(yǎng)宗旨,對(duì)常規(guī)的教學(xué)方法進(jìn)行改革,針對(duì)學(xué)生群體特點(diǎn)開展有效的“程序設(shè)計(jì)”課程教學(xué)活動(dòng),以便幫助學(xué)生順利完成第一門編程課的學(xué)習(xí),為后續(xù)專業(yè)課程的學(xué)習(xí)打好扎實(shí)的基礎(chǔ)。本文從以下幾個(gè)方面對(duì)這門課程的教改實(shí)踐做一簡(jiǎn)要介紹。
1課堂教學(xué)的改革
在教學(xué)過程中,針對(duì)學(xué)生特點(diǎn),首先從教學(xué)內(nèi)容的選取和教學(xué)方法兩方面進(jìn)行教學(xué)改革。
1.1適當(dāng)取舍講授內(nèi)容
“程序設(shè)計(jì)”課程的學(xué)習(xí)語言是C語言,大多數(shù)教材內(nèi)容是按照C語言的基本語法規(guī)則和知識(shí)點(diǎn)編排,這種教材的優(yōu)點(diǎn)是內(nèi)容詳盡全面、講授細(xì)致,但也有一個(gè)明顯的負(fù)面效果,就是學(xué)生在使用教材的過程中,很容易陷入枯燥的語法泥潭,進(jìn)而失去了學(xué)習(xí)的興致。另外,書中的例子通常是與章節(jié)對(duì)應(yīng),較少有綜合的示例,也缺少對(duì)問題的分析、抽象以及算法的注解。
為了抓住知識(shí)主線,激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的綜合解題能力,對(duì)課堂講授內(nèi)容進(jìn)行適當(dāng)?shù)娜∩?,與其將所有內(nèi)容通講,不如精選部分內(nèi)容精講,讓學(xué)生牢固掌握這些知識(shí),打好編程的基礎(chǔ)。不過仍然要求學(xué)生在學(xué)期后段掌握未講到的一部分語法細(xì)節(jié),這部分內(nèi)容由學(xué)生在上機(jī)實(shí)踐過程中去認(rèn)識(shí)。比如,課堂講授一維數(shù)組的內(nèi)容,但不講字符數(shù)組的內(nèi)容,待學(xué)生把一維數(shù)組理解得清清楚楚后,二者的共同點(diǎn)和不同點(diǎn)在實(shí)驗(yàn)課上通過演示和學(xué)習(xí)示例程序得到理解,效果比在課堂上全部講授好得多。這種做法能夠在較短的時(shí)間里給學(xué)生鋪墊一層編程基礎(chǔ)知識(shí),避免花費(fèi)時(shí)間和精力達(dá)不到預(yù)期教學(xué)效果的局面,也促使學(xué)生在學(xué)習(xí)時(shí)變被動(dòng)為主動(dòng)。
1.2循環(huán)教學(xué)方法
逐章講授的方法的弊端是學(xué)生容易學(xué)了后面忘前面,也很難讓初次接觸程序設(shè)計(jì)的學(xué)生建立起全面、完整的概念,還容易造成語法學(xué)習(xí)與編程脫節(jié)的現(xiàn)象。為了打破這種傳統(tǒng)教學(xué)方法所帶來的問題,我校大膽采用“循環(huán)教學(xué)”的方法,分兩個(gè)階段實(shí)施“程序設(shè)計(jì)”的教學(xué)內(nèi)容。
第一個(gè)階段是打基礎(chǔ)階段。其目的是消除學(xué)生的編程陌生感和畏難心理,掌握C語言的基本語法,掌握程序設(shè)計(jì)的基本概念和思維方式,為后續(xù)部份的深入學(xué)習(xí)打下基礎(chǔ)。這一階段占用9周時(shí)間,主要內(nèi)容包括程序設(shè)計(jì)初步,即常用數(shù)據(jù)類型、常量與變量、表達(dá)式、輸入和輸出、選擇結(jié)構(gòu)、循環(huán)控制、窮舉、函數(shù)的傳值調(diào)用、一維數(shù)組,以及指針和文件的基本概念和編程。除了部分章節(jié),幾乎涉及到教材的所有內(nèi)容。這個(gè)階段包含期中考試,通常期中考試的書面考核由概念題和一道編程大題組成,其中編程大題用于考核運(yùn)用數(shù)組、選擇和循環(huán)等重要知識(shí)點(diǎn)的綜合編程能力。 第二個(gè)階段是提高階段。在期中考之后,學(xué)生已經(jīng)基本掌握了C語言重點(diǎn)知識(shí),并具備初步的編程能力,這時(shí),開始進(jìn)行第二階段的學(xué)習(xí),其目的是學(xué)習(xí)和掌握C語言較難的知識(shí)點(diǎn)、經(jīng)典算法以及編程的高級(jí)技巧,建立起程序設(shè)計(jì)的思維習(xí)慣。這個(gè)階段同樣使用9周時(shí)間,但學(xué)習(xí)內(nèi)容的深度和廣度不同,主要內(nèi)容有遞歸、二維數(shù)組、指針的運(yùn)用、文件操作等。此外,根據(jù)學(xué)生情況決定是否講授回溯、結(jié)構(gòu)體等難點(diǎn)內(nèi)容。
2實(shí)踐能力的培養(yǎng)
實(shí)踐能力包括兩個(gè)含義,一個(gè)含義是指編程動(dòng)手能力,這種能力是教學(xué)的主要培養(yǎng)目標(biāo),在整個(gè)教學(xué)環(huán)節(jié)中占有十分重要的地位。教育部計(jì)算機(jī)教指委的“高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)實(shí)踐教學(xué)體系與規(guī)范”中明確強(qiáng)調(diào)學(xué)生動(dòng)手能力培養(yǎng)的重要性[3]。另一個(gè)含義是指計(jì)算機(jī)專業(yè)的學(xué)生與時(shí)俱進(jìn)的能力,即主動(dòng)了解現(xiàn)代社會(huì)計(jì)算機(jī)技術(shù)應(yīng)用狀況的能力。在這樣的指導(dǎo)思想下,針對(duì)學(xué)生群體特點(diǎn),通過三個(gè)途徑有目的地培養(yǎng)學(xué)生的實(shí)踐能力。
2.1上機(jī)環(huán)節(jié)
上機(jī)實(shí)驗(yàn)是程序設(shè)計(jì)必不可少的教學(xué)環(huán)節(jié),一般安排從第3周開始,但在正式上機(jī)開課之前,針對(duì)那些進(jìn)大學(xué)以前沒有或很少接觸計(jì)算機(jī)的學(xué)生,按學(xué)生的自愿原則,通常會(huì)安排專門的2~4小時(shí)的計(jì)算機(jī)操作補(bǔ)習(xí)。在前2周課堂講授結(jié)束后,可以從驗(yàn)證性的實(shí)驗(yàn)開始啟動(dòng)實(shí)驗(yàn)課。實(shí)驗(yàn)課應(yīng)該是一個(gè)更生動(dòng)的教學(xué)環(huán)境,因此實(shí)驗(yàn)輔導(dǎo)員和任課教師都到場(chǎng)指導(dǎo),課上隨時(shí)講解共性的錯(cuò)誤。隨著知識(shí)的增加,上機(jī)題目也逐步從考查單一的知識(shí)點(diǎn)到考查多個(gè)知識(shí)點(diǎn),到考查學(xué)生運(yùn)用經(jīng)典算法的綜合編程能力。特別是在第9周以后即第二階段的學(xué)習(xí)期間,上機(jī)主要訓(xùn)練學(xué)生的綜合編程能力。每個(gè)學(xué)期的正式上機(jī)課持續(xù)16周,每次2小時(shí),共32個(gè)學(xué)時(shí)。為了能讓學(xué)生在課外也能有充裕的上機(jī)時(shí)間,鼓勵(lì)學(xué)生辦卡到公共機(jī)房上機(jī)調(diào)程序。
2.2程序閱讀和練寫
在思考如何教好一門程序設(shè)計(jì)語言的過程中,我們從人類學(xué)習(xí)自然語言的方法得到啟迪。每個(gè)人從小學(xué)習(xí)母語,都是先學(xué)會(huì)如何用,然后才是語法的分析[4]。借鑒這樣的思路,在教學(xué)過程中,經(jīng)常有意識(shí)地體現(xiàn)程序先入為主的思想,但在兩個(gè)階段的學(xué)習(xí)中有所側(cè)重。在學(xué)習(xí)的第一階段,先講基本概念和語法規(guī)則,緊接著提供示例程序進(jìn)行講解,以使學(xué)生從視覺到思維對(duì)程序產(chǎn)生熟悉感。在講解過程中,除了解釋語法的運(yùn)用外,還注重分析問題、抽象問題、抽象數(shù)據(jù)的能力的培養(yǎng)。編程風(fēng)格也是學(xué)習(xí)的重點(diǎn),從變量命名習(xí)慣到注釋語句的書寫,以及程序的結(jié)構(gòu),都在閱讀程序過程中加以強(qiáng)調(diào),以培養(yǎng)學(xué)生良好的編程風(fēng)格和慎密的編程習(xí)慣。此外,經(jīng)常在課堂上隨堂練寫小程序,并鼓勵(lì)學(xué)生上機(jī)調(diào)試。
第二個(gè)學(xué)習(xí)階段,在講新內(nèi)容之前安排預(yù)習(xí)任務(wù),除了書上的內(nèi)容,還經(jīng)常給出一個(gè)問題和一段程序代碼讓學(xué)生閱讀,自己發(fā)現(xiàn)其中懂的內(nèi)容和不懂的內(nèi)容。這樣的方法促使學(xué)生主動(dòng)思考、主動(dòng)學(xué)習(xí)。上課時(shí),教師從預(yù)習(xí)程序講起,學(xué)生帶著問題聽課使上課效果提高不少。教師在講解程序的同時(shí)導(dǎo)入新知識(shí)點(diǎn),這樣不但印象深刻,也十分有助于學(xué)生對(duì)新知識(shí)的理解。隨著學(xué)習(xí)的推進(jìn),提供給學(xué)生的程序段的量逐漸增多,引導(dǎo)學(xué)生在讀程序的過程中,注重分析結(jié)構(gòu)和功能、函數(shù)調(diào)用之間的關(guān)系;模仿和練寫精致、優(yōu)美的程序。
2.3網(wǎng)上電子學(xué)堂
現(xiàn)代互聯(lián)網(wǎng)擁有海量的資源,是進(jìn)一步的學(xué)習(xí)和提高的途徑。在學(xué)好基礎(chǔ)知識(shí)的同時(shí),我們鼓勵(lì)學(xué)生通過網(wǎng)絡(luò)獲得知識(shí),因?yàn)闀局R(shí)畢竟有限,也不可能在短短一個(gè)學(xué)期的時(shí)間把編程技術(shù)的現(xiàn)代應(yīng)用完全教給學(xué)生,“授人以魚,不如授之以漁”,讓學(xué)生掌握自我提高的方法不失為一種明智開放的教學(xué)理念。
鼓勵(lì)學(xué)生通過搜索引擎尋找編程題目,發(fā)現(xiàn)有趣的、反映社會(huì)需要的程序設(shè)計(jì)題目,積極參與編程。向?qū)W生介紹編程愛好者網(wǎng)絡(luò),如編程中國網(wǎng)、自學(xué)編程網(wǎng)等,在這些網(wǎng)絡(luò)中,大家可以在虛擬社區(qū)中相互交流和學(xué)習(xí),分享成功和失敗的體會(huì),感受IT行業(yè)內(nèi)的新觀點(diǎn)和潮流動(dòng)態(tài)。這些活動(dòng)會(huì)對(duì)學(xué)生產(chǎn)生正面的影響,潛意識(shí)里變成IT大家庭中的一員,激發(fā)起編程的熱望,產(chǎn)生學(xué)習(xí)的強(qiáng)大動(dòng)力。
3教改總結(jié)
與傳統(tǒng)教學(xué)方法比較,本文針對(duì)學(xué)生群體特點(diǎn)、抓住知識(shí)主線進(jìn)行循環(huán)教學(xué)、注重實(shí)踐能力的培養(yǎng)的教學(xué)方法收到了很好的教學(xué)效果;各個(gè)環(huán)節(jié)有機(jī)結(jié)合、相互補(bǔ)充,最終使學(xué)生受益。
在實(shí)踐過程中,學(xué)生掌握了扎實(shí)的基礎(chǔ)知識(shí),具有濃厚的編程積極性,經(jīng)常會(huì)看到有的學(xué)生在下課后迫不及待地直奔機(jī)房調(diào)試課堂上練寫的程序;動(dòng)手能力普遍增強(qiáng),許多學(xué)生在一個(gè)學(xué)期內(nèi)編出上千行的代碼,這使他們對(duì)于自己在計(jì)算機(jī)領(lǐng)域進(jìn)一步提高擁有十足的信心,并一直保持到畢業(yè),在找工作時(shí)體現(xiàn)了較強(qiáng)的競(jìng)爭(zhēng)力。最后,通過參與網(wǎng)絡(luò)編程社區(qū),帶動(dòng)了學(xué)生的學(xué)習(xí)積極性,激起了求知的欲望,也使學(xué)生認(rèn)識(shí)到計(jì)算機(jī)技術(shù)與現(xiàn)代社會(huì)之間的關(guān)系,意識(shí)到程序設(shè)計(jì)與時(shí)代是緊密相聯(lián)的,改變了僅學(xué)習(xí)書本知識(shí)的片面想法。
實(shí)踐證明,這種針對(duì)學(xué)生群體特點(diǎn)的教學(xué)方法是有效的,既能打下扎實(shí)的基礎(chǔ),又能有效地提高學(xué)生的實(shí)踐能力,為后續(xù)課程的學(xué)習(xí)及畢業(yè)找工作都奠定了很好的基礎(chǔ)。
4下一步的工作設(shè)想
雖然取得了很好的教學(xué)效果,但我們還在積極思索改進(jìn)的方法和切入點(diǎn)。比如,針對(duì)每一年的學(xué)生情況,如何更好地把握好課程內(nèi)容和循環(huán)教學(xué)的深度和廣度;如何找到更好的訓(xùn)練途徑有效提高編程能力等。2009年7月,筆者有幸參加了北京大學(xué)信息科學(xué)技術(shù)學(xué)院舉辦的“高等院校計(jì)算機(jī)教學(xué)研討及課程示范教學(xué)活動(dòng)”,聆聽計(jì)算機(jī)系李文新教授、代亞非教授和張銘教授的關(guān)于程序設(shè)計(jì)基礎(chǔ)課程群的建設(shè)經(jīng)驗(yàn),參加精彩的示范教學(xué)課,深深地感受到她們?cè)诮虒W(xué)改革方面細(xì)致的努力,目睹她們?cè)谂囵B(yǎng)計(jì)算機(jī)專業(yè)人才方面的巨大的成功,令人印象深刻、受益菲淺。北大的計(jì)算機(jī)教學(xué)改革給了我們很大的啟發(fā),為在自己的教學(xué)實(shí)踐中進(jìn)一步開展教學(xué)改革打開了新的思路。雖然校際之間的差異客觀存在,但在未來的工作中仍然可以借鑒北大的一些做法,將其應(yīng)用到我們的教學(xué)過程中。比如,強(qiáng)調(diào)基礎(chǔ)知識(shí)的理念;強(qiáng)調(diào)學(xué)生的問題抽象能力、數(shù)據(jù)抽象能力、邏輯思維能力的培養(yǎng)[5];再比如,引入北大POJ在線軟件百練和評(píng)測(cè)系統(tǒng),根據(jù)學(xué)生特點(diǎn)建立合適的題庫,為學(xué)生提供實(shí)用有效的編程訓(xùn)練環(huán)境等[6]。希望通過借鑒這些寶貴的經(jīng)驗(yàn)和思路,更好地培養(yǎng)學(xué)生分析問題、解決問題的能力,達(dá)到為社會(huì)輸送真正有用的計(jì)算機(jī)專業(yè)人才的目的。
參考文獻(xiàn):
[1] 教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)教育指導(dǎo)委員會(huì). 高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)發(fā)展戰(zhàn)略研究報(bào)告暨專業(yè)規(guī)范(試行)[M]. 北京:高等教育出版社,2006.
[2] Computing curricula 2005[EB/OL]. http://www.acm.org/education/curric_vols/CC2005-March06Final.pdf.
[3] 教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)教育指導(dǎo)委員會(huì). 高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)實(shí)踐教學(xué)體系與規(guī)范[M]. 北京:清華大學(xué)出版社,2008.
[4] 理查德#8226;格里格,菲利普#8226;津巴多. 心理學(xué)與生活[M]. 王壘,王 ,等譯. 北京:人民郵電出版社,2004.
[5] 張銘,李文新,陳徐宗,等. 北京大學(xué)計(jì)算機(jī)系本科課程改革進(jìn)展[J]. 計(jì)算機(jī)教育,2009(5):7-11.
[6] 李文新,梅宏,陳徐宗. 北京大學(xué)計(jì)算機(jī)學(xué)科的教學(xué)體系改革[J]. 中國大學(xué)教學(xué),2008(4):14-16.
Teaching Method of Program Design in Accordance with Features of Group of Student
ZHU Hong-mei, YANG Jian
(School of Information, Yunnan University, Kunming, 650091, China)
Abstract: Program Design is an important essential course for computer major. We conduct two reforms on teaching of content and programming experiment in accordance with features of student group in this paper. Teaching method that circulates teaching along with main line of knowledge and emphasizes abilities of practice achieves excellent effects of teaching. Practices demonstrate that the teaching reforms are useful in promoting teaching quality and nurturing students’ programming capabilities.
Key words: program design; teaching method; teaching reform; circulating teaching; programming capability
(編輯:白杰)