田憶文,王莉娜,周 近,趙文秀,公欣儀
(江蘇第二師范學院,江蘇南京 210013)
隨著國民經濟的快速發展,我國已進入小康社會,普通家庭的收入顯著提高,隨之而來的教育投入也有明顯提高,學校的常規教學已不能滿足學生的多元化需求和社會深層次需要。如今科學技術的高速發展使得中小學生編程教育受到越來越多人的關注。經過一系列的調查分析,發現中小學生編程教育具有雙面性及特殊意義。信息技術學科的教育目標中提到,中小學生的編程教育以培養計算思維為核心素養,旨在增強信息意識、培養創新能力、提高學生信息社會時代責任感。編程教育與其他常規學科不同,有自己獨特的教學特點及方式。本文將對中小學生處于不同年齡階段時的興趣和思維發展特點進行分析,并總結中小學生的編程教育在每個年齡階段的教育差異性。
在人工智能時代的大背景下,信息技術無處不在,它已經成為人們生活學習中不可缺少的工具。第三次科技革命以原子能技術、電子計算機的應用為代表,不難看出信息技術在推動生產力的發展方面有著越發重要的作用,且它與各個領域之間相互滲透,密切結合。因此,普及中小學生編程教育是在時代呼喚的宏觀背景下的結果,能使學生更好地適應當下科技高速發展的信息時代,并發揮自己的想象及創造力來服務社會。編程教育是一項開放性的教育,涉及數學、邏輯、語言、計算機等多種學科知識的相互融合,讓學生學習編程的同時掌握其他相關技能,使學生得到全方位提升,且符合以提高受教育者諸方面素質為目標的素質教育模式特點。素質教育是促進學生全面發展、個性發展,以培養創新精神和實踐能力為重點的教育,而我們所提倡的計算機編程教育正體現了素質教育的內涵。
信息技術的高速發展下,編程教育出現在人們的日常生活中,一個個編程培訓機構火爆起來,家長趨之若鶩。近年來,注入編程培訓機構的資本也在急速膨脹。艾瑞咨詢行業分析報告曾發表一篇關于少兒編程行業的研究報告,研究顯示截至2018 年,編程行業規模約為35 億元,而用戶規模達到1600萬左右。由此可見,編程教育掀起投資熱浪,大批編程教育機構接踵而至。不僅相關培訓機構、社會風氣上存在編程熱,學生家長對編程教育也十分支持。經在南京市對于中小學生編程教育現狀的調查分析,如表1 所示,84.13%的家長支持學生參加少兒編程學習,不支持的家長僅占15.87%。我們了解到這些家長不愿意讓學生參加編程教育的主要原因是為學生的健康考慮,如表2 所示,56%的家長不支持的原因為“長時間對著電腦,對身體不好”。因此,從總體來看,編程教育顯而易見是備受家長所追捧的。編程教育的確可以提高學生的思維發展和創新能力,但不顧學生自身的興趣愛好,一味盲目跟風則會適得其反,易使學生產生厭學心理,損害學習的積極性與主動性。隨著編程教育熱的不斷升溫,著名教育學者熊丙奇提到,對中小學生進行編程教育培訓有助于培養學生興趣愛好,是值得肯定的。但在推動編程教育進入中小學課堂的同時,應以培養學生的愛好和素養為主,避免功利化的學習。對此他提議,家長應考慮學生的自身情況,是否有興趣和意愿學習編程,而不是盲目跟風強制性地要求學生學習這項技能。

表1 家長對孩子參加少兒編程學習的態度

表2 家長不愿意讓孩子參加編程學習的主要原因
在2017 年出版的高中信息技術課程標準中提到,學校開展信息技術課程旨在提高學生自身的信息素養,使個體在當下信息時代具有較高的適應性和創造性。課標中強調把學生的計算思維作為學科的重點核心素養,并將其稱為“是一種能夠伴隨學生終身學習和發展的必備的思維能力”。所謂計算機編程,本質上是用特定的計算思維來表達復雜問題,并將其轉化成簡單的機器語言,從而解決問題。這個過程中,要讓學生體會編程思想,提高自身計算思維能力。
計算思維的定義是:個體運用計算機科學領域的思想方法,在形成問題解決方案的過程中產生的一系列大腦思維活動。計算思維能力可以使學生在學習活動中采用計算機處理問題的方式分析問題、抽象定義問題、形成邏輯程序、組織利用數據,經過對信息資源的合理分析和整合,形成高效的算法,從而快速解決問題。并且,利用計算思維解決問題的過程可以使學生思想得到啟發,學會運用這種方法解決其他問題。編程教育正是提升學生信息素養,發展邏輯計算思維的教育,編程的過程也是強化邏輯計算思維能力的過程。
中小學生編程教育兼重理論學習和實踐應用,在教學中會設定大量豐富的任務情境,使學生切實置身于解決問題中,提高學生學習的主動性和解決問題的積極性,努力營造數字化學習環境,讓學生在技術先進的環境中學習與實踐。編程教育中常用的學習方式是建立項目,鼓勵學生用自己解決問題的方法創建項目。一個編程問題每個人的思路不同,編寫的算法結構也會不同的,在這個過程中很有可能有學生提出一些新穎、巧妙簡潔的算法思路,在很大程度上培養了他們的創新意識和創新能力。在這個數字化時代,編程教育可以使學生在科技化環境中養成適應數字化學習的能力,學會合理運用資源和學習工具,幫助學生提高自主學習和創新創造的能力,培養學生終身學習的能力。編程教育對學生具體化抽象能力進行培養,使學生形成較高的抽象性思維,并按照學生設計的程序運行。這個過程中,教師要培養學生進行想象創造、實踐表達自己解決問題的思路方法,以提高學生數字化學習與創新能力為目標。
程序設計是中小學生信息技術課程教學中最常使用的一種基礎工具和學習編程所必備的思維方式。程序設計所涉及的是算法的編寫、程序框架的規劃,編程是具體的代碼實現。也可以說,程序設計更多體現思想,要考慮空間復雜度和時間復雜度;編程更多注重技巧,關鍵在于將程序設計中的思想高效率地正確實現。而對于中小學生編程教育,更要注重思想的培養,讓學生積極思考,靈活掌握算法和有創造性地規劃框架。程序設計可以培養學生的獨立實踐能力,同時對學生的創新能力起到一定的激發作用。在利用程序設計對學生進行編程教育培養時,體現了STEAM(科學、技術、工程、人文藝術與數學)教育的理想方法。當前Scratch 程序設計理念在中小學信息技術課程中廣泛應用,教師在實際教學過程中帶領學生重點分析任務結構,在進行編程設計時對每一環節進行仔細梳理分析,讓學生重點掌握程序設計的思想,而不是要求掌握枯燥無味的編程代碼。這種教育方式更符合當前我國小學生的學習規律,能夠有效地將程序設計思想融入課程教學過程,培養學生的編程思維和程序設計思想,在體驗程序的創意、設計、制作過程的同時,也讓學生初步形成以編程方法觀察事物和求解問題的能力,提高計算思維與創新能力。
編程和其他的學科有所不同,它需要有一定的數學基礎,對邏輯有較高要求,當一些學生沒有達到這樣的認知水平時,學習編程會打擊學生學習的積極性。這就要求在中小學生的編程教學培養上更注重學生的想象力而非記憶知識。編程知識大多是繁雜的,顯然不適用在中小學生的編程教育中,記憶編程知識可能會給學生造成很大負擔。中小學生編程教育的重點應放在培養編程思維上,激發學生想象力。學生掌握知識的過程往往是從發現問題開始,在解決問題中通過思考學習得到發展從而掌握知識。在編程教育中,教師通過創設問題情境讓學生主動學習探索,并動手實踐,構建程序算法,并在這個學習過程中激發學生求知欲,不斷想象尋求更好的算法,從而提高自身的想象力和創新能力。年輕人富于想象,而想象力正是來源于早期發展所獲得的常識。因此,在中小學生編程教育過程中,教師應該著重培養學生的想象力和創造力,使學生形成編程思維,學會運用數字化工具,充分發揮信息技術課程特有的教學環境優勢,讓學生體驗研究和創造的樂趣,在知、情、意、行的動態學習中逐步提升自身的認知與創新能力。
張逸中博士曾說:有利于編程學習的年齡階段應在升入小學以后。他認為學習編程是不能急的,“開竅”才能夠學好,超前學習可能會導致學生似懂非懂,從而缺少學習興趣。編程教育既是學習編程語言,實際上也是培養學生發現問題和處理問題的思維方式,是培養在數字化環境下、采用人機對話解決問題的能力,且這種思維方式同樣適用于其他領域的學習。但要想熟練掌握這項本領是需要一定的基礎知識,也需要多種基本能力的搭建和配合。因此,學生學習編程不是依樣畫葫蘆,而需要多種能力匹配。在中小學生的編程教學過程中教師要積極創設教學問題情境,使學生的學習和生活相聯系,不能在學生“一頭霧水”的時候開展教學工作,而且教學重點應是培養表達事物、發現規律、解決問題的思維方式。總之,學生成長的每個階段都有每個階段的學習特性,我們不應該過早干預,而要順其自然地教給學生科學。而編程教育的學習更是具有一定的要求,超前地使學生投入到編程的學習中未必是好事,甚至會使結果南轅北轍,對學生的全面發展產生不利影響。
編程學習要求學生具備扎實的數學功底,因為編程過程不僅有基本運算,更多的是邏輯抽象思維和算法。算法是解決問題的方法和步驟,是一種數學建模。算法是編程設計的靈魂,算法教學是編程教學的基礎。教師在編程教學中可以先分析簡單的問題特例,再逐步加深,循序漸進,慢慢深入,避免太難對學生造成心理負擔,最后歸納總結形成算法。教師要讓學生對程序設計和算法概念有由淺入深的接受過程,在過程中深入理解掌握,以降低學習的難度。
算法是通過精確表達的計算機指令進行設計的,通過機器語言在有限時間內表達問題,解決問題,而這就造成不同算法在解決同一問題時具有效率高低等差別。這可以激發學生積極思考創新,培養發散思維。教師可以創設問題情境,讓學生經歷利用算法解決問題的全過程,從現實問題出發,分析問題,創建數學模型,設計算法,從而用機器語言解決問題。這個過程中,教師要對學生的思路和方法進行引導,促進學生算法概念與抽象邏輯思維的形成。
著名兒童認知心理學家皮亞杰提出的四大階段中,6 至12 歲的兒童被稱為“具體運算階段”,此時的兒童具有一般的思維邏輯結構;12 到15 歲的兒童被稱為“形式運算階段”,這時的兒童思維發展較靈活,智力發展逐步成熟,最有利于抽象邏輯的形成。對我國教育國情來說,有效開展信息技術教育教學的學生集體分為小學三至五年級、初中七至八年級、高一年級三個學段,而各學段的學生思維發展特點是不同的,這就導致各學段開展編程教學時存在明顯差異。在各學段學生特點和新課標的基礎上,基本明確了“小學段興趣導向玩中學,初中段了解初步打基礎,高中段深入算法會運用”的各學段學習重點。
對于小學段的學生來說,適合他們學習編程的工具主要有兩類。第一類是圖像編程工具,如美國麻省理工學院設計開發的Scratch,學生可利用拖拽“積木模型”的方式組合代碼塊,不需要輸入具體代碼就可以設計游戲、動畫等,感受編程學習帶來的樂趣。第二類是游戲類編程工具,如以色列開發的CodeMonkey 使學生在游戲中體會編程思維,且不會感到枯燥無趣。當然,這些工具都是對真正的編程進行了簡化和優化,并設計更吸引學生的界面,也使學生更易上手,體會編程的魅力。
初中段以學習C 語言和Java 語言為主。C 語言是一門面向過程的計算機編程語言,它是編程思想建立的入門級語言。而Java 語言具有類似C 語言的“形式和感覺”,但比C 語言更易使用。總的來說,C 語言是面向過程的語言,而Java 是面向對象的語言。教師可以這兩種基礎編程語言為學習載體,通過教學案例分析與引導,建立學生對利用編程方式處理簡單問題的過程的基本認識及基本概念的理解。
高中段是以Python 為主,Python 是一種廣泛使用的解釋型、高級和通用的編程語言。它既是基礎編程語言,也上升一定高度,是一種較適合在高中時期學習的編程語言。高中信息技術新課標也把Python 語言作為核心編程語言。
事實上,中小學生編程的工具與成人學習編程的工具差異性很大,它們并不能稱為真正意義上的編程。這類編程教育只是啟發學生的計算思維,培養學生的編程思想,更像是一種啟發式訓練,引導學生掌握一定的程序設計意識和邏輯思考能力等。
編程教育雖然已經成為新課程改革的重點內容,但不可否認,編程教育作為一種新興學科還存在多方面不足。師資力量不足是推廣編程教育過程中最顯著的問題。由于我國處于編程教育發展初期,中小學編程教師數量不足,且課程教學經驗不足,優質教師資源非常匱乏,這一問題可能會造成編程教育發展的瓶頸。中小學生編程教育的教師不僅需要具備編程能力,有扎實的專業技能,同時還需要具備教學督導能力,能生動形象地將知識傳授給學生。相關教育機構可以鼓勵大量的計算機專業及相關專業的師范生從事編程教工作。
當前的編程教育沒有系統的教學方法、學習方案,只是依靠一些編程工具引導學生學習,少有本土化課程和符合我國中小學生學情的編程教學標準。對此,教師可以利用范例教學的方法,首先使學生掌握基礎的編程理論知識,接著對例題進行講解學習,最后拓展加深,讓學生自由創作,增加對創作作品的思維發散度,從而想出更好的創意并用編程方法實現它。因此,建立完善的教學體系、培養專業的編程教師、規范教學內容和教學方法也是發展中小學生編程教育的當務之急。
此外,社會各界對編程教育也存在一些意識偏差。許多家長和學生認為“編程難且枯燥”,這幾乎成為社會對編程的固有印象。大多數人認編程是復雜無趣的,就是不停地敲代碼改代碼,是為了將來的職業生涯與計算機相關的少部分人開展的,是針對即將面臨就業的大學生群體,而中小學階段不需要學習這類知識。還有甚者認為編程就是“游戲”,開展編程教育課程就是“玩電腦”,浪費時間,對中小學生來說沒有必要。這充分體現出很多人對編程教育并不了解。社會在與時俱進,編程教育也應該緊跟時代步伐,讓更多人轉變對編程的固有思想,真正了解編程教育。
推廣編程教育,讓中小學生接觸編程,不是為了培養精通編程技術的程序員,而是通過學習編程思想培養學生的創新能力,使其學會用計算思維分析問題、處理問題??偟膩碚f,提升解決問題的能力和培養計算思維才是真正的編程教育核心,也是開展編程教育的最終目的。