中小學Python編程語言教學
作為一名高中信息技術老師,被技術的發展潮流推動着,不斷更新教學內容和方法,以適應快速發展的信息社會。
以前的中小學信息技術課程,老師們各顯神通,身懷絕技,教PS,Falsh,網頁制作,視頻編輯等等,很多學校的信息技術老師還兼任電教,管理學校的投影、打印等。總是處於輔助的邊緣角色, 學科定位不定,老師們的成就感和積極性也會受挫。一個學科的根本確定后,才能名正言順的開展下面的教學工作。否則一直都是邊緣學科,陪襯的角色。《普通高中信息技術課程標准》把信息技術學科的核心素養包括:信息意識、計算思維、數字化學習與創新和信息社會責任四個要素。計算機科學教育不僅僅包括編程教學,即編程教學並不是計算教育的全部。計算教育還要包括對學生信息意識的培養,數字化學習與創新的應用和承擔起相應的信息社會責任。每個學校都有自身的特定環境,有的學校側重數字化學習與創新的應用,並沒有專門的計算機科學方面的課程,課程更側重於信息技術與各科的融合。國外的學校會有專門的職位來推動這個融合過程,國內的大部分是信息技術老師兼任和各科老師們來開展。
那么編程語言學習更側重於計算思維的培養,同時也滲透其他三個要素的培養。計算思維是什么?是指個體運用計算機科學領域的思想方法,在形成問題解決方案的過程中產生的一系列思維活動。具備計算思維的學生,在信息活動中能夠采用計算機可以處理的方式界定問題、抽象特征、建立結構模型、合理組織數據(數據結構);通過判斷、分析與綜合各種信息資源,運用合理的算法形成解決問題的方案(算法);總結利用計算機解決問題的過程與方法,並遷移到與之相關的其他問題解決中。(遷移,學以致用)
為什么要學習編程?
編程語言是和計算機溝通必須的語言,學習一門新的語言就像打開一扇背后充滿各種可能性的窗戶,多一種認識世界的角度和方式。類似於幾十年之前的英語的學習,先接觸英語的一批人就優先的獲取了新的訊息和視角。無需人人都從事專業程序開發,但計算思維已經是面向未來的必備基礎素養。
為什么選擇Python語言作為高中生的入門語言? Python是一種什么樣的語言?
沒有最好的,只有最合適的。編程語言就像廚房里面的勺子,樣式不同,各有特色,滿足不同需求,類似於油畫的各類筆刷,不同藝術效果需選用不同的筆刷。從底層的機器語言到匯編語言再到高級語言,每種語言都有他們的特色。比如,C語言:操作系統底層;Java:跨平台面向對象語言;Python:人工智能時代的首選語言。
如何教授編程?
從學習分析角度,編程屬於技能領域。編程的學習就要遵循技能學習規律。刻意練習是技能學習的不二法門。中小學學生有他們特有的認知和心理特點,不能只是簡單粗暴的練習,導致學生們對編程畏難和絕緣。通過以往的教學經驗,融入項目教學方法,總結出如下的教學模式流程:
(1) 拋出概念 問題(項目活動1)
概念和問題盡量和學生已有認知結構有關聯,和他們日常生活息息相關的案例會更能激發他們興趣和解決問題的動力。
可視化編程可以作為入門課程,比如Python里面的turtle模塊。可視化編程可以提供即時反饋,降低初學者入門門檻,學習過渡會順利一些,另外,可視化編程可以持續激發學生的興趣。為后面的學習提供動力基礎。
藝術創作(繪制創意藝術作品)。讓學生體會到編程不僅僅是機械枯燥的數字和抽象模型,通過有限的邏輯控制,實現無限的創意。讓學生從新的角度來理解編程。發現藝術中蘊含的編程之美。
語文文本分析(統計詞頻,數據可視化呈現)通過編程來實現文本分析,並把數據可視化。從信息中提取出有用的知識也是信息社會必備的技能。
數學(輸出質數、輸出最大公約數、判斷是否為閏年、概率統計模擬等)數學是計算機科學的基礎,可以通過計算機實現驗證某些數學原理,幫助學生深刻理解數學概念。
科學模擬(自由落體、泊松運動等)有趣的科學實驗和原理都可以通過計算機模擬實現,也是通過編程來學習科學的一條路徑。
生活案例隨機點名器(列表和字符串)密碼技術(凱撒密碼 隨機替代密碼 弗吉尼亞密碼等)真實的案例和問題給學生提供了學以致用的機會,當用着自己或是學生的產品,會有很強的成就感。學生們也借機體會真實的程序開發過程迭代過程。
硬件結合(各類傳感器應用)隨着硬件套件的普及,學生們也有很多機會接觸硬件。通過硬件的控制給學生提供了一個實物,可以通過編程來控制,並且這個事物還是一個看得見摸得着的實物。這樣學生的積極性和興趣持續時間會更長。對於老師的挑戰就是工作量會增加,不僅要考慮軟件,也要關注硬件的使用。
游戲開發,編程語言的教學可以借助游戲平台模塊或平台進行開展。比如Python語言可以通過pygame模塊開發2D的游戲;也可以通過Minecraft開發3D游戲。通過學生感興趣的游戲入手可以激發學生的學習興趣。
(2)學生手動體驗活動(項目活動2)
具體的體驗為后面的抽象提供了實踐來源,只有這樣才不至於跨度大,進而降低學習難度。相當於為學生提供了實踐活動機會,體會具體的操作過程。順利過渡到抽象階段。我們學習一項新的技能,最好的方式就是在學生已有的認知和經驗范圍基礎進行建構。從直觀的體驗和觀察過渡到后面的抽象,認知負荷會小很多。比如讓學生取扮演小烏龜的運動,讓學生通過卡牌來展示各類排序過程,讓學生通過角色扮演和實物演示來體驗各種問題及解決思路。為學生后面的抽象建模過程提供了體驗基礎,符合認知建構過程。
(3)編程實現解決問題(項目活動3)
給學生們探究時間,允許犯錯,及時反饋,迭代改進。這個時候就是從具體到抽象的提升階段。學生們往往會不知如何下手,兩眼一抹黑。剛才聽的挺明白的,就是不知道怎么通過計算機抽象模擬問題情境,並解決問題。首先要明確問題,理出輸入是什么,輸出是什么?然后,分析如何能處理輸入才能得到輸出的結果;其次,根據需要選取合適的數據類型或數據結構存放數據。最后,通過編程實現問題解決並測試。debug的技巧:熟悉bug的類型,比如語法錯誤,一般運行時會報錯,比較容易發現和修改,這也是初學者經常會犯的;還有邏輯錯誤,比較難去找到bug。能正常運行輸出,但是不是想要的結果。一般在debug的過程中,可以通過輸出語句和注釋功能來逐步查找bug的位置。Debug也是編程學習必不可少的一部分,甚至會比前期的寫代碼時間還要長。
(4)迭代完善(項目活動4)
時間充足情況下,需給學生迭代進行完善的機會。這也是符合基本的工程原則,學生體驗了解了工程思維。一個產品都是從一個稚嫩的雛形開始,經過打磨完善,誕生出來獨一無二的產品。可以讓學生在這個過程記錄迭代過程,文字、圖片或視頻形式都可以。一開始就給學生評價標准,然后按照評價標准去完成任務,這樣他們有的放矢,不至於浪費時間。
(5) 反思分享(項目活動5)
總結反思實踐過程中遇到的困難,如何解決的,如果再碰到類似問題應該如何遷移解決。項目過程中興奮時刻是什么時候?最抓狂時候是什么時候?是如何解決的?
概念可以再次螺旋深入認識和理解。
編程教學一些小技巧: