程書志
(太湖縣師訓科教中心 安徽安慶 246400)
計算思維是當前信息技術教育教學中十分關注的主題,但大多數研究集中在大學計算機課程中。隨著《普通高中信息技術課程標準(2017年版)》的推出,計算思維作為信息技術學科四大核心素養(yǎng)之一,成為信息技術教師的高頻話題,在信息技術教學中也要注意如何落實學生計算思維素養(yǎng)。程序設計知識作為初中教材的重要內容且銜接高中教材,備受師生關注。從邏輯上講,一個程序是對許多計算示例的簡明而有限的描述,每個程序都包含一個可能的無限過程。而計算思維可將一個復雜問題通過轉化、化簡等方法簡述成一個易于解決、快速理解的問題,可看出,在程序設計中對學生進行計算思維培養(yǎng)是有捷徑可走的。本文試以研讀八年級下冊第二單元程序編寫初體驗中的活動3“出租車計費程序”來探索培養(yǎng)學生計算思維的方法。
安徽省初中階段使用的信息技術教材是安徽省教科院編著的義務教育階段新課程實驗教科書(非零起點),教材是項目式結構,由現實生活中的問題開始引發(fā)學生思考如何解決問題,一個單元可作為一個項目來解決,在解決問題的過程中學習新知識、構建新的知識體系。要想在課堂教學中落實學生計算思維素養(yǎng),離不開教材,因此教師要研讀教材,發(fā)掘哪些知識點可以用于計算思維培養(yǎng)。
圖1 算法流程圖
“計算思維”由周以真教授在2006年首次提出并進行定義,較為公認的計算思維最具本質的特征是抽象和自動化。教學中,為了體現計算思維這種抽象特性和自動化本質,就需要教師對教材進行一定的彌補和轉化。計算思維的抽象性表現在先將具體問題進行分析、提煉、構建,然后構造解決問題的算法,再采用符號化的形式抽象出來。例如,在“出租車計費程序”這個活動中,教材給的問題情境是“某市出租車的起步價為2.5公里以內8元,超過2.5公里的路程,按每公里1.5元計價?!痹谶@個問題上,教師可以繼續(xù)追問:如果你是司機,是不是希望自己只要輸入乘客行駛的路程,馬上就能顯示乘客要支付的費用?我們如何直接得出結果?這時教師帶領學生一起分析,發(fā)現此問題可抽象成2個小問題,即出租車行駛了2.5公里以內,直接就可以得出8元的結果;如果超過2.5公里,則要進行計算求解。這個過程使用自然語言來描述就是:輸入公里數,如果0<≤25,則=8,否則=8+(-25)×15,輸出應付費用。然后進一步構造解決問題的算法,用程序語言中的選擇結構來實現這個二選一的問題,再將問題及其解法用流程圖的形式表現出來(如圖1)。
這個問題求解過程就是計算思維抽象性的本質。教師通過追問問題到分析問題的過程、抽象解法到流程圖描述算法等一系列步驟的呈現,學生不僅學會了分析問題,計算思維能力也得到了提升。
通過算法的代碼實現以及在機器上運行求解實現是計算思維中的自動化展現。教材是通過VB編程語言來實現出租車計費程序,學生使用選擇語句來完成問題中二選一的問題,再通過調試程序檢驗是否可以正確運行,能否按照之前的算法完成任務并得到正確的結果。學生使用VB編程完成這種抽象的解釋和程序的自動運行,能較深刻地體會到計算思維的自動化本質。
圖2 計算思維活動模型圖
計算的目的在于問題解決,而思維的目的在于問題解決和創(chuàng)新發(fā)現,所以計算思維的目的也在于問題解決,它是運用計算的方法進行一般問題的求解、系統(tǒng)的設計和人類行為的理解?!皢栴}解決說”也因此獲得眾多學者和機構的認同。2011年,國際教育技術協會ISTE分會和CSTA計算機科學教師協會共同制定了中小學計算思維課程框架,明確將計算思維定義為解決問題的一種過程,這一過程包括問題確定、數據分析、抽象表示、算法設計、方案評估、概括遷移等六個環(huán)節(jié)。人們用計算機能夠識別的方式來告訴計算機做什么以及如何做,這就使得問題的解決變?yōu)榱怂惴ǖ拿枋龊统绦虻木帉憽S嬎闼季S是基于計算模型(環(huán)境)和約束來解決問題,在問題求解的過程中所使用的方法思路和步驟就是算法。無論是用自然語言、流程圖,還是用其他方式來描述算法,最終目的都是將算法變成能在計算機中執(zhí)行的程序,算法厘清了解決這些問題的思路,學生就可以通過自己編寫相關程序來實現算法。
結合計算思維的定義以及參考費海明《中小學生計算思維培育的路徑與策略》一文中的算法構建式教學方法,即讓學生對任務實踐中的技術進行抽象,從個別到一般構建算法、再從一般到個別檢驗算法,在此過程中培育計算思維。對程序設計教材內容進行分析,將計算思維方法滲透于教學活動過程,構建計算思維活動模型(如圖2),通過這樣六步活動來解決問題。下面就以“出租車計費程序”這個小程序為例,來看這些教學活動在課堂教學中的實施步驟。第一步:將問題呈現給學生;第二步:通過分析問題,將問題抽象成可用變量表示的兩段公式;第三步:設計算法流程圖,對于初學者可先將問題用自然語言進行描述,再轉化成算法流程圖,更易于學生理解;第四步:編寫程序,在學生初學程序設計內容時,計算思維的培養(yǎng)重點應強調理解(和能夠有效執(zhí)行)計算的過程,為了讓學生更好地理解計算思維的思想,可給出部分代碼;第五步:調試程序,在調試過程中學生需要體會選擇結構中條件的作用,了解程序執(zhí)行的有窮性、正確性、有效性,將教材“知識庫”中關于算法及其特性的內容在此環(huán)節(jié)對學生介紹,并讓學生上機體會,學生計算思維能力得到發(fā)展,更有利于后續(xù)的概括遷移;第六步:概括遷移,可利用 “創(chuàng)新園”中的練習2修改出租車計費標準,按照前五步的教學活動模式來重新設計程序,還可將課堂所學知識點遷移到單元活動2中“圓面積計算程序”,增加一個判斷輸入半徑為負數的功能,并給出提示信息。在此過程中,學生進一步理解了選擇結構的算法思想,也進一步體會到了在問題求解過程中計算思維的自動化特征。
計算思維培育需要合適的資源、有效的實踐活動、教學策略與教學方法的創(chuàng)新和應用。按照六步教學活動構建課堂,學生從具體的問題到抽象的問題然后到算法的設計,再從編寫程序到調試程序,最終通過概念遷移回歸問題,可以較為自然地構建計算思維。
計算思維首先來自計算機科學,它兼具計算和思維的特質,經過近十幾年的研究與發(fā)展,已經成為人類所應具備的基本思維,與理論思維、實驗思維并稱為世界三大科學思維。隨著計算機的普及,計算機能解決的問題越來越多,計算機變成了人類思維的執(zhí)行者,人類思維的內容和方式也發(fā)生了變化。
那么,教師在課堂教學中如何去評價和檢測學生的計算思維能力呢?我們試從計算思維定義出發(fā),一是從計算和問題求解的角度來評價,它可以脫離編程對學生進行評價。這種評價強調學生成為計算思考者,思考如何在數據中發(fā)現規(guī)律、如何將問題抽象處理甚至可以建立模型。二是從計算機科學和編程的角度來評價,計算思維是通過約簡、嵌入、轉化以及仿真的方法來解決問題,是一種遞歸思維,其中包含了變量、循環(huán)、程序編寫與調試、算法優(yōu)化等編程概念和方法。學生用程序來解決問題,就可以用其編程表現去評價他們的計算思維。下面是以“出租車計費程序”一課為例設計出的計算思維評價表,表1是計算和問題求解角度評價表,表2是計算機科學和編程角度評價表。
表1 計算和問題求解角度學習評價表
表2 計算機科學和編寫程序角度學習評價表
兩個表格中的評價內容隨著課堂內容不同而作了不同的設計,但要點是將學習內容分兩個角度去呈現,這樣學生對自己的學習行為和能力有所了解,教師也可以通過表格看出學生計算思維能力得到了怎樣的發(fā)展和提升。兩個表格也向學生展示了計算思維的構建過程,讓學生明白提高計算思維素養(yǎng)比單純操作計算機更為重要。
培養(yǎng)學生的計算思維,是為了讓學生能像計算機學科專家一樣形成用計算機求解問題的特有思維習慣及思維方式。雖然計算思維能力的培養(yǎng)非一日之功,但信息技術學科教學尤其是程序設計的內容能更好地培養(yǎng)學生從生活中的問題求解過渡到學會用計算機進行問題求解。本文主要通過具體的課堂教學案例,探索利用信息技術教材發(fā)現計算思維本質,探討如何將計算思維融入程序設計課堂教學中的方法。