林曉明,李宏貞,梁麗霞
(1.廣東省廣州市南海中學(xué),廣東廣州 510170;2.廣東省廣州市荔灣區(qū)沙面小學(xué),廣東廣州 510170)
2017版《普通高中信息技術(shù)課程標(biāo)準(zhǔn)》強調(diào)教育要面向?qū)W科核心素養(yǎng),而計算思維是信息技術(shù)四大學(xué)科核心素養(yǎng)之一,是信息技術(shù)學(xué)科教學(xué)首要培養(yǎng)目標(biāo)[1],因此在Python教學(xué)中培養(yǎng)學(xué)生的計算思維是一項重要的任務(wù)。同時新課程標(biāo)準(zhǔn)強調(diào)要通過項目教學(xué)法開展教學(xué),突出學(xué)生的實踐活動,避免信息知識的機械接受,明確指出要緊緊圍繞學(xué)科核心素養(yǎng),把項目整合于課堂教學(xué)中,重構(gòu)教學(xué)組織方式。根據(jù)《廣東省教育廳關(guān)于普通高中體育與健康等科目學(xué)業(yè)水平考試工作的指導(dǎo)意見》,廣東省2020屆及以后的學(xué)生要進行信息技術(shù)學(xué)業(yè)水平合格性考試。如何在應(yīng)考的同時,做好Python項目式教學(xué),培養(yǎng)計算思維,是一線信息技術(shù)教師迫切需要解決的難題。
因此,筆者聯(lián)合科組的教師和廣州市西關(guān)外國語學(xué)校的教師在2019年申報了廣東省教育技術(shù)中心課題《基于計算思維培養(yǎng)的Python項目式教學(xué)策略研究》,對Python教學(xué)、計算思維培養(yǎng)和項目式教學(xué)進行實踐探究。經(jīng)過兩年的實踐研究,形成了基于計算思維培養(yǎng)的Python項目式教學(xué)模式。
廣州市所使用的高中信息技術(shù)必修課中Python教學(xué)內(nèi)容主要集中在必修1《數(shù)據(jù)與計算》,必修2《信息系統(tǒng)與社會》,在第3單元有利用Python設(shè)計開發(fā)信息系統(tǒng)的內(nèi)容,經(jīng)過整合梳理,形成了以下幾個項目(如圖1),在教學(xué)中以這四個項目主題開展Python項目教學(xué),基本不進行拓展。主要原因有兩個,一是課時比較緊張,二是學(xué)生基礎(chǔ)一般。
圖1 書本Python項目梳理
課題組成員在教學(xué)過程中,逐漸形成了Python教學(xué)、計算思維培養(yǎng)和項目式學(xué)習(xí)三位一體的教學(xué)模式(如圖2),并在廣州市南海中學(xué)和廣州市西關(guān)外國語學(xué)校進行了教學(xué)試驗,效果良好,適合廣州市高中新課程。該教學(xué)模式的特色在于理清了Python項目式學(xué)習(xí)的開展流程結(jié)構(gòu),詳細(xì)描述了開展的操作步驟,可操作性強,便于借鑒使用,創(chuàng)新之處在于提出了范例學(xué)習(xí)的兩種可操作性變式,靈活可用。
圖2 基于計算思維培養(yǎng)的項目式教學(xué)模式
1.范例學(xué)習(xí)
首先設(shè)計好項目范例。范例可采用并列反復(fù)式,范例一與范例二是平等的關(guān)系,來進行知識點的強調(diào)與重復(fù),或強化知識點的學(xué)習(xí)或重點知識點的學(xué)習(xí)。如“算法探究”項目,范例一可選擇雞兔同籠問題,用解析法和窮舉法兩種方法去解決問題,范例二可選擇斐波那契數(shù)列,用遞歸法與迭代法兩種方法去解決問題。講完這兩個范例,相當(dāng)于為學(xué)生打下了基礎(chǔ),剩下的程序留給學(xué)生自主探究學(xué)習(xí),進行拓展。范例的學(xué)習(xí)也可以采用遞進深入式,范例二是范例一的深入和擴展,強調(diào)知識點的不斷深入與拓展。如“生活問題解決”項目,范例一是存款收益,涉及循環(huán)結(jié)構(gòu),范例二是火柴棒擺數(shù)字,不僅涉及循環(huán),還涉及函數(shù)的使用,從難度和知識點上范例二是范例一的遞進深入。在當(dāng)前課時緊張的情況下,范例學(xué)習(xí)不適宜多,兩個是最為適宜的。
2.項目學(xué)習(xí)
學(xué)生參照之前學(xué)習(xí)的范例進行本項目其他Python作品的制作,也就是編寫項目內(nèi)其他程序作品,如在“算法探究”項目中,學(xué)生要完成本項目教師所講的范例程序之外的其他所有程序,必須要經(jīng)過小組探究,分工完成。這時學(xué)生開展項目學(xué)習(xí)會存在很多問題,首先是存在大大小小的技術(shù)難點。教師幫助學(xué)生解決技術(shù)難點的方法主要有兩個,一是把程序做成半成品,只挖空讓學(xué)生補充完整;二是充分利用微課及Moodle教學(xué)平臺給學(xué)生搭建腳手架,把技術(shù)難點做成短小精悍的微課,有條理地放在Moodle教學(xué)平臺上。當(dāng)然學(xué)生也可以回顧范例,舉一反三,也可以上網(wǎng)搜索,詢問教師和小組探究。Python作品程序的編寫,是項目制作階段的重點和難點,需要全組所有成員的共同參與,強調(diào)所有成員必須掌握。到后面的研究報告撰寫、項目活動記錄、演講PPT的制作,則可以分工合作,讓一個學(xué)生上網(wǎng)搜索整理本項目有關(guān)的理論知識,另一個學(xué)生可以在教師給出的模板和參考范例的基礎(chǔ)上進行可視化報告的撰寫,第三個學(xué)生可以進行項目活動記錄表的填寫,第四個學(xué)生進行演講PPT的制作。經(jīng)實驗研究發(fā)現(xiàn),四個人一組的小組搭配是最佳的,這樣的小組人人有事干,不多也不少。
3.分享評價
學(xué)生按要求提交作品、可視化報告、項目活動記錄表、演講PPT,教師進行全班共享,學(xué)生可以自行瀏覽。同時,可以進行隨機抽號抽取小組上臺演講,臺下的學(xué)生可按照教師給出的評價標(biāo)準(zhǔn)邊給其他小組評價邊聽臺上學(xué)生的演講。最后結(jié)束前,教師對整個項目進行點評提升。分享評價階段是項目學(xué)習(xí)的點睛之筆,是培養(yǎng)學(xué)生計算思維最直接的關(guān)鍵環(huán)節(jié)。在這個環(huán)節(jié),教師要強調(diào)學(xué)生的項目總結(jié)須圍繞本項目主題,如學(xué)生總結(jié)反思“綜合問題解決”項目時,要思考用計算機來解決一個綜合問題是怎樣一個過程、如何進行分析、哪些是關(guān)鍵問題,也就是讓學(xué)生總結(jié)軟件開發(fā)的基本流程。從而幫助學(xué)生理解計算思維的本質(zhì)特征,即抽象、設(shè)計、自動化,培養(yǎng)學(xué)生的計算思維。
對應(yīng)上面的教學(xué)模式流程路線,教師要進行相應(yīng)的實施操作(如圖3)。
圖3 教學(xué)模式實施步驟圖
1.項目備課
把書本的相關(guān)知識點整理成一個項目,在依綱靠本的同時,可以對教材進行適當(dāng)改造。如繪制函數(shù)圖像這個案例可以結(jié)合生活實際、解決生活問題進行設(shè)計,設(shè)計成基于最優(yōu)用電繳費方案的電費計算器,或者解決哪種手機套餐更合理問題的手機費用計算器。備項目時,也要注意如何把計算思維滲透進項目中,強調(diào)不是為學(xué)編程而學(xué)習(xí),而是為鍛煉計算思維而學(xué)習(xí),強調(diào)舉一反三,強調(diào)解決問題的本質(zhì)。同時也要備學(xué)生,掌握學(xué)生的知識水平,根據(jù)學(xué)生的學(xué)情來調(diào)整項目的難度。若學(xué)生水平一般,可把項目程序以挖空的形式讓學(xué)生補充完整,可在項目中提示得更詳細(xì)一點;若學(xué)生水平比較高,程序可挖空多一點,提示可相對少一些,甚至可以讓學(xué)生自行編寫。項目主題確定好后,最重要的一步是備資源,要花大力氣備資源,為學(xué)生的項目學(xué)習(xí)提供腳手架。首先要把項目范例備出來,把項目活動記錄表設(shè)計出來,把可視化報告范例設(shè)計出來,把評價標(biāo)準(zhǔn)備好。接著要充分考慮學(xué)生在項目制作過程中會遇到哪些技術(shù)難點、會卡在哪里、需要怎樣的知識儲備才能順利完成本項目,為此,教師可以提前制作相關(guān)的技術(shù)微課、相關(guān)的范例、清晰標(biāo)注學(xué)生的操作步驟、給予學(xué)生更多提示。
2.范例講解
這里要注意教學(xué)設(shè)計,程序設(shè)計是一門枯燥的學(xué)問,因此要注意興趣導(dǎo)入,或聯(lián)系生活學(xué)習(xí)實際引入,或游戲引入,或激趣引入,總之要吸引住學(xué)生的眼球。如講斐波那契數(shù)列時,可以先講斐波那契數(shù)列如何神奇,與生活息息相關(guān),從而吸引學(xué)生的興趣。范例講解不能滿堂灌,教師講解時間要控制在10分鐘以內(nèi),要把課堂的大部分時間留給學(xué)生自學(xué)探究。教師可以提前準(zhǔn)備好資源,搭建好腳手架,如原理講解可用網(wǎng)絡(luò)視頻,程序分析可制作微課,并根據(jù)學(xué)情設(shè)計好留白的不完整程序,讓學(xué)生通過自學(xué)探究可以完成。教師堂上節(jié)省出來的時間可以對學(xué)困生進行一對一的個性化輔導(dǎo),不讓一個孩子掉隊。
3.項目監(jiān)控
教師首先要進行項目目標(biāo)的引領(lǐng),強調(diào)本項目的主要目的有兩個:一是探究哪方面的問題,如“算法探究”項目重點探究什么是算法?有哪些常用的算法?這些算法的特征和區(qū)別在哪里?碰到一個新的問題應(yīng)該使用什么算法?另一個是學(xué)習(xí)Python編程知識,這個項目涉及到了哪些Python語法?用到了哪些Python重點語句和結(jié)構(gòu)?接著教師要進行小組分工引導(dǎo),強調(diào)分工合作。接下來教師重點輔導(dǎo)各小組完成項目程序作品的制作,指導(dǎo)學(xué)生利用教師提供的資源,包括微課和技術(shù)提示,完成作品制作,同時及時發(fā)現(xiàn)學(xué)生的難點和卡點,及時進行集中講解或者個別輔導(dǎo)。最后是進度監(jiān)控,監(jiān)督每個小組項目活動記錄表、可視化報告、演講PPT的制作??梢越柚鶰oodle教學(xué)平臺等技術(shù)手段進行監(jiān)控,比如,要求這節(jié)課這個時間點要上交作品程序到平臺,另一個時間點要提交小組活動記錄表,教師登錄平臺即可查看。
4.評價總結(jié)
這一步主要的目標(biāo)是通過分享對項目主題進行深化、提升、鞏固。教師要求各小組利用Moodle教學(xué)平臺進行共享作品程序及項目活動記錄表、可視化報告、演講PPT,讓學(xué)生依據(jù)教師設(shè)計的評價標(biāo)準(zhǔn)進行評分,同時組織好各小組的演講,最后教師綜合各小組探究成果,對知識點進行總結(jié)提升。
該教學(xué)模式要順利實施,關(guān)鍵在于兩個方面。一是支撐資源的豐富度和適切性。教師要給學(xué)生足夠的支撐,讓學(xué)生能解決項目制作過程的難點和卡點,教師提供的微課、技術(shù)提示、操作指導(dǎo)要到位、有針對性、短小精悍,并讓學(xué)生容易獲取。二是項目制作過程引導(dǎo)監(jiān)控要到位。教師要一步步監(jiān)督引導(dǎo)學(xué)生的制作,要求學(xué)生按時按點提交過程性資料,教師要及時巡查了解各個小組的進度,并給予及時的督促與幫助。
算法是信息技術(shù)學(xué)科最重要的學(xué)科大概念之一,所以“算法探究”項目是非常重要的一個Python項目。必修課本涉及以下四個算法:解析法、窮舉法、迭代法和遞歸法。由于學(xué)生對于算法基本是零基礎(chǔ),所以教師要在范例講解時,把這四個算法講得清楚透徹,學(xué)生在后面的項目制作、小組探究時才能舉一反三,才能深入探究。但是范例講解時間不宜過長,否則學(xué)生沒有時間進行后續(xù)的項目制作、分享評價的活動。
因此,筆者用一節(jié)課的時間來講解“雞兔同籠”范例,并用解析法和窮舉法兩種方法來求解。講解解析法時,先引導(dǎo)學(xué)生用抬腳法和解方程的人工方式來進行求解,然后指出解析法其實就是使用數(shù)學(xué)的解析式來求解問題。接著講解窮舉法,借助電子表格列舉出雞兔的所有頭數(shù)和腳數(shù)的方法來類比窮舉法,指出窮舉法就是把所有的情況列舉出來,符合條件的就是答案。講解完后,分別給出解析法和窮舉法的不完整代碼程序,讓學(xué)生補充完成,并調(diào)試運行得到結(jié)果。最后教師再進行評講,公布正確答案,并總結(jié)解析法和窮舉法算法的含義、特征、適合范圍。
在項目的第二課時,筆者講解了兔子問題“斐波那契數(shù)列”范例,分別用迭代法和遞歸法來求解。由于迭代法和遞歸法非常難懂,在有限的課堂時間,教師不一定能講解到位,學(xué)生聽一遍也難以聽懂。因此,筆者把知識點做成了三個微課(用迭代法求斐波那契數(shù)列、用遞歸法求斐波那契數(shù)列、迭代法與遞歸法的比較),時長都在5分鐘之內(nèi)。上課時把微課放在Moodle平臺上,并分別給出迭代法和遞歸法的不完整代碼程序,讓學(xué)生補充完成,并以作業(yè)的形式提交。最后由教師對容易出錯的地方進行問題點評,并對這兩種算法進行總結(jié)、歸納和比較,加強學(xué)生對這兩種算法的理解。
在項目的第三、第四課時(如果進度慢,可以增加一個課時),進入項目選題和制作環(huán)節(jié)。學(xué)生四人為一小組,要求至少選擇課本的兩個案例進行探究制作,把程序作品編制出來,并繪制好流程圖、作好項目活動記錄、寫好研究報告,分析算法特征并做成演講報告。最后把成果資料提交到南海中學(xué)Moodle平臺,全班共享,教師每種算法抽取兩個小組上臺進行演講,每組3分鐘左右。通過分享算法探究過程,加深學(xué)生對算法的理解,最后教師再進行總結(jié)提升,至此,算法項目目標(biāo)可以基本達(dá)成。
項目學(xué)習(xí)一定程度上解決了編程教學(xué)枯燥無味的困境,提高了課堂教學(xué)效果。傳統(tǒng)的講練結(jié)合、按部就班的程序教學(xué),學(xué)生學(xué)習(xí)興趣不高,有畏難情緒,最后到了學(xué)不會、不想學(xué)的境地。教師依照本模式精心備課后進行項目實施,學(xué)生普遍比較感興趣,小組合作學(xué)習(xí)熱烈,有助于激發(fā)學(xué)生的學(xué)習(xí)興趣。
課題組教師在項目學(xué)習(xí)前后對學(xué)生進行了計算思維量表的調(diào)查,調(diào)查問卷采用的是華東師范大學(xué)顧小清教授及其研究生白雪梅翻譯改進的測量K12階段學(xué)生計算思維量表的22-CT測試。該量表采用李克特5級量表,包括5個部分:創(chuàng)造力、算法思維能力、合作能力、批判性思維、問題解決能力共22項指標(biāo)[2]。本調(diào)查分發(fā)了1218份問卷,由于大部分學(xué)生后測沒有時間做,所以有效問卷為288份。筆者對前后測數(shù)據(jù)進行配對樣本T檢驗[3],從下表結(jié)果中可以看出,這5個維度在均值上均有提升,sig(雙側(cè))值為.000,存在顯著差異。在課程結(jié)束前,隨機抽取了6個學(xué)生進行訪談,重點考查學(xué)生利用Python編程解決問題的能力,大部分學(xué)生表示Python編程不再神秘,已經(jīng)知道Python是如何解決生活學(xué)習(xí)中的問題。通過訪談,可以看到學(xué)生計算思維能力是有提升的。
計算思維配對樣本T檢驗
在學(xué)期末,對Python的編程知識及算法知識進行了集中測試,測試的形式為選擇題、判斷題和程序補充填空題,總分為100分。全級平均分為75.5,合格率達(dá)81%,驗證了學(xué)生在課程學(xué)習(xí)后計算思維得到了發(fā)展。同時,對學(xué)生以小組的形式自行編寫并提交的Python編程作品進行分析,優(yōu)秀作品約占20%,合格作品占90%,可以看出學(xué)生基本可以做到舉一反三、靈活運用已學(xué)的知識去解決生活和學(xué)習(xí)中遇到的問題。
本研究嘗試提出了基于計算思維培養(yǎng)的項目式教學(xué)模式,通過實踐檢驗,該教學(xué)模式有助于提高學(xué)生學(xué)習(xí)興趣,提升學(xué)生計算思維能力和學(xué)生信息技術(shù)成績。但是,本研究存在諸多不足,第一,由于疫情影響,進行了近一個學(xué)期的線上學(xué)習(xí),影響了項目的開展。第二,問卷的發(fā)放不到位,也影響了調(diào)查結(jié)果的廣度。信息技術(shù)時代,如何通過Python教學(xué)培養(yǎng)學(xué)生的計算思維仍然是重點關(guān)注的問題?;谟嬎闼季S培養(yǎng)的項目式教學(xué)模式是否可以進一步應(yīng)用推廣到同類水平學(xué)校,效果如何,還需要進一步研究。