麥富安
(廣東省佛山市三水區(qū)西南中學(xué) 廣東佛山 528100)
2017年,國務(wù)院出臺的《新一代人工智能發(fā)展規(guī)劃》指出:要實(shí)施全民智能教育項(xiàng)目,在中小學(xué)階段設(shè)置人工智能相關(guān)課程,并逐步推廣編程教育。很多地方已經(jīng)把編程列為地方教材必修課的內(nèi)容,佛山市在新版初中信息技術(shù)八年級上冊的教材中也加入了Python編程語言的內(nèi)容,編程成為佛山市每一位初中生的必修課。通過開展Python編程語言教學(xué),能夠提高學(xué)生的編程能力和培養(yǎng)學(xué)生的計算思維,為我國人工智能人才培養(yǎng)打好基礎(chǔ)。經(jīng)過兩年的課程實(shí)施,筆者發(fā)現(xiàn)目前在初中階段開展基于Python的編程教學(xué)存在一些困難,并結(jié)合實(shí)際情況提出了相關(guān)的應(yīng)對策略。
基于對佛山市八年級信息技術(shù)課程教材的分析,關(guān)于Python程序設(shè)計的這部分內(nèi)容主要介紹了運(yùn)用程序解決問題的步驟,Python語言的基本概念、語法和程序結(jié)構(gòu),Python在人工智能中的簡單應(yīng)用。課程內(nèi)容要求學(xué)生能從簡單的生活問題出發(fā),通過設(shè)計程序去解決這些問題,在這個過程中體驗(yàn)和理解程序設(shè)計在解決問題過程中的作用和地位。
Python語言程序設(shè)計成了初中階段信息技術(shù)課程中最有難度的內(nèi)容,而程序設(shè)計在計算機(jī)科學(xué)中具有非常重要的地位,是培養(yǎng)學(xué)生計算思維的重要途徑,也最能體現(xiàn)信息技術(shù)學(xué)科特有的課程價值。
程序設(shè)計相對初中階段的其他課程內(nèi)容,如多媒體設(shè)計課程,有其相對講究的邏輯性和設(shè)計的枯燥性,學(xué)生在小學(xué)或七年級階段已學(xué)習(xí)過較有趣味性的Scratch編程,遇到Python這類字符代碼的編程語言,會讓很多學(xué)生望而生畏,學(xué)習(xí)的主觀能動性就有所欠缺。Python是一種比較新的編程語言,很多信息技術(shù)教師本身也熟悉這門語言,大部分教師采用的是自己學(xué)習(xí)C或C++語言時候的大學(xué)教師的方法進(jìn)行教學(xué),師生互動少,過于注重語法語句的講解,比較乏味。
在兩年的實(shí)踐中,筆者發(fā)現(xiàn),課時不足是開展Python程序設(shè)計課程的最大困難,每周只有1課時對于編程課程來說是遠(yuǎn)遠(yuǎn)不夠的。Python程序設(shè)計是安排在初二上學(xué)期開展,按照教材安排,除了Python程序設(shè)計,還有一個開源硬件的內(nèi)容,筆者與多位不同學(xué)校的授課教師交流發(fā)現(xiàn),大家在教學(xué)過程中普遍感覺課時嚴(yán)重不足,而教學(xué)內(nèi)容又相當(dāng)多,面對基礎(chǔ)參差不齊的學(xué)生,加上學(xué)生興趣不大,想要完成基本的教學(xué)內(nèi)容已經(jīng)很困難,更談不上培養(yǎng)學(xué)生的計算思維了。
在開展Python的教學(xué)過程中,筆者發(fā)現(xiàn)學(xué)生的數(shù)學(xué)知識不足或者數(shù)學(xué)基礎(chǔ)不好成為了他們學(xué)習(xí)編程的一個重大障礙。首先,在編程中不少概念是和編程關(guān)系密切的,如變量和函數(shù)。學(xué)生在小學(xué)或者七年級的數(shù)學(xué)課中已學(xué)習(xí)過方程、變量等數(shù)學(xué)概念,但他們對這些概念理解和掌握程度不深,不容易與編程中的相似概念區(qū)分清楚。在編程中變量是有名稱和類型的區(qū)分的,Python中的變量可以是整形、浮點(diǎn)型和字符串,同一類型的變量才可以進(jìn)行運(yùn)算,但在數(shù)學(xué)中就沒有類型的區(qū)分,運(yùn)算也沒有相應(yīng)的約束。因此,如果學(xué)生混淆了數(shù)學(xué)和編程的概念,在程序運(yùn)行調(diào)試中出現(xiàn)錯誤,學(xué)生是很難發(fā)現(xiàn)程序錯誤的原因[1]。
其次,編程中的一些概念在數(shù)學(xué)課上沒有學(xué)過,例如“素數(shù)”這個概念,在實(shí)際教學(xué)中發(fā)現(xiàn)對于這個名詞,很多學(xué)生其實(shí)是不理解的,因?yàn)閷W(xué)生在小學(xué)階段學(xué)習(xí)的是“質(zhì)數(shù)”,如果教師不解析清楚,學(xué)生連課本的例題都不能看明白。
Python是一種字符編碼型的程序語言,需要學(xué)生用鍵盤輸入代碼。這本不應(yīng)該是一個問題,但實(shí)際情況是學(xué)生在輸入代碼時候經(jīng)常出現(xiàn)問題。由于學(xué)生現(xiàn)在使用智能手機(jī)或平板為主,很少使用鍵盤輸入,因此學(xué)生的打字能力很弱,經(jīng)常一個很簡單的程序?qū)W生也要花較多的時間輸入。例如,在輸入代碼的時候經(jīng)常需要中英文輸入進(jìn)行切換,本來可以用鍵盤上的“ctrl+空格”很快實(shí)現(xiàn)切換,但學(xué)生缺少打字訓(xùn)練,很多時候還有用鼠標(biāo)點(diǎn)擊輸入欄進(jìn)行切換,大大降低了輸入程序的效率,一節(jié)課下來,能夠進(jìn)行程序調(diào)試,發(fā)現(xiàn)問題的時間就更少了。
Python等類似的字符化的程序語言其趣味性肯定不及Scratch等圖形化編程語言。因此,在實(shí)際教學(xué)中,教師要注意控制教學(xué)難度,注重培養(yǎng)學(xué)生的學(xué)習(xí)興趣,循序漸進(jìn),不能急于求成。初中階段算法和程序設(shè)計的這部分內(nèi)容,重點(diǎn)是讓學(xué)生體會算法的思想,培養(yǎng)學(xué)生的計算思維,使其掌握基本的編程方法。教師在教學(xué)中應(yīng)該注重對編程基礎(chǔ)知識的講解,選擇一些結(jié)構(gòu)簡單、邏輯清晰、語句不太復(fù)雜的、貼合學(xué)生生活的例子進(jìn)行教學(xué)。在利用程序解決問題的過程中,重點(diǎn)培養(yǎng)的是學(xué)生解決問題的計算思維。
在實(shí)際教學(xué)中,學(xué)生學(xué)習(xí)完一個知識點(diǎn)后的第一個程序,對于一般程序的填空,筆者把程序中與該識點(diǎn)密切相關(guān)的部分留空,讓學(xué)生進(jìn)行補(bǔ)充完成,這樣可以降低學(xué)習(xí)難度,提高學(xué)生的學(xué)習(xí)積極性,這種做法在剛開始學(xué)習(xí)時尤其關(guān)鍵。當(dāng)學(xué)生對Python逐漸熟悉后,可以增多留空的部分,到最后讓學(xué)生從“零”開始完整完成一條程序。
Python程序設(shè)計是一門理論與實(shí)踐都很重要的課程,通過所學(xué)編程知識來指導(dǎo)實(shí)踐應(yīng)用,通過實(shí)踐鞏固所學(xué)編程知識。較為理想的教學(xué)時間安排應(yīng)該是,上機(jī)實(shí)踐操作的時間多于理論學(xué)習(xí)時間。由于初中學(xué)生對電腦的基礎(chǔ)應(yīng)用不熟悉,打字的效率等都會影響上機(jī)調(diào)試程序的進(jìn)度,如果時間不足,不僅完成不了任務(wù),還會降低學(xué)生的自信心。另外,理論學(xué)習(xí)與上機(jī)實(shí)操之間的時間間隔越短越好。按照艾賓浩斯的遺忘曲線規(guī)律,及時復(fù)習(xí)對于鞏固已學(xué)知識是很重要的。筆者認(rèn)為,比較好的解決辦法是兩節(jié)課連在一起,一節(jié)課學(xué)習(xí)理論知識,緊接著第二節(jié)課上機(jī)實(shí)踐操作,及時鞏固所學(xué)知識。因此,強(qiáng)烈建議將信息技術(shù)課時調(diào)整到每周兩節(jié),而且每周的信息技術(shù)必須連堂兩節(jié)上[2]。
對于數(shù)學(xué)知識欠缺的問題,筆者認(rèn)為可以從這么做:首先,在數(shù)學(xué)課上已經(jīng)學(xué)習(xí)過且容易混淆的概念(如“變量”),在教學(xué)中應(yīng)該把這個概念和數(shù)學(xué)課中的概念進(jìn)行對比分析,幫助學(xué)生理解這個概念在Python中的不同之處。對于在數(shù)學(xué)課上還未學(xué)習(xí)的概念(如“函數(shù)”),教師在課堂上進(jìn)行詳細(xì)講解。如果該個概念在數(shù)學(xué)或者其他學(xué)科中也存在,但學(xué)生還沒有學(xué)習(xí)到,可以先從本學(xué)科的角度進(jìn)行解析,這樣能幫助學(xué)生更容易理解這個概念[3]。
從上述的問題分析來看,學(xué)生常用的計算機(jī)操作是代碼輸入及中英文切換。因此,教師可以在編程課程的頭幾節(jié)課,利用打字軟件,讓學(xué)生進(jìn)行5分鐘左右的打字練習(xí),尤其是英文打字練習(xí),幫助學(xué)生提高代碼的輸入效率。雖然課程的總課時不夠,但“磨刀不誤砍柴工”,學(xué)生輸入代碼的效率提升能改善課堂教學(xué)效果。從筆者的實(shí)施經(jīng)驗(yàn)來看,到了課程的中后段,大部分學(xué)生都能較為熟練地輸入代碼,教學(xué)效率得到明顯提升。對于中英文輸入法差異產(chǎn)生的問題,筆者認(rèn)為,在課程初期應(yīng)該重點(diǎn)教會學(xué)生區(qū)分中英文標(biāo)點(diǎn)符號的差別,這樣可以幫助學(xué)生減少輸入錯誤。