董 玥
(北京師范大學(xué)附屬實驗中學(xué) 北京 100032)
信息技術(shù)的迅猛發(fā)展,對教育帶來重大挑戰(zhàn),發(fā)展學(xué)生核心素養(yǎng)的內(nèi)容成為課程改革的課程目標(biāo)。依據(jù)新課標(biāo)的要求,信息技術(shù)學(xué)科的核心素養(yǎng)主要包括信息意識、計算思維、數(shù)字化學(xué)習(xí)與創(chuàng)新、信息社會責(zé)任四個方面,這無疑對信息技術(shù)教育教學(xué)提出了很高的要求,需要對課內(nèi)外學(xué)習(xí)內(nèi)容做出很大程度的改變。特別是要將各類青少年編程、機(jī)器人編程課程走進(jìn)中小學(xué)課程和課外實踐課程,來推進(jìn)信息技術(shù)教學(xué)改革。
計算思維由美國卡內(nèi)基·梅隆大學(xué)周以真教授提出,認(rèn)為計算思維是利用計算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行為題求解、系統(tǒng)設(shè)計以及人類行為理解的思維活動[1-3]。從教學(xué)目標(biāo)來看,中小學(xué)的信息技術(shù)和編程教育,需要以思維訓(xùn)練提升核心素養(yǎng)為指導(dǎo)思想,重點培養(yǎng)學(xué)生運用計算機(jī)解決實際問題的能力[4-5]。這樣計算機(jī)編程為學(xué)生帶來的提高不僅僅是技術(shù)層面的模擬,而是上升到思維訓(xùn)練層面,在中小學(xué)信息技術(shù)課程中極為重要。
從中小學(xué)信息技術(shù)教育的目標(biāo)來看,計算機(jī)編程課程重點培養(yǎng)編程思想和解決實際問題的能力。掌握程序設(shè)計的基本常識和主要思想,形成運用計算思維方法解決問題的能力,為進(jìn)一步學(xué)習(xí)其他知識和未來發(fā)展打下堅實的基礎(chǔ)。
編程教育無論是針對小學(xué)生,還是中學(xué)生,其實都是有很好的實施途徑和手段的,適合各個年齡段學(xué)生的學(xué)習(xí)。學(xué)生對于編程的興趣比很多純機(jī)器人硬件的搭建更濃厚,這是由編程語言的嚴(yán)謹(jǐn)性和可糾錯性以及硬件連接的不確定性共同決定的。無論對于小學(xué)生還是中學(xué)生,當(dāng)面臨硬件的搭建再結(jié)合編程一起實現(xiàn)效果的時候,往往會出現(xiàn)很大困難,學(xué)生會不知所措,不知道是硬件出了問題還是軟件的編寫出了問題。這種時候,教師想幫助學(xué)生糾錯其實也是很困難的,往往解決一個或者一組學(xué)生的問題,就會花費很多時間,以至于無暇管理其他同學(xué),這在信息技術(shù)課堂上是經(jīng)常會遇到的難題。因此在開展中小學(xué)編程教育的時候,對于初學(xué)者,我們還是建議以最簡單且單一化的程序語言編程作為入門課程,盡量減少學(xué)生的課堂負(fù)載。讓學(xué)生通過基本的結(jié)構(gòu)化模塊語句或者代碼編寫,先把程序的語言的基本方法和算法思路學(xué)會學(xué)懂,把基礎(chǔ)打好后,再結(jié)合實際的生活場景,配合各種開源硬件或者機(jī)器人套裝教具,來實現(xiàn)軟硬件的結(jié)合。這樣學(xué)生起步較快,基礎(chǔ)牢靠,教師在課堂實施上,也便于把編程語言全面細(xì)致的給學(xué)生進(jìn)行講解。
結(jié)合中小學(xué)生的認(rèn)知水平和課時設(shè)置,編程課程建議可以結(jié)合Scratch 編程、Python 編程、C/C++編程進(jìn)行系列設(shè)置。核心部分,以流行的、通用的開源腳本語言——Python 作為編程語言來講授“高級程序設(shè)計語言”,讓學(xué)生學(xué)會如何利用Python 和計算思維來解決典型的實際問題[6]。
結(jié)合Python 語言特點,在教學(xué)進(jìn)度的安排上,課程可以采取“問題驅(qū)動,急用先學(xué)”的施教策略,在培養(yǎng)解決具體實際問題的意識和能力基礎(chǔ)上,強(qiáng)調(diào)學(xué)生的操作訓(xùn)練[4]。
(1)授課教師需要將計算思維貫穿到課程過程,做到授課內(nèi)容與大綱相符。學(xué)生要求認(rèn)真聽課、積極思考、完成作業(yè)和實驗。
(2)學(xué)好Python 程序設(shè)計重在實踐。講授和學(xué)習(xí)過程都將貫穿實踐環(huán)節(jié),要求學(xué)生積極參與課堂的學(xué)習(xí)討論,獨立思考,認(rèn)真完成課后作業(yè)。
(3)必要的知識記憶,是學(xué)好一門語言的有效途徑,學(xué)生需要通過對典型代碼的記憶,對成熟代碼的閱讀分析,培養(yǎng)編程實踐和解決問題的能力。
另外,Python 綜合了多種高級程序設(shè)計語言的特性,在熟練使用的基礎(chǔ)上應(yīng)進(jìn)行其原理的探究和理解,然而這些內(nèi)容與后續(xù)中小學(xué)編程語言課程(C/C++)有一定交叉,教學(xué)時注意避重,做好鋪墊,點到即可。
課程內(nèi)容設(shè)置,根據(jù)學(xué)生的實際信息技術(shù)水平和計算機(jī)應(yīng)用水平,實現(xiàn)模塊化組織,課程內(nèi)容通過程序設(shè)計的基本思想和一般方法的講授。實現(xiàn)四個層次的單元化教學(xué)。
第一個層次課程內(nèi)容,初步認(rèn)識Python 程序設(shè)計,基本編程環(huán)境。
介紹計算思維理論,鼓勵學(xué)生多思考,培養(yǎng)解決問題的能力。介紹基本的Python編程環(huán)境安裝和語言基礎(chǔ),了解編程基礎(chǔ)知識。
計算思維理論的介紹,主要內(nèi)容包括介紹計算機(jī)解決問題的能力,計算思維理論;程序設(shè)計的硬件基礎(chǔ),語言必要性及要解決的問題,Python 可以解決哪些實際問題,培養(yǎng)興趣和好奇心。講解語言基礎(chǔ),介紹開發(fā)環(huán)境配置與安裝過程,開發(fā)自己的第一個Python 程序,簡單了解編程基礎(chǔ)知識。目前很多Python 的編程環(huán)境供學(xué)生選擇和使用,學(xué)生可以通過個人電腦直接安裝程序,但可能會面臨下載更新各種庫函數(shù)和工具包的困難,這需要教師做有針對性的專門指導(dǎo)。當(dāng)然,學(xué)生也可以通過互聯(lián)網(wǎng),利用在線平臺,以解決版本更新、模塊庫添加,參數(shù)配置等問題。
第二個層次,培養(yǎng)利用Python 解決基本問題的能力,計算思維的初步應(yīng)用和培養(yǎng)。
從計算機(jī)能處理的數(shù)據(jù)類型入手,解決Python 編程的適配范圍。從程序設(shè)計的基本邏輯和流程控制入手,提高學(xué)生利用計算思維和編程解決復(fù)雜問題的能力。
數(shù)值類型等方面,以實際計算問題案例需要,介紹Python的各種數(shù)值類型,演示如何通過運算符解決數(shù)學(xué)計算問題;Python 簡單文件讀寫、圖片、數(shù)值等趣味文件讀取顯示;程序的流程控制方面,引出并講授Python 程序的三種流程結(jié)構(gòu),學(xué)習(xí)控制結(jié)構(gòu)的綜合應(yīng)用,以實際應(yīng)用需求為背景引出,重點講授關(guān)系和邏輯運算、分支結(jié)構(gòu)、for 循環(huán)、whⅰle 循環(huán)的知識,著重培養(yǎng)面向問題的決策流程及控制能力。當(dāng)然,Python 語言的語法結(jié)構(gòu)比較自由,不像C 語言那樣格式特別的嚴(yán)謹(jǐn)和規(guī)范。對于初學(xué)者而言,很多規(guī)則容易忽略,反而增大了程序出錯的幾率和糾錯的難度。在這個問題上,教師一定要特別的注意,在學(xué)生一開始學(xué)習(xí)編寫程序的時候,就一定要把Python 語言的規(guī)則給學(xué)生講解清楚,包括縮進(jìn)、中文字符和英文字符的區(qū)分等等,讓學(xué)生打好基礎(chǔ),盡量避免因程序書寫不規(guī)范甚至錯誤給學(xué)生帶來的畏難情緒和挫敗感。
第三個層次,培養(yǎng)Python 的數(shù)據(jù)結(jié)構(gòu)和函數(shù)模塊復(fù)用概念,提升計算思維解決復(fù)雜問題的處理能力。
從計算機(jī)如何處理稍微大型的任務(wù),從函數(shù)與模塊的代碼服用與管理入手,從復(fù)雜數(shù)據(jù)的結(jié)構(gòu)化管理入手,介紹主要的數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用能力。
函數(shù)與模塊部分,介紹怎么編寫大型Python 程序文件;函數(shù)的聲明、定義和調(diào)用;數(shù)據(jù)結(jié)構(gòu)方面,針對中小學(xué)的認(rèn)知水平,從如何管理復(fù)雜數(shù)據(jù)入手;介紹什么是Python 的數(shù)據(jù)結(jié)構(gòu);列表、元組、字典及字符串?dāng)?shù)據(jù)結(jié)構(gòu)及操作。
由于Python 語言的功能非常強(qiáng)大,可以導(dǎo)入非常多的工具庫,因此在使用的時候,可以完成很多任務(wù),包括可視化,機(jī)器學(xué)習(xí)等。教師可以通過一些具體的實例,讓學(xué)生去逐一接觸和掌握這些工具庫的使用方法和功能。由于現(xiàn)在中小學(xué)人工智能課程的興起,利用Python 語言進(jìn)行人工智能的教學(xué)非常普遍,因此教師也可以將人工智能課程中的一些非常經(jīng)典的實例作為Python 教學(xué)的資源展示介紹給學(xué)生,讓學(xué)生體會到Python 語言在人工智能方面的強(qiáng)大應(yīng)用。
第四個層次,培養(yǎng)Python 的處理文件和Python 類的基本思想。
主要從計算機(jī)程序運行輸入輸出的角度,介紹文件的必要性和使用方法,為完成相關(guān)任務(wù)提供數(shù)據(jù)保存手段。通過對繁雜數(shù)據(jù)的進(jìn)一步歸類,教會學(xué)生用抽象方法進(jìn)行不同信息的歸類、分層次組織。
本層次對學(xué)生的要求其實是很高的,多數(shù)學(xué)生對于軟件的使用和編程語言的編寫掌握起來并不是非常的困難,但是一旦要涉及到各種文件的輸入輸出,完成文件的關(guān)聯(lián)與保存,就會出現(xiàn)不知所措,找不到方法或者不明白彼此的邏輯關(guān)系的問題。在介紹這些方面知識的時候,教師又很難將整節(jié)課都只單一的講解這方面的知識,因為無論從課時安排還是課程內(nèi)容設(shè)計方面,這部分內(nèi)容都不是屬于重點章節(jié)。因此,教師就很有必要在平時的學(xué)習(xí)中,盡量將這些知識滲透到每一次的編程教學(xué)中,讓學(xué)生多練多理解,遇到具體問題具體操作,隨時學(xué)習(xí),隨時記憶,提高學(xué)生學(xué)習(xí)的效果和效率。
文件編程實踐主要內(nèi)容為介紹文件的主要作用及基本讀寫;類和對象通過案例,向?qū)W生介紹體驗面向?qū)ο蠊芾恚皇裁词荘ython 面向?qū)ο?,有何特點;類的屬性和方法定義,對象的創(chuàng)建和使用,舉例解決實際問題,深入淺出了解面向?qū)ο蟮母拍?、各類屬性以及各類方法的定義和使用、繼承。
編程課程,需要通過動手實驗,進(jìn)行編程互動,強(qiáng)化和應(yīng)用計算思維,同學(xué)自己動手安裝Python 開發(fā)環(huán)境,編寫第一個程序。學(xué)會使用函數(shù)和模塊迭代解決原有程序問題,實驗包括各類數(shù)據(jù)結(jié)構(gòu)定義、存取、訪問等使用操作,嘗試解決實際數(shù)據(jù)問題,進(jìn)行趣味性的Python 編寫,培養(yǎng)學(xué)生興趣。課程實驗主要還是面向全體學(xué)生的信息技術(shù)教學(xué),因此在難度的設(shè)置上,盡量要保證讓大多數(shù)學(xué)生都能夠接受。在課堂教學(xué)的設(shè)計上,盡量強(qiáng)調(diào)趣味性與知識性相結(jié)合,實操性與原理性相結(jié)合,過程性評價和考試性評價相結(jié)合,讓學(xué)生能夠以一種比較輕松愉快的情緒來完成對Python 語言的學(xué)習(xí)。畢竟無論是初中還是高中的學(xué)生,在信息技術(shù)課程的學(xué)習(xí)時間都是相對比較少的,除了課上的學(xué)習(xí)時間,一般情況是沒有額外時間來完成信息技術(shù)的家庭作業(yè)的。這就要求教師要盡量把課堂教學(xué)和需要完成的作業(yè),都安排在課內(nèi)進(jìn)行,必須將講授,練習(xí),考核做合理的設(shè)計和安排。
根據(jù)學(xué)習(xí)的程度,可以更進(jìn)一步,層次化教學(xué),培養(yǎng)學(xué)生利用Python 解決實際問題的能力,促進(jìn)計算思維與實際問題的結(jié)合,做到簡單解決實際應(yīng)用的目標(biāo)。對學(xué)有余力的同學(xué),使用Python 編寫GUI 實戰(zhàn),利用Python 中文信息處理基礎(chǔ)實戰(zhàn)編程,利用Python 圖像處理基礎(chǔ)實戰(zhàn)編程,Python數(shù)據(jù)庫編程實戰(zhàn)。對于高中階段的學(xué)生,隨著高中新課標(biāo)的發(fā)布和新課改的進(jìn)行,在人工智能,開源硬件和數(shù)據(jù)處理等選修模塊,Python 語言都有很強(qiáng)的應(yīng)用性和實踐價值,可以通過課外小組和分類分層走班制的途徑,讓對編程有濃厚興趣并且能力較強(qiáng)的學(xué)生,或者是選修過人工智能,開源硬件或者數(shù)據(jù)處理的學(xué)生,進(jìn)一步利用Python 語言,來完成這些模塊的實踐和創(chuàng)新,將Python 語言的功能做到跨領(lǐng)域跨平臺的最大化應(yīng)用。
總體上看,程序設(shè)計的方法是信息學(xué)科的重要基礎(chǔ)工具和思維方法。通常的編程教育,缺乏對編程過程中本身固有的邏輯思維和計算思維訓(xùn)練,對于無編程基礎(chǔ)的基礎(chǔ)教育學(xué)生,純粹的簡單訓(xùn)練容易造成學(xué)生學(xué)習(xí)興趣下降熱情不高。通過計算思維目標(biāo)下的信息技術(shù)課程,對計算機(jī)編程課程內(nèi)容和講授方法的梳理,對綜合信息素養(yǎng)的提升非常重要,后續(xù)需要更多思考和實踐探討[7]。