尹存燕,劉奇志,陳家駿
(南京大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,江蘇 南京 210023)
程序設(shè)計(jì)基礎(chǔ)這門課程主要講授過程式程序設(shè)計(jì)的基本思想和方法。在南京大學(xué),這門課目前不僅是計(jì)算機(jī)類專業(yè)的基礎(chǔ)平臺(tái)課,還是面向全校開放的選修課。程序設(shè)計(jì)基礎(chǔ)理論教學(xué)環(huán)節(jié)由于是大班教學(xué),課堂上教學(xué)互動(dòng)時(shí)間有限,多數(shù)學(xué)生是被動(dòng)學(xué)習(xí),被動(dòng)接受知識(shí)的輸入,而程序設(shè)計(jì)本身對(duì)實(shí)踐有較高要求,學(xué)生必須通過編程實(shí)踐,才能真正掌握程序設(shè)計(jì)的基本思想和方法,因此實(shí)驗(yàn)教學(xué)環(huán)節(jié)在程序設(shè)計(jì)基礎(chǔ)這門課中顯得尤為重要。實(shí)驗(yàn)教學(xué)環(huán)節(jié)的目標(biāo)是充分激發(fā)學(xué)生興趣,以提高實(shí)驗(yàn)教學(xué)質(zhì)量和效果。
傳統(tǒng)程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)的主要形式是教師布置實(shí)驗(yàn)內(nèi)容,學(xué)生根據(jù)實(shí)驗(yàn)要求完成相關(guān)編程實(shí)踐。實(shí)驗(yàn)內(nèi)容主要是教材上的習(xí)題。實(shí)驗(yàn)課上,教師和學(xué)生的互動(dòng)主要是回答學(xué)生編程中遇到的問題。此外,為了檢驗(yàn)學(xué)生的編程能力,還安排隨堂測(cè)驗(yàn),要求學(xué)生當(dāng)堂閉卷完成編程題目。
通過收集學(xué)生的反饋信息,可以了解到:有些學(xué)生感覺程序設(shè)計(jì)實(shí)驗(yàn)的過程比較枯燥;編程基礎(chǔ)薄弱的學(xué)生,特別是中學(xué)階段沒有接觸過編程訓(xùn)練的學(xué)生普遍認(rèn)為程序設(shè)計(jì)難度大;實(shí)驗(yàn)教學(xué)課時(shí)少,在實(shí)驗(yàn)課上教師無法和所有學(xué)生互動(dòng),有些內(nèi)向的學(xué)生遇到問題時(shí)就選擇沉默。對(duì)于有一定復(fù)雜度的編程題,一部分學(xué)生在編程中會(huì)有挫敗感,失去編程的興趣。
分析學(xué)生的反饋信息,不難發(fā)現(xiàn)其中的原因,主要有3點(diǎn):①受到中學(xué)教學(xué)方式的影響,學(xué)生還習(xí)慣于被動(dòng)接受知識(shí)輸入,學(xué)習(xí)主動(dòng)性不夠;②教材習(xí)題往往是為了配合程序設(shè)計(jì)基本知識(shí)而設(shè)計(jì),和實(shí)際應(yīng)用有一定的偏差,實(shí)驗(yàn)程序缺乏趣味性;③編程能力本身需要經(jīng)過一定代碼量的實(shí)踐訓(xùn)練才能提高,不可能一蹴而就。初學(xué)者往往會(huì)因?yàn)榫幊讨杏龅降睦щy而氣餒,慢慢失去編程實(shí)踐的積極性。
以上這些原因歸結(jié)到一個(gè)最根本的因素就是學(xué)生缺乏編程的興趣。做學(xué)問的本質(zhì)是以趣味始,以趣味終[1]。盧梭有句名言“問題不在于教他各種學(xué)問,而在于培養(yǎng)他愛好學(xué)問的興趣,而且在這種興趣充分增長(zhǎng)起來的時(shí)候,教他以研究學(xué)問的方法?!睂W(xué)生如果對(duì)編程產(chǎn)生了興趣,就會(huì)主動(dòng)學(xué)習(xí)程序中涉及的基本知識(shí)和方法,主動(dòng)分析問題、思考問題和解決問題[2]。
以興趣為導(dǎo)向的實(shí)驗(yàn)教學(xué)實(shí)踐針對(duì)實(shí)驗(yàn)教學(xué)的形式和內(nèi)容,從編程趣味性的角度出發(fā),充分激發(fā)和培養(yǎng)學(xué)生的編程興趣,挖掘?qū)W生的潛能,讓他們由被動(dòng)學(xué)習(xí)變主動(dòng)學(xué)習(xí),充分參與編程實(shí)踐,最終達(dá)到提高編程能力的教學(xué)目標(biāo)。
就實(shí)驗(yàn)教學(xué)形式而言,首先,借鑒翻轉(zhuǎn)課堂的教學(xué)形式[3-5],除了隨堂測(cè)驗(yàn)的題目外,實(shí)驗(yàn)題目及相關(guān)知識(shí)點(diǎn)一般提前一周在課程網(wǎng)站上公布。學(xué)生提前了解實(shí)驗(yàn)內(nèi)容及相關(guān)知識(shí)點(diǎn),就會(huì)對(duì)實(shí)驗(yàn)難度做到心中有數(shù),如果有不熟悉的知識(shí)點(diǎn),可以提前在教材上找到相關(guān)編程示例學(xué)習(xí)。有了提前的知識(shí)準(zhǔn)備,實(shí)驗(yàn)課上學(xué)生就不會(huì)手足無措。
其次,除了傳統(tǒng)的學(xué)生提問、老師回答之外,實(shí)驗(yàn)課上還采用以下幾種形式激發(fā)學(xué)生興趣。
(1)學(xué)生相互批改作業(yè)程序。初學(xué)者在編程中遇到的問題主要是語法問題和邏輯問題。這些問題涉及的知識(shí)點(diǎn),教師覺得很基本,學(xué)生應(yīng)該會(huì)很快掌握,但是實(shí)際編程實(shí)踐中,初學(xué)者要經(jīng)過多次訓(xùn)練才能掌握。如果只是單一地布置編程訓(xùn)練,學(xué)生難免會(huì)覺得乏味。采用相互批改作業(yè)的方式,學(xué)生首先要看懂別人的程序,才能判斷程序的對(duì)錯(cuò)。學(xué)生在閱讀別人的程序過程中,可以充分體會(huì)到良好程序設(shè)計(jì)風(fēng)格的重要性,在今后的編程實(shí)踐中會(huì)有意識(shí)地形成良好的程序設(shè)計(jì)風(fēng)格;在調(diào)試別人程序的過程中,根據(jù)別人的錯(cuò)誤現(xiàn)象,可以加強(qiáng)自身對(duì)語法知識(shí)點(diǎn)的理解和記憶。
(2)小組討論。將學(xué)生分成若干小組,每個(gè)小組的平均編程能力相近,針對(duì)某個(gè)問題進(jìn)行討論。每名學(xué)生都要提出對(duì)問題的分析思路以及解決方法,小組成員共同探討哪些思路和方法是可行的。通過小組討論,學(xué)生能夠拓展編程思維,看到同一個(gè)問題,可以有不同的解決方法,并且經(jīng)過編程實(shí)踐可以對(duì)比不同方法的優(yōu)點(diǎn)和缺點(diǎn)。
(3)項(xiàng)目答辯。項(xiàng)目實(shí)驗(yàn)考查的是學(xué)生綜合分析問題和解決問題的能力,項(xiàng)目程序往往具有一定復(fù)雜度和難度。程序設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)教學(xué)目標(biāo)是每名學(xué)生都積極參與編程,通過項(xiàng)目答辯,可以考查每名學(xué)生是否真正參與項(xiàng)目程序的設(shè)計(jì)。項(xiàng)目評(píng)分包括項(xiàng)目報(bào)告、項(xiàng)目程序和項(xiàng)目答辯,對(duì)于個(gè)別編程能力較弱的學(xué)生來說,不會(huì)因?yàn)槠錈o法完整實(shí)現(xiàn)項(xiàng)目所有功能,就評(píng)分很低。項(xiàng)目評(píng)分機(jī)制的改變使得這些學(xué)生不再畏懼項(xiàng)目實(shí)驗(yàn),而會(huì)盡自己的能力完成項(xiàng)目,鍛煉自己的編程能力。學(xué)生能獨(dú)立完成項(xiàng)目基本功能,要好于抄襲完成所有功能。
(4)編程小競(jìng)賽。編程小競(jìng)賽在每年的暑假進(jìn)行,面向所有學(xué)生。編程能力的培養(yǎng)是一個(gè)持續(xù)的過程,單憑一個(gè)學(xué)期的實(shí)驗(yàn)課訓(xùn)練是遠(yuǎn)遠(yuǎn)不夠的。實(shí)驗(yàn)課上舉辦編程小競(jìng)賽,就是想讓已經(jīng)完成程序設(shè)計(jì)實(shí)驗(yàn)課程的學(xué)生再次回顧編程訓(xùn)練,在學(xué)生中制造一種人人愛編程的氛圍??紤]到參賽者的編程能力差異,競(jìng)賽題目難度設(shè)計(jì)上應(yīng)既考慮到基礎(chǔ)薄弱的學(xué)生,又考慮到編程能力強(qiáng)的學(xué)生,這樣可以吸引更多的學(xué)生參加。在競(jìng)賽形式上,可以盡量舉辦得活潑生動(dòng),如今年的競(jìng)賽名稱叫“編程甜品會(huì)”,競(jìng)賽規(guī)則是在規(guī)定時(shí)間內(nèi)完成一題就可以獲得一個(gè)甜點(diǎn)或者飲料,學(xué)生以輕松愉快的心情參加競(jìng)賽,對(duì)競(jìng)賽的參與度越來越高。
最后,實(shí)驗(yàn)教學(xué)如果單單局限于有限的課時(shí),勢(shì)必會(huì)出現(xiàn)部分學(xué)生不能及時(shí)得到教師幫助的情況。如果學(xué)生性格內(nèi)向,課上不主動(dòng)和教師交流,課后也不向同學(xué)請(qǐng)教,問題越積越多,一個(gè)學(xué)期過去,其編程能力就會(huì)和同班同學(xué)存在明顯的差距。為了能讓所有學(xué)生得到及時(shí)的幫助,每屆實(shí)驗(yàn)課班級(jí)都建立有QQ群。在QQ群里,不僅學(xué)生可以及時(shí)和教師交流,而且學(xué)生間的交流也有所加強(qiáng)。一個(gè)學(xué)生提出問題,不僅教師回答,其他學(xué)生還會(huì)參與回答。課程群里允許匿名提問,這樣內(nèi)向害羞的學(xué)生也敢于提出問題,從而獲取幫助。QQ群濃厚的學(xué)習(xí)氣氛可以感染所有學(xué)生,促進(jìn)大家共同進(jìn)步。
除了實(shí)驗(yàn)教學(xué)形式,實(shí)驗(yàn)教學(xué)內(nèi)容的設(shè)置也要以激發(fā)學(xué)生興趣為導(dǎo)向。實(shí)驗(yàn)內(nèi)容既要保證基礎(chǔ)薄弱的學(xué)生看得懂、跟得上、積極性不減,又要充分激發(fā)學(xué)生的創(chuàng)新意識(shí)和創(chuàng)新思維。
教材上每章習(xí)題的設(shè)計(jì)出發(fā)點(diǎn)是說明語法細(xì)節(jié)或者基本程序設(shè)計(jì)思想,因而和實(shí)際應(yīng)用有一定的偏差。這些題目用于編程訓(xùn)練固然沒有問題,但是要想提高學(xué)生的編程興趣,就需要引入吸引學(xué)生的編程題目。
首先,對(duì)于本科一年級(jí)的學(xué)生來說,還沒有深入學(xué)習(xí)算法、數(shù)據(jù)結(jié)構(gòu)等相關(guān)知識(shí),實(shí)驗(yàn)題目如果有較多的算法題,會(huì)讓學(xué)生感覺實(shí)驗(yàn)課較為枯燥,此外,算法題目一般具有一定的難度,會(huì)讓一部分基礎(chǔ)薄弱的學(xué)生對(duì)編程產(chǎn)生畏懼感。在實(shí)驗(yàn)內(nèi)容上舍棄一些需要復(fù)雜算法和數(shù)據(jù)結(jié)構(gòu)的項(xiàng)目實(shí)驗(yàn),引入一些和實(shí)際應(yīng)用相關(guān)的題目,如編程實(shí)現(xiàn)某個(gè)小游戲,將某個(gè)應(yīng)用實(shí)例的功能簡(jiǎn)化到大多數(shù)學(xué)生可以編程實(shí)現(xiàn)的程度。布置項(xiàng)目實(shí)驗(yàn)時(shí),明確項(xiàng)目實(shí)驗(yàn)的目的是考查學(xué)生對(duì)基本程序設(shè)計(jì)思想和方法的綜合應(yīng)用,目標(biāo)是鍛煉學(xué)生思考問題、分析問題和解決問題的能力。在項(xiàng)目實(shí)驗(yàn)編程規(guī)模上,設(shè)定是每個(gè)學(xué)生都能獨(dú)立完成,不考慮組隊(duì)完成,每名學(xué)生都需要努力訓(xùn)練和提高自己的編程能力。
其次,學(xué)生之間的編程能力差異是客觀存在的現(xiàn)象,有的學(xué)生在中學(xué)階段就已經(jīng)接觸編程知識(shí),而有的學(xué)生沒有充足的計(jì)算機(jī)基礎(chǔ)知識(shí),在學(xué)習(xí)程序設(shè)計(jì)課程時(shí),明顯比有基礎(chǔ)的學(xué)生感覺難度大,因此若要激發(fā)學(xué)生的學(xué)習(xí)興趣,實(shí)驗(yàn)內(nèi)容設(shè)置就要考慮到不同層次學(xué)生的接受能力。實(shí)驗(yàn)課內(nèi)容劃分難度層次,基礎(chǔ)薄弱的學(xué)生可以選擇從基本驗(yàn)證實(shí)驗(yàn)開始訓(xùn)練;有一定編程基礎(chǔ)的學(xué)生可以選擇從綜合實(shí)驗(yàn)題目開始訓(xùn)練。這樣,基礎(chǔ)薄弱的學(xué)生有成功完成實(shí)驗(yàn)的經(jīng)歷,就會(huì)增強(qiáng)自信心,會(huì)有嘗試挑戰(zhàn)綜合實(shí)驗(yàn)題目的欲望;而有一定編程基礎(chǔ)的學(xué)生,通過完成綜合實(shí)驗(yàn)題目,有了編程的成就感,會(huì)更加迫切地想學(xué)習(xí)后面的編程內(nèi)容。
最后,鼓勵(lì)運(yùn)用多種方法實(shí)現(xiàn)程序?,F(xiàn)在的高校人才培養(yǎng)提倡加強(qiáng)創(chuàng)新意識(shí)和創(chuàng)新思維的培養(yǎng)。在編程實(shí)踐中,鼓勵(lì)學(xué)生不拘一格,打開思路,學(xué)會(huì)從不同的角度分析題目,在完成一個(gè)題目的編程后,思考是否還有其他方法也可以實(shí)現(xiàn)題目要求的功能。教師針對(duì)每個(gè)實(shí)驗(yàn)進(jìn)行總結(jié),列出學(xué)生提交的不同方法,讓學(xué)生通過比較,學(xué)習(xí)不同的編程方法,對(duì)所學(xué)的編程知識(shí)點(diǎn)融會(huì)貫通。
實(shí)驗(yàn)教學(xué)實(shí)踐環(huán)節(jié)需要不斷探索。為了跟蹤學(xué)生的學(xué)習(xí)狀況,我們?cè)趯W(xué)期初和學(xué)期末都會(huì)讓學(xué)生在線填寫調(diào)查問卷。反饋的問卷信息顯示,在學(xué)期初一般會(huì)有一半甚至一半以上的學(xué)生對(duì)“你對(duì)編程是否有興趣”的選擇是“否”,而到了學(xué)期末,選擇“否”的比例會(huì)明顯下降。最近一次調(diào)查中,選擇“否”的比例下降到15%以下。隨著學(xué)生的編程積極性逐年提高,后續(xù)專業(yè)課程的教師對(duì)學(xué)生編程能力的滿意度也在提高。在今后的實(shí)驗(yàn)教學(xué)環(huán)節(jié)中,我們還將繼續(xù)探索更加生動(dòng)有趣的實(shí)驗(yàn)形式,優(yōu)化實(shí)驗(yàn)內(nèi)容,加深其趣味性,努力使每一名學(xué)生都能愛上編程實(shí)驗(yàn)課,積極參與編程實(shí)踐,訓(xùn)練并提高自己的編程能力,為今后的專業(yè)學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
參考文獻(xiàn):
[1]梁?jiǎn)⒊? 飲冰室合集5[M]. 北京: 中華書局, 1989: 15.
[2]朱衛(wèi)東, 邱振戈, 欒奎峰, 等. 計(jì)算機(jī)編程促發(fā)興趣的教學(xué)模式實(shí)踐與思考[J]. 電腦知識(shí)與技術(shù), 2015(29): 140-141.
[3]屈微, 姚琳, 汪紅兵. 程序設(shè)計(jì)課程中的翻轉(zhuǎn)教學(xué)模式[J]. 計(jì)算機(jī)教育, 2016(1): 142-145.
[4]王世蓉, 高騰剛, 黃政. 程序設(shè)計(jì)課程混合教學(xué)模式改革與實(shí)踐[J]. 大學(xué)教育, 2017(5): 29-30.
[5]李洪建. 基于混合式教學(xué)模式的計(jì)算機(jī)教學(xué)改革[J]. 計(jì)算機(jī)教育, 2015(24): 36-40.