高曉明
編程教育越來(lái)越火,Python教學(xué)也因此風(fēng)起云涌。小學(xué)圖形化編程方興未艾,代碼教學(xué)已經(jīng)躍躍欲試,很多地方則把初中教學(xué)直接引進(jìn)了Python編程的新天地。本期解碼,讓我們一起探討初中Python教學(xué)的課程與教材、組織與實(shí)踐中的問(wèn)題與解決辦法。
隨著Python教學(xué)的興起,山東初中信息技術(shù)教材(泰山版)2018年隨即將Python納入教學(xué)內(nèi)容,其中,第1冊(cè)用一個(gè)單元學(xué)習(xí)基礎(chǔ)知識(shí),第2冊(cè)用一個(gè)單元學(xué)習(xí)常用算法。面對(duì)新教材,很多初一年級(jí)的信息技術(shù)教師剛開(kāi)始教學(xué)時(shí)會(huì)有很多疑問(wèn),例如,為什么初一就開(kāi)始學(xué)編程?編程內(nèi)容這么深,初一年級(jí)學(xué)生能學(xué)會(huì)嗎?下面筆者結(jié)合本教材談一談初中Python教學(xué)的組織規(guī)劃和教學(xué)的收獲。
初中低年級(jí)增加了編程內(nèi)容,而且教材是普及給所有學(xué)生的,教學(xué)就得解決適應(yīng)學(xué)生的年齡特征和面向全體受眾的問(wèn)題。初一年級(jí)學(xué)生接受能力弱,教學(xué)進(jìn)度就不能太快,要讓學(xué)生把每一節(jié)的知識(shí)嚼碎,一點(diǎn)點(diǎn)地吃,不能囫圇吞棗。
● 第1冊(cè)Python的教材處理
第1冊(cè)重視的是Python語(yǔ)言基本語(yǔ)法的學(xué)習(xí)。
微項(xiàng)目一,探究程序加工數(shù)據(jù)的過(guò)程,其實(shí)知識(shí)點(diǎn)涉及的是基本語(yǔ)法中的運(yùn)算符,輸入、輸出語(yǔ)句,各種數(shù)據(jù)類(lèi)型和變量的存儲(chǔ)等相關(guān)知識(shí)。學(xué)生剛開(kāi)始沒(méi)有接觸過(guò)這個(gè)軟件,所以,將微項(xiàng)目一分成了三節(jié)課:第1節(jié)課讓學(xué)生熟悉Python的軟件環(huán)境、運(yùn)算符和執(zhí)行原理,還介紹了各種數(shù)據(jù)類(lèi)型和文件存儲(chǔ)方式。第2節(jié)課完成了《利息的計(jì)算》和相關(guān)程序,又進(jìn)一步學(xué)習(xí)了數(shù)據(jù)存儲(chǔ)方式——列表的概念。列表是各種算法中必不可少的存儲(chǔ)工具,是計(jì)算思維的一種體現(xiàn),所以必須要讓學(xué)生把基礎(chǔ)打牢。第3節(jié)課是微項(xiàng)目一的收尾部分,講授了教材的拓展知識(shí),用open()和write()函數(shù)打開(kāi)和寫(xiě)入文件,這個(gè)知識(shí)點(diǎn)和程序用時(shí)在20分鐘左右。剩余的20分鐘時(shí)間就用來(lái)滲透微項(xiàng)目二選擇結(jié)構(gòu)的If語(yǔ)句的理論,讓學(xué)生對(duì)選擇結(jié)構(gòu)先有一個(gè)大體的認(rèn)識(shí),下節(jié)課則繼續(xù)深入,通過(guò)這樣螺旋上升的學(xué)習(xí),學(xué)生的印象會(huì)更深,不容易忘記。
微項(xiàng)目二,將知識(shí)點(diǎn)分為雙路徑分支結(jié)構(gòu)語(yǔ)句和多路徑分支結(jié)構(gòu)語(yǔ)句,也就是if else語(yǔ)句和if elif語(yǔ)句,安排兩節(jié)課進(jìn)行教學(xué)。這一微項(xiàng)目中的程序明顯增多,而且每一個(gè)程序都很有代表性,所以針對(duì)每一個(gè)程序中涉及的新知識(shí)點(diǎn)都進(jìn)行了學(xué)習(xí),而且要求學(xué)生自己輸入一遍程序。
微項(xiàng)目三是關(guān)于循環(huán)結(jié)構(gòu)的,仍然分為兩節(jié)課,分別學(xué)習(xí)了計(jì)數(shù)循環(huán)for語(yǔ)句和條件循環(huán)while語(yǔ)句。在教學(xué)中感覺(jué)每一個(gè)程序都很有代表性,所以把教材的每一個(gè)程序都做了分析和學(xué)習(xí),找出了每個(gè)實(shí)例的改進(jìn)算法程序。
● 第1冊(cè)其他章節(jié)的處理
信息技術(shù)課程一個(gè)學(xué)期才17節(jié)課,編程部分安排了7節(jié)課,剩下的10節(jié)課就分別安排給其他章節(jié)。學(xué)期剛開(kāi)始,第1周先上一節(jié)信息技術(shù)的起始課,從第2周到第4周,學(xué)習(xí)計(jì)算機(jī)硬件組成,包括計(jì)算機(jī)的硬件、計(jì)算機(jī)的發(fā)展史及其分類(lèi)、軟件系統(tǒng)、如何裝機(jī)等。從第5周到第12周,排除了期中考試的一周,用7節(jié)課來(lái)學(xué)習(xí)編程。從第13周到第16周,用4節(jié)課完成Photoshop的教學(xué),包括裁剪、對(duì)比度、圖像的大小、魔棒、仿制圖章、文字、圖像合成、蒙版濾鏡,最后繪制圓錐體和葡萄。第17周,學(xué)習(xí)因特網(wǎng)工具,因?yàn)閷W(xué)生經(jīng)常接觸QQ、微信等工具,所以這一章節(jié)壓縮到1課時(shí)完成即可。
● 第2冊(cè)Python的教材處理
第2冊(cè)有三個(gè)單元:Word軟件的應(yīng)用、程序設(shè)計(jì)的算法和人工智能。課程規(guī)劃后,Word軟件的應(yīng)用和人工智能這兩章,一共用7節(jié)課,而剩余的10節(jié)課,全部給程序設(shè)計(jì)算法。為什么程序設(shè)計(jì)算法要分出這么多課時(shí)呢?
第二章程序的算法,包括了枚舉算法、迭代算法、排序算法、遞歸和分治算法。學(xué)習(xí)算法是一種計(jì)算思維的培養(yǎng),而它要依托一種程序設(shè)計(jì)語(yǔ)言,要理解算法,首先要會(huì)用Python語(yǔ)言讀懂程序。
從學(xué)生的學(xué)情來(lái)說(shuō),第一學(xué)期學(xué)生已經(jīng)學(xué)過(guò)了7節(jié)課的Python語(yǔ)言,學(xué)生有了語(yǔ)言基礎(chǔ),但筆者更擔(dān)心“遺忘”的問(wèn)題。因此,講算法之前必須先復(fù)習(xí)Python的基礎(chǔ)語(yǔ)法。學(xué)生能回憶起來(lái),才好繼續(xù)學(xué)習(xí)。所以,本學(xué)期Python的前兩節(jié)課是復(fù)習(xí)課,復(fù)習(xí)第1冊(cè)的語(yǔ)法。復(fù)習(xí)課的第1節(jié),學(xué)生先回憶基本的數(shù)據(jù)類(lèi)型、輸入輸出語(yǔ)句、變量存儲(chǔ)的方法和順序結(jié)構(gòu);第2節(jié)復(fù)習(xí)了選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。用以前學(xué)過(guò)的程序?yàn)槔宰鐾卣梗貞浭綄W(xué)習(xí)。
接下來(lái)學(xué)新知識(shí),微項(xiàng)目一是討論生活中的算法之美,讓學(xué)生對(duì)生活中的算法有一種感性認(rèn)知,感覺(jué)內(nèi)容可以不用一節(jié)課來(lái)學(xué)習(xí),理念可以在下面的算法實(shí)例教學(xué)中慢慢滲透,所以從第3節(jié)課開(kāi)始,學(xué)習(xí)微項(xiàng)目二的內(nèi)容——枚舉算法。
微項(xiàng)目二枚舉算法分成了兩節(jié)課,書(shū)中的實(shí)例非常有代表性,如“拍7游戲程序”分為“明7”和“暗7”,讓學(xué)生先做只有“明7”的程序,再增加難度,要求程序中加上“暗7”的條件。學(xué)生不斷地改進(jìn)程序,完善思路,學(xué)起來(lái)層層遞進(jìn),富有趣味性,其間還滲透了取余和取整運(yùn)算符的問(wèn)題。枚舉的第二節(jié)課,學(xué)習(xí)了“砝碼實(shí)驗(yàn)程序”,學(xué)生先分析清楚問(wèn)題,不斷改進(jìn)枚舉條件,來(lái)提高程序的運(yùn)行速度。教材的科學(xué)探究欄目里,古代的“雞兔同籠”問(wèn)題、“求數(shù)學(xué)中的水仙花數(shù)”,都是很經(jīng)典的思維學(xué)習(xí)實(shí)例,教師分分類(lèi),學(xué)生都學(xué)一遍。
微項(xiàng)目三迭代算法和微項(xiàng)目四排序算法,也都分成了兩節(jié)課。在排序算法中,冒泡排序是個(gè)重點(diǎn)。
剩余的兩節(jié)課,分給了遞歸和分治算法,因?yàn)檫@兩個(gè)算法是帶星號(hào)的內(nèi)容,對(duì)大多數(shù)學(xué)生來(lái)說(shuō),算法有難度,所以只給學(xué)生典型例子了解,不做重點(diǎn)學(xué)習(xí)。
● 教學(xué)策略
1.慢就是快
筆者喜歡螺旋上升式的教學(xué)。學(xué)習(xí)新知識(shí),要用上舊知識(shí),復(fù)習(xí)好舊知識(shí),再做提升。所以每一節(jié)新課開(kāi)始前,總要花幾分鐘來(lái)復(fù)習(xí)。特別是教材每個(gè)微項(xiàng)目的第2節(jié)課,總要先復(fù)習(xí)一下上節(jié)課的基本概念和程序。在兩個(gè)學(xué)期之間,也安排了兩節(jié)復(fù)習(xí)課。這樣的教學(xué),不花哨,有效果,更扎實(shí)。同樣,學(xué)生學(xué)編程也一定要上機(jī)操作,慢慢地打程序,調(diào)試程序過(guò)程才能鍛煉學(xué)生發(fā)現(xiàn)問(wèn)題和解決問(wèn)題的能力。慢慢打好基礎(chǔ),以后才能越跑越快,這就是“慢就是快”的道理。
2.少就是多
學(xué)生學(xué)習(xí)的程序不一定要多,也不一定要花哨,但要學(xué)得經(jīng)典,要吃透,例如,“拍7”程序中涉及了取余和取整運(yùn)算符,這兩種運(yùn)算配合使用,就可以用來(lái)取出一個(gè)自然數(shù)中的某一位置的數(shù)字,所以上課時(shí)有些拓展知識(shí)也花去了比較多的時(shí)間,但這也是很值得的。
總之,編程教學(xué)是一個(gè)沉甸甸的新內(nèi)容,需要教師既要遵循教材又不局限于教材,從實(shí)際出發(fā),靈活安排,最大限度地實(shí)施新的編程教學(xué),培養(yǎng)學(xué)生更有品質(zhì)的技能與素養(yǎng)。