林偉+樊磊



【摘 要】文章從追溯計算思維概念產生的歷史背景出發,分析了國內外相關的研究現狀及趨勢,提出了一種以Python語言編程教學為基礎、基于計算思維的信息技術問題求解模型的高中信息技術課程實施策略。該策略的核心是通過研究學生現實生活中的問題,培養、發展學生的計算思維,解決信息技術教學的工具化、碎片化問題,深化信息技術與其他學科的融合。
【關鍵詞】信息技術教學;計算思維;Python語言;問題求解;信息技術問題;求解模型
中圖分類號:G632 文獻標識碼:A 文章編號:1671-0568(2017)30-0010-04
在信息社會中,學生的信息技術素養,特別是計算思維的能力,已經成為未來職業生涯的核心競爭力之一。近年來,國際上很多發達國家都在K12教育中加強了計算機科學及編程的教學,目標在于培養與發展學生的計算思維,以應對21世紀的信息化挑戰。我國正在修訂的《高中信息技術課程標準》也將計算思維作為學科核心素養之一加以強調。計算思維的發展和提高是一個長期學習、實踐和體驗的累積,不可能僅僅依靠一門或幾門課程來完成。高中信息技術課程是系統化培養學生計算思維的重要途徑之一,探討在高中信息技術教學實踐中如何適應這個重大改變、貫徹培養目標,成為擺在信息技術教學的研究者和廣大信息技術教師面前的重要課題。
一、研究背景及現狀
計算思維概念源自20世紀80年代的算法思維概念。計算思維這個術語是S.Papert在1996年發表的一篇數學教育論文中首次使用的。2006年,美國卡內基·梅隆大學的周以真教授在Communications of the ACM的觀點專欄上發表了題為“計算思維”的文章,并在2008年的文章中對計算思維做了進一步解讀。此后幾年里,觀點專欄還陸續發表了其他學者關于計算思維的論述,其中比較有代表性的包括P.Denning的文章。
根據周以真等人的觀點,計算思維是在敘述問題及求解問題過程中的一種思維過程,其目標在于將問題表示為可通過信息處理手段有效求解的形式。美國國家科學基金會在2009年將計算思維解釋為“計算概念、方法、技術和工具方面的素養”。此外,學者普遍認為,計算思維應該是每個人都應具備的基本技能,而不僅僅屬于計算機科學領域專家或主修計算機專業的學生,這一觀念也得到了教育界的廣泛認同。
從2006年開始,計算思維的觀念開始在大學計算機通識教育中產生影響。在2010年首屆計算機基礎課程研討會上,九校聯盟確定了將培養計算思維能力作為計算機基礎教學的核心任務,大學的計算機教育全面啟動了從計算機文化導向到計算思維導向的新一輪改革。從2012年開始,召開每年一屆的“計算思維與大學計算機課程教學改革研討會”,并出版了大量以計算思維導向的大學計算機改革教材。世界各國也充分重視計算思維在K12教育中的價值,紛紛做出響應和指導性的規劃,目的在于使學生能更好地應對21世紀的信息化挑戰。例如,2008年,美國國家計算機科學技術教師協會發布了名為Computational thinking: a problem solving tool for every classroom的報告,對計算思維在課堂教學中的價值和應用進行了詳細的闡述。
在我國,許多學者對計算思維在信息技術教育中的價值和作用做了積極的理論探討和實踐研究。
盡管已經有為數不少的理論研究和實踐嘗試,但有關計算思維的概念界定及適用范圍(與設計思維、創新思維的關系)等方面仍存在爭議,其自身也尚無形式完整的理論體系和方法論。同時,計算思維是伴隨整個計算學科高速演化著的一個動態概念,需要不斷地從計算學科中汲取、補充創新觀念和方法,豐富計算思維的內涵和應用范例。
與大學的計算機通識教育相比,在基礎教育中計算思維的觀念還遠未得到認同和普及,即使是對信息技術課程的教學也還沒有產生本質的影響,與計算思維相關的教學活動呈現概念化(究竟什么是計算思維的爭論)、工具化(計算思維與編程教學等同)、碎片化(以片面的形式出現在創新教育、創客及STEM課程中)等問題。正在修訂的《高中信息技術課程標準》(草稿)中,將計算思維列為信息技術學科核心素養之一,同時明確了將“發展計算思維”作為信息技術課程的目標之一。修訂標準的實施為高中信息技術教育的未來提供了全新的機會與挑戰。
二、Python語言特點與教學價值
在當前的信息技術教學中,與信息技術核心概念相關的理論部分主要通過課堂講授或編程教學來體現,而注重應用的內容則通過一些具體的軟件工具和實操教學來完成。兩者并無緊密關聯,但又共同構成信息技術課程的主體。這種結構造成了信息技術理論與應用的割裂,所帶來的弊端非常明顯,同時也是造成信息技術教學工具化的主要原因之一。多年信息技術教學實踐表明:信息技術課程中的編程教學與訓練在培養學生計算思維能力方面無可替代。
在中學編程教學中普遍采用的語言包括C語言、Java和VB等,其中尤以采納VB的居多,使信息技術教學出現了“工具是最新的、語言是最老的”之奇特現象。無論從學科整合的需要還是從實際應用方面看,這些語言都不適合作為中學的教學語言,與社會發展及學生成長的要求脫節。因此,信息技術教學中迫切需要引入一種(或多種)既迎合技術應用趨勢,又能滿足中學課堂教學需要的編程語言。
作為一種現代編程思想的產物,Python語言具有語法簡單、開源、跨平臺、擴展性強等諸多特點,且擁有眾多功能強大的應用擴展庫,是名副其實的“膠水語言”,被眾多領域的主流應用(如可視化、生物信息學、大數據分析等等)采納為開發首選語言。具體地講,在高中信息技術課程中使用Python語言,具有以下幾個方面的優勢:
第一,從計算機科學觀點看,Python是一種較中性的語言,既吸納了近二十年來編程語言領域中的重要研究成果和新概念(如Lambda機制),同時也不冒進,在語言的最基本內核層面上極少采用不成熟的或未經考驗的新編程機制,使用Python語言實踐學科核心概念、思想和方法(數據與計算、算法、計算思維等)值得期待。endprint
第二,從運行機制方面看,Python同時具備解釋型、編譯型和腳本型語言的共同特點;Python支持類、模塊化及多重繼承等面向對象核心概念,可以看作是一種面向對象的編程語言;Python還是一種函數式編程語言,其語言結構和使用方法與數學語言很類似,非常方便與數理學科融合。
第三,從開發環境看,Python的開發環境支持所有主流操作系統和平臺,不但包括Windows,OS X,Linux等三大PC操作系統,也可以通過擴展庫支持Web應用及安卓、iOS移動應用開發;使用Python編寫的應用幾乎不用做任何改變就可以跨平臺運行。
第四,從擴展硬件方面看,Python的開源硬件接口庫種類繁多、功能完善,基本覆蓋了當前基礎教育領域中用到的擴展硬件,其中Python對3D打印,Arduino和Raspberry Pi的支持和資源尤為完善。基于Python發展各類創客活動或STEAM課程既簡單易行又豐富多彩,以便在信息技術課程中實現。
第五,從語言支持服務方面看,Python是典型的開源平臺,與C/C++,JavaSript等重要編程語言有很好的應用庫共享機制,同時在全球范圍內還有眾多的Python愛好者/志愿者、編程社區和資源網站(包括中文資源)作為堅強的支持后盾。
第六,從應用層面看,Python有大量各種各樣的庫/框架,使得開發者僅寫相對較少的代碼就可以完成令人印象深刻的準專業級應用。例如,Pygame框架可用于寫2D游戲,GTK庫可用于創建窗口應用,Django框架可以用于設計Web應用,Kivy可以用于創建Android程序,NumPy和Matplotlib可以用于數學和任何理科類計算,Pandas和D3庫可以用于數據可視化,OpenCV(SimpleCV)可用于創建機器視覺高級應用,scikit-learn可以開發專業機器學習應用,ArcGIS可用于建立GIS程序……眾多的專業庫/框架以及對移動設備的支持,讓學生有機會利用信息技術手段發現、分析、解決生活學習中遇到的真實問題,而這是達成計算思維培養目標的必經之路。
第七,從教學實施情況看,Python特別適合做數據處理(數據管理、數據可視化、大數據分析等)相關的應用,與新課標的理念非常吻合。同時,Python也是最易學易用的現代編程語言之一(其設計初衷之一就是讓非專業人員容易讀懂程序代碼),已經成為國內外眾多高校計算機通識課程中所使用的首選編程語言,這個特點非常有利于高中-大學學科學習的銜接和持續。此外,Python還支持風靡歐美教育界的“神器”-Minecraft(我的世界),學生在Minecraft可以使用Python直接為自己的化身發送指令、與他人合作或對抗。
三、基于Python的高中信息技術教學重構
基于以上背景,在高中信息技術課程教學中運用Python語言似乎順理成章。但是,采用一種全新的編程語言教學就意味著要對整個教學內容、教學環境、教學資源和評價方法進行重構,還要對信息技術教師進行重新培訓,涉及的問題相當復雜。
筆者及合作者很早就開始嘗試在各個層面上的信息技術課堂及課外活動中使用Python語言進行編程教學,研究了在廣義信息技術教育中,利用編程教學發展學生計算思維的各種途徑,包括支持創客課程開發、學科整合(如與數學和物理的整合)等方面。基于先前的實踐經驗和理論研究,筆者認為:Python語言的內在邏輯與現代信息技術基礎架構高度協調,基于Python重構高中信息技術教學,有望將信息技術及相關課程、活動、項目連接為一個整體,通過為學生提供充分的、由淺入深的問題求解體驗,逐項落實計算思維培養的目標,從而實現課標所倡導的信息技術學科的核心價值。
圖1說明了Python作為“膠水語言”,在連接課堂教學、課外活動與學生實踐(與其他學科的整合)中的橋梁作用。
基于這種理解,我們建議圖2所示的信息技術教學的重構模型。
其中,Python語言的部分需結合課程標準必須掌握的模塊的要求,能完成對學科概念、基本算法、數據輸入輸出和基本計算與處理工作,這包括了Python的環境配置、基本語句、數據類型、控制結構、函數和基本庫等內容。
對非專業人員而言,Python的版本選擇和環境配置是一個相對復雜的問題。我們采用開源的Anaconda發行包及Python 3.x版本。Anaconda發行包同時支持Python 3.x和Python 2.x版本,自帶安裝程序,包含了多種流行開發環境(我們測試過的環境包括是Spyder和IPython),以及在高中教學中可能用到的所有Python擴展庫或框架。
四、編程教學、問題求解與計算思維
如前所述,計算思維聚焦在敘述問題和解決問題過程中的信息處理,從這個觀點上看,計算思維可以理解為求解信息處理問題時的思維方式,編程語言可以看成描述信息處理過程的形式語言,而編程則是基于信息的推理活動(計算也是一種推理)。編程語言/編程在表示/求解信息處理問題中的作用類似于抽象/邏輯在求解數學問題的表示和推理。
著名數學家G.Polya在其專著“怎樣解題”中提出過一個(數學)問題求解的模型,圖3顯示了這個模型的核心內容:
基于Polya的模型,我們提出下列基于計算思維的問題敘述與求解模型(如圖4),在這個模型中,我們特別強調問題的敘述(正確地提出問題、表示問題)、基于信息的問題求解過程(設計算法與編程實現)及求解方案評估(效率、時間和精度等)這幾個重要的方法論特點,這既體現了與一般問題求解過程的顯著不同,同時也表明計算思維的培養是一個逐漸積累和不斷優化的迭代過程。筆者認為,只有將問題理解(包括敘述和表示)和求解(算法設計、實現、評估、優化)看成一個整體,才能真正體現出計算思維的真正價值,同時也較好地解決了編程教學中的碎片化等問題。endprint
基于以上模型,筆者將高中信息技術課程標準所涉及的學科知識、基礎算法和數據處理等方面的知識和典型應用場景等,以各種項目的形式由淺入深地融入Python編程教學中,還精選了若干應用計算思維的典型案例供學習分析,這些案例涉及個人隱私、信息安全、網上購物、在線交流、共享經濟等應用情境,既與學生的生活息息相關,增強他們的信息意識,也能體現社會信息化的發展,以及計算思維和Python編程在信息技術教育中的獨特作用。
五、總結與展望
初步實踐表明,基于Python環境及計算思維的觀念對高中信息技術教育進行重構,不僅必要,而且可行。同時,在“K12教育”中系統地使用計算思維指導教學還是新生事物,無論是理念上、實踐上還是資源上,都還存在很多問題,比較突出的問題包括:領導信息意識不夠,對信息技術教學的整體關注不足;信息技術教師知識體系的重建;適合高中課堂教學的資源匱乏;缺乏本地化全中文Python平臺等,至今沒有一種經過教學檢驗的計算思維及信息技術核心素養的評估體系是最大的問題。
在信息時代,傳統思維方式仍然具有重要的教育價值,計算思維既不是傳統思維的替代,也非學生創新思維培養的全部,計算思維必須融入更宏觀的思維框架中(如系統化思維、設計思維),才能更有效地發揮其應有的作用。隨著新課程標準的頒布,以及面向立德樹人、核心素養的各項教育改革措施的陸續實施,計算思維與編程教學一定會超越信息技術學科本身,在培養未來創新型人才方面發揮更大作用。
參考文獻:
[1] S.Papert,An exploration in the space of mathematics educations [J].International Journal of Computers for Mathematical Learning,1(1),1996.
[2] J.Wing,Computational Thinking[J].Communications of the ACM,Vol.49(3),2006.
[3] J.Wing,Computational thinking and thinking about computing[J].Philosophical Transactions of the Royal Society A,2008.
[4] P. Denning,Beyond Computational Thinking[J].Communications of the ACM,Vol.52(6),2009.
[5] A.Tucker(ed),Computing Handbook (2nd Ed)[M].CRC Press,2014.
[6] 王萬良,樊磊,信息素質有助于抽象概念理解[J].黑龍江高教研究,2005,(12).
[7] 李廉.計算思維—概念與挑戰[J].中國大學教學,2007,(1).
[8] 范紅.計算思維的培養國際研究綜述[J].中國信息技術教育,2013,(6).
[9] 董榮勝.計算思維與計算機導論[J].計算機科學,2009,36,(4).
[10] 牟琴,譚良.計算思維的研究及其進展[J].計算機科學,2011,(3).
[11] 牟琴,譚良,周雄峻.基于計算思維的任務驅動式教學模式的研究[J].現代教育技術,2011,(6).
[12] 九校聯盟.九校聯盟(C9)計算機基礎教學發展戰略聯合聲明[J].中國大學教學,2010,(9).
[13] 第一屆“計算思維與大學計算機課程教學改革研討會”在西安舉辦[J].中國大學教學,2012,(8).
[14] 陳國良,董榮勝,計算機思維與大學計算機基礎教育[J].中國大學教學,2011,(1).
[15] 朱亞宗.論計算機思維——計算機思維的科學定位、基本原理及創新路徑[J].計算機科學,2009(4).
[16] 馮博琴.對于計算思維能力培養“落地”問題的探討[J].中國大學教學,2012(9).
[17] 陳杰華,程序設計課程中強化計算思維訓練的實踐探索[J].計算機教育,2009(20): 84-85.
[18] 張學軍,郭夢婷,李華.高中信息技術課程蘊含的計算思維分析[J].電化教育研究,2015,(8).
[19] 楊健.高中信息技術基礎教學中計算思維培養的案例研究[J].中小學信息技術教育,2016,(7).
[20] 倪俊杰.在信息技術課堂上提升學生的計算思維[J].教育研究與評論(技術教育),2015,(1).
[21] 陳玥,基于計算機思維的中學信息技術教育的研究[D].蘇州:江蘇揚州大學,2012.
[22] 李俊杰,高中信息技術課程教學中計算思維培養的策略探析[J].中國信息技術教育,2014,(12).
[23] G.波利亞.怎樣解題——數學思維的新方法[M].涂泓,馮承天譯,上海:上海科技教育出版社,2011.
(編輯:易繼斌)endprint