姚艷秋+劉曉峰+王曉光
2016年9月,美國發(fā)布了K-12計算機(jī)科學(xué)框架,闡述了學(xué)生從幼兒園到12年級計算機(jī)課程學(xué)習(xí)主要包括五個核心模塊——計算系統(tǒng)、網(wǎng)絡(luò)和互聯(lián)網(wǎng)、數(shù)據(jù)和分析、算法和編程、計算的影響,并要求在課程中開展培養(yǎng)學(xué)生計算思維(Computational Thinking)的實(shí)踐活動。我國新一輪高中信息技術(shù)課程標(biāo)準(zhǔn)也把計算思維作為學(xué)科核心素養(yǎng)的一部分,強(qiáng)調(diào)在信息技術(shù)教學(xué)中注重對學(xué)生計算思維的培養(yǎng)。利用計算機(jī)解決問題的一般步驟是遇到問題、分析問題、進(jìn)行算法設(shè)計、編寫程序解決問題,由此可見“算法與程序設(shè)計”課程是培養(yǎng)學(xué)生計算思維的有效平臺。
在“算法與程序設(shè)計”教學(xué)中如何培養(yǎng)學(xué)生的計算思維
1.設(shè)置問題,引導(dǎo)學(xué)生發(fā)現(xiàn)和解決問題
作為教師,不僅要傳授給學(xué)生知識,更重要的是應(yīng)該為學(xué)生提供足夠的發(fā)展空間,指導(dǎo)學(xué)生發(fā)現(xiàn)問題,激發(fā)他們解決問題的興趣,進(jìn)而引導(dǎo)他們運(yùn)用學(xué)會的知識去解決問題。
例如,筆者在講《程序的順序結(jié)構(gòu)》一課時,給學(xué)生設(shè)置了如下問題。
兩個沒有刻度的杯子A、B,容積分別為7升和5升,是否能量出1升?如果能,怎樣量出1升?
學(xué)生親手操作,找出解決方案,再通過分析給出算法。大多數(shù)學(xué)生可能通過嘗試的方法來解決,但不是最少的步驟,那么怎樣用最少的步驟量出1升?運(yùn)用計算思維和逆向思維的思維方式,能幫助學(xué)生找到答案。
如果7升的杯子最后成功地量出了1升,逆序的過程應(yīng)該如下:
分析一:兩個杯子,容積為7升和5升,如何量出1升?(如果A為6,B為空,A杯倒?jié)MB杯,A杯剩余即為1)
分析二:兩個杯子,容積為7升和5升,如何量出6升?(如果B為4,A滿杯倒?jié)MB杯,A杯剩余即為6)
分析三:兩個杯子,容積為7升和5升,如何量出4升?(如果B為2,A滿杯倒?jié)MB杯,A杯剩余即為4)
分析四:兩個杯子,容積為7升和5升,如何量出2升?(B為空,A滿杯倒?jié)MB杯,A杯剩余即為2)
基于以上分析,逆序過來就給出了正確的解決算法:
A=7,B=5
第一步:A滿杯倒B杯A剩2,將A杯剩的2賦給B,B是2;
第二步:A滿杯給B杯倒?jié)M,A杯剩4,將A杯剩的4賦給B,B是4;
第三步:A滿杯給B杯倒?jié)M,因?yàn)槟壳癇是4,所以A杯剩6;
第四步:B清空,將A杯(目前是6)倒?jié)MB杯,A杯剩下的就是1。
是否還有其他方法?7升的杯子能最后量出1升,那5升的杯子是否也能最后量出1升?7升的杯子最少需要倒出幾次,5升的杯子最少需要倒入幾次才能量出1升?引導(dǎo)學(xué)生嘗試、探究,提出新問題,在這樣的任務(wù)中是否蘊(yùn)含著某些數(shù)學(xué)原理?這個任務(wù)恰好吻合了求解二元一次方程7x+5y=1是否有最小整數(shù)解。古希臘著名的數(shù)學(xué)家、教育家歐幾里德在2000多年前就給出了答案,這就是著名的擴(kuò)展歐幾里德算法。在探究中,教師引導(dǎo)學(xué)生感受數(shù)學(xué)的神奇,體會古代數(shù)學(xué)家發(fā)現(xiàn)數(shù)學(xué)定理的過程。
2.將教學(xué)內(nèi)容與生活密切聯(lián)系
教師在教學(xué)中可通過創(chuàng)設(shè)與生活密切聯(lián)系的問題情境,幫助學(xué)生在解決問題的過程中感受信息技術(shù)對人們?nèi)粘I畹挠绊?,學(xué)習(xí)數(shù)據(jù)與計算的知識,提高利用信息技術(shù)解決問題的能力,發(fā)展計算思維。
例如,在講貪心算法時,筆者引入了人民幣與某種外幣兌換獲利的例子。
在一周七天中,每天都可以用外幣兌換人民幣,也可以用人民幣兌換外幣,從100元人民幣開始,給出七天的匯率,最后獲得最大的利益。這七天的匯率為:500、600、800、700、800、600、500(100元人民幣兌換外幣的值)。
分析一:人民幣某一階段買入外幣的時機(jī),總是在這一階段人民幣升值到最大時買入。
分析二:外幣某一階段買入人民幣的時機(jī),總是在這一階段人民幣貶值到最大時買入。
貪心算法總是做出在當(dāng)前看來是最好的選擇,也就是說,它所做的是某種意義上的局部最優(yōu)選擇,由此給出算法。第一階段:前3天中,人民幣一直升值,第3天升值到這一階段的最高,此時100元人民幣買入800元外幣;第二階段:第3、4天,人民幣貶值,第4天貶值到這一階段的最低,此時800元外幣買入114.28元人民幣;第三階段:第4、5天,人民幣升值,第5天升值到這一階段的最高,114.28元人民幣買入914.24元外幣;第四階段:第5、6、7天,人民幣貶值,第7天貶值到這一階段的最低,914.24元外幣買入人民幣182.85元,從而得到最大獲利82.85元。
這一任務(wù)中,筆者把經(jīng)濟(jì)學(xué)的問題引入實(shí)例中,引導(dǎo)學(xué)生關(guān)注算法與程序設(shè)計在生活中的應(yīng)用,用計算思維的方法解決經(jīng)濟(jì)學(xué)中的問題,實(shí)現(xiàn)學(xué)科的融合。
3.以興趣為起點(diǎn),以趣味活動為主線的教學(xué)方法和策略
興趣對學(xué)習(xí)有著神奇的內(nèi)驅(qū)作用,能變無效為有效,化低效為高效。在此,興趣包含兩個方面:一是教師所設(shè)計的教學(xué)活動要讓學(xué)生感興趣,二是發(fā)揮學(xué)生對信息技術(shù)的興趣。所以,設(shè)計活動必須結(jié)合學(xué)生的身心特點(diǎn)和認(rèn)知水平,把學(xué)生感到枯燥的學(xué)習(xí)變成感興趣的活動,把興趣貫穿于整個課堂教學(xué)活動,讓學(xué)生處于積極的興趣狀態(tài)之中。例如,筆者在講解遞歸算法時,讓學(xué)生用最少步驟完成漢諾塔游戲:有三根柱子A、B、C,A柱上有N個盤子,每次移動一個盤子,小的盤子只能放在大盤子的上面,要把所有盤子從A柱全部移到C柱上(如下圖)。
學(xué)生通過完成漢諾塔的Flash游戲,體會、演繹、分析遞歸算法。在這個游戲中最關(guān)鍵的是最大的盤子的位置,在挪動最大的盤子前,A柱上只有最大的盤子,B柱上放著前N-1個盤子,C柱為空,由此給出遞歸算法。第一步:把A柱上的前N-1個盤子,經(jīng)過C柱,移動到B柱;第二步:把A柱上的最大的盤子,移動到C柱;第三步:把B柱上的前N-1個盤子,經(jīng)過A柱,移動到C柱。學(xué)生在游戲中體悟算法的原理,感受算法與程序設(shè)計的樂趣。
開展“算法與程序設(shè)計”課程的實(shí)踐
1.組建“算法與程序設(shè)計”課程教師團(tuán)隊、學(xué)生團(tuán)隊
算法與程序設(shè)計課程的教學(xué)內(nèi)容較多且專業(yè)性強(qiáng),包括程序語言、算法、數(shù)據(jù)結(jié)構(gòu)、圖論、數(shù)論、博弈論、組合數(shù)學(xué)、離散數(shù)學(xué)、概率與統(tǒng)計等方面的知識,要求中學(xué)教師同時掌握這些知識且能靈活運(yùn)用不是一件容易的事?!靶g(shù)業(yè)有專攻”,每位教師都有自己擅長的研究方向。同時,組成教師團(tuán)隊、加強(qiáng)教師間的交流學(xué)習(xí)、定期舉行算法與程序設(shè)計專題備課,可以讓更多的教師接觸“算法與程序設(shè)計”課程。另外,還可以開展多人協(xié)作,每位教師負(fù)責(zé)課程中自己擅長的知識進(jìn)行教學(xué)。
由于學(xué)生個體的差異,同一個教學(xué)內(nèi)容、教學(xué)進(jìn)度,有的學(xué)生“消化不了”,有的學(xué)生卻“吃不飽”,教師可以嘗試對學(xué)生進(jìn)行分層教學(xué),使不同層次的學(xué)生都有所收獲,同組的學(xué)生之間可以進(jìn)行協(xié)作交流學(xué)習(xí),共同進(jìn)步?!八惴ㄅc程序設(shè)計”課程的學(xué)習(xí)適合“抱團(tuán)取暖”,編程過程中遇到的問題具有普遍性,一個學(xué)生在學(xué)習(xí)過程中遇到的問題,可能也被其他學(xué)生遇到了,這時解決過此類問題的同學(xué)就成為課程資源,他解決問題的方式、方法都可以被其他同學(xué)借鑒。同一小組的學(xué)生組成團(tuán)隊,討論學(xué)習(xí),用集體的智慧解決遇到的問題。
2.“算法與程序設(shè)計”課程組織實(shí)施
以吉林省為例,省里組織了多次“算法與程序設(shè)計”課程的培訓(xùn)與集體備課,絕大多數(shù)高中都開設(shè)了程序設(shè)計課程,其開課的形式大體有以下幾種。
(1)常規(guī)課。在高一第一學(xué)期的信息技術(shù)常規(guī)課堂中,面向所有學(xué)生用一個半月的時間向?qū)W生普及算法與程序設(shè)計的知識,講授經(jīng)典算法,選拔出對算法與編程有興趣、有潛質(zhì)的學(xué)生。
(2)校本課。在高一、高二開設(shè)“算法與程序設(shè)計”校本課程,面向的是對計算機(jī)編程有興趣并且學(xué)有余力的學(xué)生。本課程旨在培養(yǎng)中學(xué)生使用計算機(jī)編程解決實(shí)際問題的能力,提升他們的創(chuàng)造性思維和計算思維,每周2課時,以算法知識的專題學(xué)習(xí)為主。
(3)大學(xué)先修課。北京大學(xué)開設(shè)了“計算概論”大學(xué)先修課程,目的是考查學(xué)生的算法與程序設(shè)計能力。學(xué)生可以訪問北京大學(xué)在線平臺進(jìn)行學(xué)習(xí),每學(xué)期由北京大學(xué)組織結(jié)業(yè)考試??荚嚭细窈螅瑢W(xué)生進(jìn)入大學(xué)可以申請免修程序設(shè)計的課程。選擇大學(xué)先修課的學(xué)生每周有2課時的學(xué)習(xí)時間。
教學(xué)中以學(xué)生為主體,首先是選“才”,通過這樣的課程,在程序設(shè)計方面有特長的學(xué)生就能顯現(xiàn)出來。
3.搭建在線學(xué)習(xí)平臺
在“算法與程序設(shè)計”教學(xué)過程中,教師對學(xué)生所寫的程序進(jìn)行評測是一項比較繁瑣并且費(fèi)時費(fèi)力的工作。在實(shí)際教學(xué)中,教師的精力是有限的,無法對所有學(xué)生的程序進(jìn)行評測。因此,需要建立一個基于網(wǎng)絡(luò)環(huán)境下的在線學(xué)習(xí)評測系統(tǒng),為學(xué)生提供一個實(shí)時的學(xué)習(xí)評測環(huán)境。吉林省開展程序設(shè)計教學(xué)較好的幾所學(xué)校都搭建了程序設(shè)計在線學(xué)習(xí)平臺,并向其他學(xué)校開放,平臺中題庫的題目按照“算法與程序設(shè)計”課程中的知識點(diǎn)進(jìn)行分類,而且題目的難度是遞進(jìn)的,為學(xué)生做題順序提供了參考。在線學(xué)習(xí)平臺突破了教師、學(xué)校、家庭、地域的限制,也突破了學(xué)習(xí)時間的限制,使學(xué)有余力的學(xué)生在課后仍能依托在線學(xué)習(xí)平臺進(jìn)行學(xué)習(xí),并驗(yàn)證學(xué)習(xí)效果。
4.創(chuàng)建新型學(xué)習(xí)策略
算法與程序設(shè)計課程與傳統(tǒng)課程不同,它是以實(shí)驗(yàn)、探究、操作為主的一門課程,因此僅僅通過教師講授,學(xué)生很難達(dá)到融會貫通,而教師精力有限,需要面對的學(xué)生又較多,因此需要學(xué)生主動學(xué)習(xí)。在學(xué)習(xí)過程中,教師可以打破年級界限,讓高水平的學(xué)生指導(dǎo)入門的學(xué)生,建立學(xué)習(xí)小組,讓學(xué)生共同討論、研究,依托網(wǎng)絡(luò)學(xué)習(xí)平臺,建立QQ群,開通博客等,從而使學(xué)生思維得到鍛煉,能力得到提升。
5.課程評價反饋
(1)追求育人目標(biāo),培養(yǎng)學(xué)生的計算思維。開展“算法與程序設(shè)計”課程不只是為了培養(yǎng)具有編程專長的人才,課程教學(xué)中也增加了育人的目標(biāo):一是鼓勵學(xué)生積極進(jìn)取,勇于拼博,不拋棄,不放棄;二是要培養(yǎng)學(xué)生一絲不茍、精益求精的品質(zhì),并在學(xué)習(xí)過程中形成計算思維去思考解決學(xué)習(xí)、生活中遇到的問題。
(2)基于在線評測網(wǎng)站的評價。評價是“算法與程序設(shè)計”課程教學(xué)中的重要環(huán)節(jié),如何建立一種科學(xué)、合理、有效,能夠激起學(xué)生學(xué)習(xí)興趣與投入的評價體制是值得教師深思的問題。在線學(xué)習(xí)網(wǎng)站是學(xué)生自主學(xué)習(xí)和協(xié)作學(xué)習(xí)的平臺,它可以讓學(xué)生自我評價,通過在線測試題庫,對學(xué)生的學(xué)習(xí)過程和學(xué)習(xí)結(jié)果進(jìn)行評價,并及時給予反饋,做到評價和反饋的實(shí)時、動態(tài)、正確。教師還要做好階段性評價,在在線評測網(wǎng)站上教師不僅可以創(chuàng)建不同的比賽,讓學(xué)生在規(guī)定的時間內(nèi)進(jìn)行答題,還可以在線公布學(xué)生的排名、做題情況、得分情況等,以便讓他們認(rèn)識到自己學(xué)習(xí)中的問題,進(jìn)行學(xué)習(xí)調(diào)整。
(3)參加各類比賽、考試,促進(jìn)課程的學(xué)習(xí)。算法與程序設(shè)計的比賽很多,有全國青少年信息學(xué)奧林匹克競賽分區(qū)聯(lián)賽、全國賽、亞太地區(qū)青少年信息學(xué)奧林匹克競賽等,還有大學(xué)先修課程驗(yàn)收考試,這些都為學(xué)習(xí)算法與程序設(shè)計的學(xué)生提供了評價反饋的平臺,教師和學(xué)生可以根據(jù)比賽成績及時調(diào)整學(xué)習(xí)策略和學(xué)習(xí)進(jìn)度。
在信息化、大數(shù)據(jù)時代,在今后的社會中,不會搜集信息、處理信息,不懂得利用計算機(jī)解決問題,不知道如何與信息社會接觸的人都將會被淘汰。將程序設(shè)計課程教學(xué)與計算思維的培養(yǎng)相結(jié)合,培養(yǎng)學(xué)生知道什么問題能用計算機(jī)解決,什么不能用計算機(jī)解決,以此來尋求處理問題的方式方法,能為學(xué)生未來的發(fā)展創(chuàng)造更多可能。