國家教育部制定的《普通高中技術(shù)課程標(biāo)準(zhǔn)(實(shí)驗(yàn))》要求,學(xué)校在開設(shè)必修模塊教學(xué)的基礎(chǔ)上,“至少應(yīng)開設(shè)算法與程序設(shè)計(jì)、多媒體技術(shù)應(yīng)用、網(wǎng)絡(luò)技術(shù)應(yīng)用、數(shù)據(jù)管理技術(shù)中的兩個,也要制定規(guī)劃,逐步克服經(jīng)費(fèi)、師資、場地、設(shè)備等因素的制約,開出包括人工智能初步在內(nèi)的所有選修模塊,為學(xué)生提供更豐富的選擇[1]?!睆哪壳案咧行畔⒓夹g(shù)課程的教學(xué)情況來看,“算法與程序設(shè)計(jì)”模塊位于選修模塊的首位,但其教學(xué)現(xiàn)狀卻令人擔(dān)憂。
一、當(dāng)前的困惑
針對“算法與程序設(shè)計(jì)”模塊教學(xué)現(xiàn)狀,筆者通過問卷調(diào)查、座談等多種方式了解該模塊開設(shè)率偏低的原因。同時查閱專業(yè)數(shù)據(jù)庫,綜合全國其他教師的觀點(diǎn),歸納出了當(dāng)前開展“算法”模塊教學(xué)存在的主要困難。
從學(xué)生角度來看,開展“算法”模塊教學(xué)主要有以下困難:1)學(xué)習(xí)心理上有障礙,學(xué)習(xí)內(nèi)容實(shí)用性不強(qiáng)。教材上的案例多為數(shù)學(xué)問題,一類為一眼就能看出答案的問題,對這類例題學(xué)生產(chǎn)生的疑問是:“這么簡單的問題為什么要這么麻煩,要計(jì)算機(jī)來解決。”另一類是數(shù)學(xué)課上怎么都弄不明白的問題,信息技術(shù)教師又在不停地重復(fù)著這些難題。2)理論課枯燥,沒有聯(lián)系實(shí)際生活,趣味性不強(qiáng),難于激發(fā)學(xué)習(xí)興趣。3)沒時間做作業(yè),頭腦中的知識銜接出現(xiàn)斷點(diǎn)[2]。
從教師角度來看,開展“算法”模塊教學(xué)的困難主要體現(xiàn)在以下幾點(diǎn):1)難以激發(fā)學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣。教師大多采用傳統(tǒng)的先講后演示、學(xué)生先聽后編程的教學(xué)方式。學(xué)生在聽或者看的過程中往往注意力難以集中,到實(shí)踐編程時自然就無從下手。2)基礎(chǔ)知識與理論內(nèi)容多,不講學(xué)生不明白,講多了學(xué)生沒有耐心聽。3)課時少,內(nèi)容多,課時安排時間間隔長,遺忘率高。模塊中包括大量的數(shù)據(jù)、語句、過程以及函數(shù)等基礎(chǔ)知識,需要教師詳細(xì)地講解,學(xué)生在課堂上通過大量地訓(xùn)練才能熟練應(yīng)用。講解一個完整的算法往往需要一兩節(jié)課時間,而要讓絕大多數(shù)的學(xué)生真正能自主編寫,甚至需要投入更多的時間,要學(xué)生全面理解算法并學(xué)會編程難度偏大。
二、課程的核心價值
信息技術(shù)課程的發(fā)展經(jīng)歷了程序設(shè)計(jì)文化論、工具論、信息素養(yǎng)論等幾個不同的階段。社會發(fā)展與需求的變化推動信息技術(shù)日新月異地發(fā)展。作為信息技術(shù)學(xué)科的一線教師,筆者也時常在想:“‘算法與程序設(shè)計(jì)模塊作為信息技術(shù)課程的一部分,教學(xué)目標(biāo)是什么?它的核心價值在哪里?究竟培養(yǎng)學(xué)生什么能力?能否挖掘一些該模塊特有的東西?”
筆者結(jié)合多年的教學(xué)實(shí)踐,將本模塊的教學(xué)目標(biāo)定位于:打造程序設(shè)計(jì)文化,培養(yǎng)計(jì)算思維以及算法思維。一線教師應(yīng)站在更高的角度去審視課程,不僅要教會學(xué)生編程及其他技巧,還要通過編程將計(jì)算思維、算法思維等滲透于教學(xué)中,充實(shí)和完善信息技術(shù)學(xué)科的價值。
信息技術(shù),尤其是程序設(shè)計(jì),在人類文化中占有一席之地。首先,人類生存要運(yùn)用工具,特別是要運(yùn)用工具來解決問題。計(jì)算機(jī)是大腦的延伸,如何讓人和計(jì)算機(jī)進(jìn)行溝通,就產(chǎn)生了計(jì)算機(jī)語言。而如何把人類的語言告訴計(jì)算機(jī),就產(chǎn)了程序設(shè)計(jì)語言,也就是人們所說的程序設(shè)計(jì)文化。從最原始的計(jì)算的能力到人的自然思考方式,再到機(jī)器語言、匯編語言、高級語言的出現(xiàn),以至現(xiàn)在的讓計(jì)算機(jī)理解人們思想的自然語言,程序設(shè)計(jì)語言的每一次發(fā)展都對人類產(chǎn)生了重大的影響。其次,在工作生活與學(xué)習(xí)中,很多時候解決問題需要有一種計(jì)算思維。比如有一首詩的內(nèi)容為“白日依山盡,黃河入海流。欲窮千里目,更上一層樓”,如果用計(jì)算思維的觀點(diǎn)來看,其實(shí)就是在六千多個漢字中選取20個漢字進(jìn)行排列。六千多個漢字如果讓計(jì)算機(jī)來排的話,有很多種可能,有些排列可能人類窮極一生都無法想到。但是詩人很容易地找出了20個漢字,并且排列開來,這就是詩人的一種靈性和智慧,這是計(jì)算機(jī)所不具備的。這種情況下如何促進(jìn)人與計(jì)算機(jī)的交流呢?這就需要人具備計(jì)算思維來告訴計(jì)算機(jī)該怎么做。最后,人具備計(jì)算思維,而如何用計(jì)算機(jī)的語言把它呈現(xiàn)出來,就需要算法思想的指導(dǎo)。這種算法思想就是人的思維和計(jì)算機(jī)溝通的一種途徑與方法。
三、教學(xué)策略及方法
1.深度挖掘課程思想
傳統(tǒng)意義上對程序設(shè)計(jì)的理解是:用計(jì)算機(jī)編寫程序解決問題,經(jīng)歷分析問題、設(shè)計(jì)算法、編寫程序、調(diào)試運(yùn)行與檢驗(yàn)結(jié)果等過程。在這種觀念里,“程序”是低于“算法”的存在,是具象的,是由給定語言環(huán)境中的若干條代碼組成的代碼群。而“算法”則是高于“程序”的,是相對抽象的。“算法”超越了具體語言,是程序設(shè)計(jì)的靈魂,因而更加貼近程序設(shè)計(jì)的本質(zhì)。
但是,學(xué)生對“算法”概念感覺生澀,對“算法”的認(rèn)知依然有許多困難。因?yàn)椤八惴ā备拍畈⒉皇亲钯N近學(xué)生生活經(jīng)驗(yàn)的東西,學(xué)生從生活經(jīng)驗(yàn)中提取“算法”并將其遷移到真正的“算法”概念上來,需要經(jīng)歷一個艱難的過程。顯然,基于“算法”概念走進(jìn)程序設(shè)計(jì),不能算得上是一條令人滿意的途徑。
程序設(shè)計(jì)的本質(zhì)是什么?程序設(shè)計(jì)無非是使用一組預(yù)設(shè)功能的指令集去完成特定的任務(wù),所謂的“一組預(yù)設(shè)功能的指令集”,就是一套為了實(shí)現(xiàn)特定功能的人機(jī)對話,而給出的一套人工語言。在“人機(jī)對話”這個意義上,“指令-程序-任務(wù)執(zhí)行”更能彰顯程序設(shè)計(jì)的本質(zhì),“算法”無非是建立在“指令-程序-任務(wù)執(zhí)行”基礎(chǔ)上并服務(wù)于具體任務(wù)的方法而已。需要注意的是,這里的所謂“程序”已非前述“程序”,前“程序”指的是一組代碼,此“程序”指的是解決問題的過程[3]。
或許教師要換一種思路開展程序設(shè)計(jì)的教學(xué)。在程序設(shè)計(jì)學(xué)習(xí)之初,教師可以為學(xué)生提供一個需要解決的生活中的具體任務(wù),讓學(xué)生分析解決該問題需要幾步,設(shè)計(jì)出解決問題的過程,得到這個“程序”,而后再引導(dǎo)學(xué)生提取其中的指令,得到一組“指令集”。例如,設(shè)計(jì)一個“抽簽器”程序。教師提出問題之后,首先分析設(shè)計(jì)程序界面,有哪些對象,需要哪些控件,每個控件的功能是什么,如何實(shí)現(xiàn)這些功能,最終應(yīng)用相應(yīng)的代碼來實(shí)現(xiàn)功能,形成“指令集”,整個過程完全沒有涉及“算法”。
在此基礎(chǔ)上,教師可以讓學(xué)生結(jié)合生活中的實(shí)例反復(fù)訓(xùn)練,從而提高“指令集”的復(fù)雜程度。譬如先讓學(xué)生在VB環(huán)境中進(jìn)行問題解決,分析需要經(jīng)歷哪些步驟,其中的指令有哪些。并逐漸涉及分支、循環(huán)等結(jié)構(gòu),得到功能逐漸強(qiáng)大的指令集。用這種方法學(xué)習(xí)到的“程序設(shè)計(jì)”,是把握住通過人機(jī)對話實(shí)現(xiàn)問題解決的程序設(shè)計(jì),是將問題解決方法(工具)和問題解決過程融為一體的程序設(shè)計(jì),是面向貼近生活經(jīng)驗(yàn)的問題解決的程序設(shè)計(jì)。endprint
教師在開展“算法與程序設(shè)計(jì)”模塊教學(xué)工作中,遵循“提出問題-解決問題的過程-指令實(shí)現(xiàn)”這樣一條線索,“解決問題的過程”即“程序”,其中涵括算法。因而,“算法”變成位于“程序”之下的概念,屬于方法層面,而“程序”在層次上則反超“算法”。這種教學(xué)策略不需要譯碼,更貼近學(xué)生生活經(jīng)驗(yàn)及學(xué)生的認(rèn)知起點(diǎn),有利于啟發(fā)學(xué)生的學(xué)習(xí)。
2.整合重組信息技術(shù)課堂
信息技術(shù)學(xué)科存在課時少、內(nèi)容多、鞏固難等實(shí)際困難。而《普通高中技術(shù)課程標(biāo)準(zhǔn)(實(shí)驗(yàn))》中提出的“信息技術(shù)和數(shù)學(xué)課程內(nèi)容的整合”為指導(dǎo)課堂教學(xué)提供了全新的理念。如,人民教育出版社出版的高中《數(shù)學(xué)》第三冊(必修)第一章“算法初步”介紹了算法與程序框圖、基本算法語句以及算法案例等內(nèi)容,基本涵括了“算法與程序設(shè)計(jì)”模塊中的程序設(shè)計(jì)基礎(chǔ)知識。因此,教師合理的做法是調(diào)整模塊教學(xué)內(nèi)容的次序,將“可視化編程的概念與方法”移到模塊最前面,這樣學(xué)生在學(xué)習(xí)初期就可以利用可視化編程動手解決一些小問題,初步具備可視化編程的能力。當(dāng)數(shù)學(xué)課堂完成“算法”教學(xué)內(nèi)容之后,教師再來講述編程的基礎(chǔ)知識,自然就有事半功倍的效果。
在課時的安排方面,目前大體有兩種情況:一種為1周1課時的情況,一個學(xué)年完成一個模塊的教學(xué)工作;另一種為1周2課時,一個學(xué)期完成一個模塊的教學(xué)工作。不過,絕大多數(shù)學(xué)校的2課時都是分開來排課的,譬如星期二1節(jié)、星期五1節(jié)等。但是,程序設(shè)計(jì)課作為實(shí)踐性極強(qiáng)的一門課程,1節(jié)課的時間既要學(xué)習(xí)新知識,又要實(shí)踐鞏固它,難以取得滿意的效果。較好的做法就是兩堂課連排,共計(jì)80分鐘,教師大概用20多分鐘精講新知識,剩下時間讓學(xué)生動手編程實(shí)踐,深層理解,鞏固新知識,避免出現(xiàn)知識銜接的斷點(diǎn)。
針對各章節(jié)的基礎(chǔ)知識及算法等精講內(nèi)容,教師可以適度地開發(fā)一些微視頻,建立微課網(wǎng)站,用于學(xué)生課前預(yù)習(xí)或課后復(fù)習(xí)鞏固,把有限的課堂時間更多地讓位于師生討論、交流與探究等活動。
傳統(tǒng)教學(xué)過程是,教師每講完一個新知識,隨后布置任務(wù)讓學(xué)生編程實(shí)現(xiàn)。學(xué)生往往覺得教師布置的任務(wù)并不是自身想要做的,難以體現(xiàn)編程的價值,久而久之學(xué)習(xí)編程的興趣下降。比較恰當(dāng)?shù)淖龇ㄊ?,教師可設(shè)計(jì)開放式的實(shí)踐任務(wù),要求任務(wù)主題明確,有個性、有創(chuàng)意、內(nèi)容積極向上即可。然后,教師將整個班級分為若干個學(xué)習(xí)小組,每小組4人,從學(xué)生的生活與學(xué)習(xí)出發(fā),由小組的4個同學(xué)討論確立小組任務(wù)的主題。主題確立之后,通過小組交流、探究、合作互助等方式,共同完成實(shí)踐任務(wù)。設(shè)置開放性的任務(wù),不僅訓(xùn)練了學(xué)生編程的技巧,更在開放的學(xué)習(xí)過程當(dāng)中,將學(xué)生的思維培養(yǎng)與能力培養(yǎng)更好地融入實(shí)踐任務(wù)中[4]。
3.激發(fā)學(xué)生學(xué)習(xí)的興趣
目前,信息技術(shù)課的教學(xué)目標(biāo)定位于:培養(yǎng)學(xué)生的信息素養(yǎng),即信息時代應(yīng)具備的獲取信息、處理信息、加工信息、交流評價信息的素養(yǎng),其著力點(diǎn)在于培養(yǎng)學(xué)生的技術(shù)素養(yǎng)。
技術(shù)素養(yǎng)是信息技術(shù)有別于其他學(xué)科的明顯特征。哪些技術(shù)是深受學(xué)生歡迎和喜愛的呢?毫無疑問是實(shí)用性技術(shù),即能夠幫助學(xué)生解決現(xiàn)實(shí)生活中的實(shí)際問題的技術(shù)。例如,在講授“可視化編程的概念與方法”這節(jié)內(nèi)容時,教師可以讓學(xué)生編寫一個倒計(jì)時程序,用于班級辯論會等活動。學(xué)生會感覺到程序是有用的,體驗(yàn)到成功的快樂,獲得學(xué)有所得的滿足感,學(xué)習(xí)積極性與主動性自然就高。
生活是取之不盡的教學(xué)源泉,學(xué)生熟悉的日常生活經(jīng)驗(yàn)對其學(xué)習(xí)和能力的培養(yǎng)具有持久而深刻的影響。因此,教師在教學(xué)過程中要善于建立程序與生活實(shí)際的聯(lián)系,創(chuàng)設(shè)出貼近學(xué)生生活實(shí)際的問題情境,把生活中喜聞樂見的問題逐步提升為編程思想,從而激發(fā)學(xué)生的學(xué)習(xí)興趣,創(chuàng)造學(xué)生主動參與的學(xué)習(xí)氛圍,充分調(diào)動學(xué)生的積極性和主動性[5]。
如在講述“窮舉法”時,教師可以首先通過猜密碼來導(dǎo)入教學(xué),然后揭示QQ密碼被破解之謎,進(jìn)而提出思考問題:如何防范密碼被破解?從現(xiàn)場教學(xué)效果來看,學(xué)生熱情非常高。這樣的教學(xué)情境引入法,非常貼近學(xué)生的生活,情境和任務(wù)的設(shè)計(jì)思路也非常貼近吻合,所以很自然就將窮舉的算法思想展現(xiàn)出來。
游戲教學(xué)法也是經(jīng)常使用的教學(xué)技巧。游戲教學(xué)法就是在教學(xué)中盡可能將枯燥的語言現(xiàn)象轉(zhuǎn)變?yōu)閷W(xué)生樂于接受的、生動有趣的游戲形式,為學(xué)生創(chuàng)設(shè)良好的學(xué)習(xí)氛圍,使學(xué)生在玩中學(xué),在學(xué)中玩[6]。游戲教學(xué)法可以大大調(diào)動學(xué)生的學(xué)習(xí)興趣和求知欲望,培養(yǎng)學(xué)生的動手能力,幫助學(xué)生深刻理解理論知識,有助于學(xué)生的互助式學(xué)習(xí)。
在講述“算法與算法描述”章節(jié)內(nèi)容時,學(xué)生對“什么是算法”、“算法的特征”等問題感到晦澀難懂,教師可采取如下教學(xué)方法,如在情境導(dǎo)入環(huán)節(jié)引入一個1-100之間的猜數(shù)字游戲,看誰用最短的時間猜出結(jié)果,繼而剖析猜數(shù)字程序的算法實(shí)現(xiàn)過程,學(xué)生對算法的理解肯定更加深刻。在講述窮舉、排序、遞歸等算法時,適當(dāng)?shù)亻_發(fā)一些小游戲,展示算法實(shí)現(xiàn)的全過程,效果肯定比教師在課堂上干巴巴的講授要好。
另外,信息技術(shù)學(xué)科不是高考科目,學(xué)生的學(xué)習(xí)主動性往往不足。針對這種情況,教師需要適時地對學(xué)生進(jìn)行教學(xué)評價,及時進(jìn)行教學(xué)反饋,教師還可以通過評價激發(fā)學(xué)生的競爭意識,營造出競爭的學(xué)習(xí)氛圍。
4.半成品加工策略或程序填空
鑒于有限的教學(xué)時間、有限的教學(xué)空間和參差不齊的學(xué)生基礎(chǔ),“半成品加工”策略是很好的教學(xué)突破口。“半成品加工”提供了相對完整的作品,只是對教學(xué)的內(nèi)容某部分“留空白”,讓學(xué)生在短時間內(nèi)體會到技術(shù)操作的方法和信息素養(yǎng)的內(nèi)涵,提高了講解、理解和實(shí)踐的效率,并且優(yōu)化學(xué)習(xí)的情景與練習(xí)的環(huán)境[7]。
“半成品加工”策略主要應(yīng)用于課堂教學(xué)的演示。在教學(xué)中,它可以配合講解基本的方法與過程,突出教學(xué)的重點(diǎn)。同時,學(xué)生通過閱讀程序,了解別人的編程思路以及實(shí)現(xiàn)算法,有利于培養(yǎng)算法思維。
應(yīng)用“半成品加工”策略,可以為學(xué)生提供學(xué)習(xí)情景,回避技術(shù)盲點(diǎn)。所以提供的半成品往往是大半的成品,只差一點(diǎn)就完成了。比如,在“算法”模塊教學(xué)初期,由于學(xué)生尚不具備系統(tǒng)的編程知識,動手編寫完整的程序存在困難,教師針對教學(xué)內(nèi)容在程序某部分“留白”,學(xué)生填空解決關(guān)鍵問題,大大提高了課堂的效率。endprint
5.恰當(dāng)運(yùn)用項(xiàng)目教學(xué)法
項(xiàng)目教學(xué)法就是在教師的指導(dǎo)下,將一個相對獨(dú)立的項(xiàng)目交由學(xué)生自己處理的方法。信息的收集、方案的設(shè)計(jì)、項(xiàng)目實(shí)施及最終評價,都由學(xué)生自己負(fù)責(zé),學(xué)生通過處理該項(xiàng)目,了解并掌握了整個過程及每一個環(huán)節(jié)中的基本要求[8]。
教學(xué)實(shí)踐中,我選取了高一年級2個平行班作為實(shí)驗(yàn)班,運(yùn)用項(xiàng)目教學(xué)法,讓學(xué)生設(shè)計(jì)項(xiàng)目,應(yīng)用VB技術(shù),完成教學(xué)內(nèi)容“數(shù)據(jù)庫管理軟件的開發(fā)”。通過對比教學(xué),我發(fā)現(xiàn)實(shí)驗(yàn)班的學(xué)生對數(shù)據(jù)庫管理系統(tǒng)的開發(fā)流程理解非常深刻,對程序設(shè)計(jì)基礎(chǔ)知識和VB可視化編程的概念和方法也有更深入的認(rèn)識。其間通過筆試和上機(jī)考試考核學(xué)生的學(xué)習(xí)情況,結(jié)果顯示,實(shí)驗(yàn)班大部分學(xué)生的基礎(chǔ)知識理解、上機(jī)操作、界面設(shè)計(jì)、解決問題能力等都比非實(shí)驗(yàn)班有了明顯的提高,平均分比非實(shí)驗(yàn)班高出近10分。
項(xiàng)目教學(xué)法的關(guān)鍵,在于設(shè)計(jì)和制定一個合適的項(xiàng)目,項(xiàng)目既要適合教學(xué)目標(biāo)的實(shí)現(xiàn),又要具備可操作性。項(xiàng)目開發(fā)中要進(jìn)行有效分工,每位學(xué)生根據(jù)自己的能力負(fù)責(zé)相應(yīng)的子任務(wù),因此項(xiàng)目教學(xué)法的一個很大的優(yōu)勢就是能讓不同層次的學(xué)生都參與到項(xiàng)目的開發(fā)過程中,體現(xiàn)了分層教學(xué)的思想。
當(dāng)前,在開展“算法”模塊教學(xué)過程中存在著一些困難,但困難只是暫時的。因?yàn)椤八惴ā蹦K本身具有無窮的魅力,學(xué)生通過編寫程序解決一個個鮮活的問題,會給他們帶來無限的學(xué)習(xí)動力。教無定法,只要結(jié)合當(dāng)?shù)氐膶W(xué)情,有針對性地找到適合學(xué)生自身的教學(xué)策略與方法,“算法”模塊定能煥發(fā)其應(yīng)有的生命力。
參考文獻(xiàn):
[1]顧建軍,李藝,董玉琦,等.普通高中技術(shù)課程(實(shí)驗(yàn))解讀[M].武漢:湖北教育出版社,2004.
[2]曹雪麗.高中“算法與程序設(shè)計(jì)”教學(xué)四部曲[J].中小學(xué)信息技術(shù)教育,2012(7).
[3]李藝,朱彩蘭.信息技術(shù)課程思想梳理思路簡議[J].電化教育研究,2014(4).
[4]周以真,王榮良,李冬梅,等.信息技術(shù)課程的反思與計(jì)算思維教育的必要性[J].中國信息技術(shù)教育,2013(6).
[5]喻文喜.“程序生活化”的誤區(qū)及其反思[J].中小學(xué)電教,2009(12).
[6]祝智庭,鄧鵬,孫蒞文.娛教技術(shù):教育技術(shù)的新領(lǐng)地[J].中國電化教育,2005(5).
[7]王愛勝.“半成品加工”策略“加工”啥?[N].中國教育報,2005-6-13(6).
[8]項(xiàng)目教學(xué)法[EB/OL].http://baike.baidu.com/view/2062970.htm?fr=aladdin.
(作者單位:廣東省中山市中山紀(jì)念中學(xué))
(責(zé)任編輯:任媛媛)endprint