張慶豐
【摘要】中學(xué)編程教育不同于大學(xué)編程教育,必需要另辟蹊徑,探索適合中學(xué)生的編程教學(xué)模式。本文闡述作者通過實踐,逐步摸索出一套基于訓(xùn)練模型的編程教學(xué)模式,以適應(yīng)中學(xué)生的教學(xué)需求。
【關(guān)鍵詞】編程教育;訓(xùn)練模型;在線測評
一、國家大力推動中小學(xué)編程教育
2017年7月20日,國務(wù)院印發(fā)《新一代人工智能發(fā)展規(guī)劃》,規(guī)劃中提出分三步走的戰(zhàn)略目標(biāo),到2020年人工智能總體技術(shù)和應(yīng)用與世界先進水平同步,到2025年人工智能基礎(chǔ)理論實現(xiàn)重大突破,到2030年人工智能理論、技術(shù)與應(yīng)用總體達到世界領(lǐng)先水平,將人工智能上升到國家戰(zhàn)略。規(guī)劃中同時指出:實施全民智能教育項目,在中小學(xué)階段設(shè)置人工智能相關(guān)課程,逐步推廣編程教育。
程序設(shè)計是計算機科學(xué)的基石,它使得人們在計算機上得以實現(xiàn)各種想法;算法是計算機科學(xué)的靈魂,它使用巧妙的方法將程序的效率不斷得到提高,這兩者緊密合作推動計算機科學(xué)幾十年來的高速發(fā)展,將現(xiàn)代社會帶入人類文明的高光時刻。
人工智能是計算機科學(xué)一個重要的分支,近年來發(fā)展迅猛,在各個領(lǐng)域都得到了廣泛的應(yīng)用。但是,人工智能的根基仍然離不開計算機科學(xué)的基礎(chǔ)——程序設(shè)計和算法。因此,要發(fā)展人工智能歸根結(jié)底還是要大力發(fā)展計算機科學(xué),大力推動編程教育。
二、中小學(xué)開展編程教育所面臨的挑戰(zhàn)
中小學(xué)信息技術(shù)學(xué)科在大多數(shù)地區(qū)都是不參與考試的邊緣學(xué)科,無論是從學(xué)校的教學(xué)安排還是從家長的角度,都沒有得到足夠的重視。編程課程在高中屬于信息技術(shù)科目的選修內(nèi)容,更是被視為大學(xué)計算機相關(guān)專業(yè)才應(yīng)該學(xué)習(xí)的技能。這使得在大多數(shù)中小學(xué)開展編程教育非常困難。
筆者從事信息技術(shù)學(xué)科教學(xué)12年有余,高中和初中的任教經(jīng)歷各占一半。除了常規(guī)信息技術(shù)課程之外,還曾開展以下編程教育課程:
1.信息學(xué)競賽:斷斷續(xù)續(xù)地帶過四屆學(xué)生——最多一屆31人,最少一屆僅有1人;2.少兒編程:Scratch校本課程和線上課程;3.創(chuàng)客教育:蘿卜圈虛擬機器人。
大多數(shù)學(xué)生都是抱著“玩一玩”的心態(tài)來參加活動,一旦遇到困難就容易退縮,造成在整個教學(xué)過程中學(xué)生人數(shù)波動很大,甚至出現(xiàn)期末學(xué)生人數(shù)不足開班時的十分之一的情況。問題的根源在哪里呢?有以下幾點原因:
1.唯分?jǐn)?shù)論的思想導(dǎo)致很多優(yōu)秀的學(xué)生不敢參與進來;2.信息技術(shù)老師不愿意參與如此辛苦又難出成效的工作;3.大多數(shù)學(xué)校在編程教育方面的師資投入不足,編程教學(xué)不是學(xué)校常規(guī)教學(xué)任務(wù),老師僅靠情懷不足以支撐長期枯燥且高難度的工作熱情;外出培訓(xùn)交流的機會不多,專業(yè)能力提升太慢難以適應(yīng)競賽要求;4.家長和學(xué)生普通沒有認(rèn)識到學(xué)習(xí)編程的優(yōu)點,參與到編程學(xué)習(xí)的熱情不高,即使參與編程學(xué)習(xí)也常?!爸y而退”。
三、尋找問題根源,直面挑戰(zhàn)
目前,市面上有關(guān)編程教育(主要是少兒編程)的項目非常多,主要可以分為三大類:圖形化編程、機器人、信息學(xué)競賽。根據(jù)不同學(xué)段的學(xué)生的知識結(jié)構(gòu)和學(xué)習(xí)特點,結(jié)合我縣的具體情況,筆者認(rèn)為我縣可開展的編程教育項目可按圖1所示:
本文主要討論高中信息學(xué)競賽課程的開展,以及探索編程教學(xué)中的訓(xùn)練模型,以適應(yīng)高中階段的教學(xué)需求。由于大多數(shù)參加培訓(xùn)班的學(xué)生在高中之前并未接觸過編程,屬于零基礎(chǔ)教學(xué),因此在高中開展信息學(xué)競賽培訓(xùn)會有以下幾方面的問題:
1.消除學(xué)生對編程的恐懼心理。對于高中生來說,編程學(xué)習(xí)不同于其他學(xué)科的學(xué)習(xí)之處在于:編程并不像語數(shù)英等學(xué)科一樣經(jīng)過多年的學(xué)習(xí),有了深厚的基礎(chǔ),就如語數(shù)英的學(xué)習(xí)是高屋建瓴,而編程則是平地起高樓,學(xué)習(xí)難度自然不言而喻。所以,大多數(shù)學(xué)生在學(xué)習(xí)編程之前就心生恐懼,這種心理不利于學(xué)習(xí)的開展,所以消除這種恐懼心理是開展好編程教學(xué)的基礎(chǔ)。
2.中學(xué)編程教育不同于大學(xué)編程教育。大學(xué)里計算專業(yè)的編程課一般是在大二才開展簡單的語言學(xué)習(xí),到大二下學(xué)期開展數(shù)據(jù)結(jié)構(gòu)和算法學(xué)習(xí),而這些科目是建立在《計算機操作系統(tǒng)》《高等數(shù)學(xué)》《線性代數(shù)》《離散數(shù)學(xué)》等先修課程的基礎(chǔ)之上。高中生不具備計算機專業(yè)相應(yīng)的各種學(xué)科知識,如果按照大學(xué)里教編程語言的方法來開展編程教學(xué)的話,花費大量的時間和精力自不必說,也很難達到預(yù)期的效果。
3.可供練習(xí)的資源較少。傳統(tǒng)的編程練習(xí)方式是根據(jù)教材課后習(xí)題自己編寫程序,由于經(jīng)驗的局限性導(dǎo)致測試數(shù)據(jù)往往不能較為全面地覆蓋所有的條件,導(dǎo)致程序的健壯性不高,經(jīng)常只能得到部分分?jǐn)?shù)。
4.消除學(xué)生賽前緊張情緒。由于不熟悉比賽環(huán)境和要求,學(xué)生在比賽前會有不同程度的緊張情緒,這往往導(dǎo)致學(xué)生在賽場出現(xiàn)不必要的失誤。
四、探索適合的訓(xùn)練模型
大學(xué)計算機專業(yè)編程課程的教學(xué)模式并不適用于中學(xué)的編程教學(xué),中學(xué)編程教學(xué)應(yīng)該有自己的一套模式。針對以上所述問題,結(jié)合其他信息學(xué)競賽名校的經(jīng)驗,筆者認(rèn)為可以從下面幾個方面進行探索,并結(jié)合實踐加以完善:
1.日常教學(xué)
中小學(xué)生對枯燥的編程理論的重要性缺乏相應(yīng)的認(rèn)知,如果以理論作為切入點往往導(dǎo)致學(xué)生望而生畏,用不了幾節(jié)課學(xué)生就會打退堂鼓。筆者認(rèn)為可以效仿少兒編程,把課堂學(xué)習(xí)變成有趣的探索,讓學(xué)生在不知不覺中學(xué)到知識。以故事或者學(xué)生較有認(rèn)知共性的事情為外表來構(gòu)建題目,學(xué)生在熟悉的背景中學(xué)習(xí)新的知識,降低了理解新知識的難度。
例1:在講授遞歸算法的時候,以學(xué)生耳熟能詳?shù)摹吧缴嫌凶鶑R,廟里有個老和尚,老和尚在和小和尚講故事:山上有座廟,廟里有個老和尚,老和尚在和小和尚講故事……”——《山上有座廟》為背景來闡述遞歸算法“自己調(diào)用自己”的層層嵌套關(guān)系,進而引出如何終止遞歸——設(shè)定“遞歸邊界”;
例2:在講一維數(shù)組的時候,以《熊出沒》的人物來設(shè)置題目:又到過年了,狗熊嶺的動物們都忙碌起來,張燈結(jié)彩準(zhǔn)備過年。李老板卻要光頭強砍一些百年美人松回去。美人松都是很高的,它們的高度不超過長整型?,F(xiàn)在光頭強看到叢林里有N棵美人松,當(dāng)然每棵松的高度是已知的,李老板要問光頭強:高度為K的美人松有多少棵?
2.課堂與課后練習(xí)
所有說“21天學(xué)好一門編程語言”的書都是在耍流氓。編程語言的學(xué)習(xí)來自于不斷地練習(xí)和經(jīng)驗總結(jié),沒有足夠的代碼量是絕對不可能學(xué)得好的。編程學(xué)習(xí)不同于其他學(xué)科的“紙上談兵”,程序?qū)懙煤貌缓?,拿到計算機上跑一跑就知道。因此,編程練習(xí)在整個教學(xué)活動中是非常重要的,針對不同的學(xué)習(xí)階段可以做如下安排:
a)C++語法學(xué)習(xí)階段——教材《信息學(xué)奧賽一本通》例題、一本通OJ、自建OJ;
b)基礎(chǔ)算法學(xué)習(xí)階段——一本通OJ、洛谷OJ、自建OJ;
c)數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)階段——一本通OJ、洛谷OJ、自建OJ;
d)進階算法學(xué)習(xí)階段——LOJ、UOJ
e)賽前一個月——舉辦模擬賽
3.模擬賽
OJ(在線測評系統(tǒng))雖然可以為學(xué)生提供練習(xí)和反饋,但是和真正的比賽環(huán)境還存在一定的差別。因此,需要使用單機測評軟件模擬真實比賽,讓學(xué)生熟悉比賽機制,減少參加比賽時因不熟悉環(huán)境所產(chǎn)生的緊張和失誤。
學(xué)生通過各種在線OJ進行練習(xí),可以及時得到反饋,進而調(diào)試代碼改正錯誤;通過自建OJ完成作業(yè),老師可以掌握學(xué)生的學(xué)習(xí)情況,進而有針對性地調(diào)整教學(xué)方案。綜合以上所述,形成圖2所示的“編程教學(xué)訓(xùn)練模型”。這個模型形成編程學(xué)習(xí)的閉環(huán),學(xué)生能夠逐漸養(yǎng)成有效的自學(xué)行為,不斷提高自身的編程能力和解題技巧。