梁健
摘 要:近年來,隨著對中小學(xué)信息技術(shù)學(xué)科目標(biāo)和價值的討論逐步深入,越來越多教師、學(xué)者認(rèn)為,在中小學(xué)信息技術(shù)課程中,應(yīng)普及計算思維能力的培養(yǎng)。計算思維的本質(zhì)在于抽象,既將實際問題,以清晰的方式進行描述,因而,程序設(shè)計的學(xué)習(xí),無疑最能體現(xiàn)計算機學(xué)科的思維方式。該文針對中學(xué)生計算思維培養(yǎng)的教學(xué)實踐,從程序設(shè)計與計算思維的關(guān)系出發(fā),如何從程序設(shè)計的內(nèi)容編排、教學(xué)目標(biāo)及評價中體現(xiàn)計算思維的核心價值等方面進行了分析與闡述。
關(guān)鍵詞:程序設(shè)計 計算思維 算法 問題求解
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2015)03(a)-0175-02
在中學(xué)信息技術(shù)課程中,程序設(shè)計是重要的教學(xué)內(nèi)容之一。教育部制訂的《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(實驗)》中把“算法與程序設(shè)計”作為獨立的選修模塊,而初中階段現(xiàn)在雖然還沒有國家層面的課程標(biāo)準(zhǔn),但不少省市、地區(qū)的初中教材也納入了程序設(shè)計的內(nèi)容,例如廣州市教材有VB程序設(shè)計。它們都是從提高學(xué)生信息素養(yǎng)的角度出發(fā),培養(yǎng)學(xué)生的邏輯思維能力,以及嚴(yán)謹(jǐn)、全面的思維習(xí)慣。
2004年實施的《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(實驗)》提出要提高學(xué)生的信息素養(yǎng),培養(yǎng)學(xué)生使用信息技術(shù)解決問題的能力[1]。該觀點的提出,指明了中小學(xué)信息技術(shù)的教學(xué)的方向。而現(xiàn)今大數(shù)據(jù)、云計算、智能便攜設(shè)備等新興技術(shù)的發(fā)展,令人與信息技術(shù)工具的關(guān)系更加密切、和諧,信息的加工、處理也更方便簡單,對以提高信息素養(yǎng)為基本目標(biāo)的中學(xué)信息技術(shù)教學(xué)帶來了新發(fā)展機遇和要求。
1 程序設(shè)計與計算思維
程序設(shè)計是計算機科學(xué)的靈魂,正是由程序設(shè)計語言編寫的各種軟件,賦予了計算機協(xié)助人類解決問題的能力。馮·諾依曼提出的體系結(jié)構(gòu)和“儲存程序”思想,一直影響至今。無論計算機硬件的發(fā)展如何改變,它們都是使用預(yù)先設(shè)計好的程序解決特定的問題。縱觀整個計算機科學(xué)發(fā)展的歷史,每一種新技術(shù)、新思維的誕生,幾乎都伴隨著程序設(shè)計語言的發(fā)展創(chuàng)新。例如在二十世紀(jì)九十年代,為解決電視機、鬧鐘、電話等家用電器出現(xiàn)而帶來的控制和通訊問題,誕生了Oak語言;而隨著互聯(lián)網(wǎng)的發(fā)展,Sun公司改造了Oak,誕生了JAVA;貝爾實驗室的Denis Ritchie改善了專為編寫系統(tǒng)軟件而設(shè)的B語言,使之可以直接生成機器代碼,并改名為C語言;為了適應(yīng)“云計算”時代的新要求,蘋果公司發(fā)布了用于IOS和OS X編程swift語言……[2]。
上述的例子可以看出:每一種程序語言的發(fā)展,都是計算機科學(xué)家們在不同時代背景,從不同的應(yīng)用角度下思考得出的結(jié)果。但即使如此,程序設(shè)計的核心還是算法的設(shè)計,而基礎(chǔ)的算法,仍然離不開枚舉、遞歸和分治;程序的實現(xiàn),離不開把數(shù)學(xué)模型轉(zhuǎn)化為計算機模型。因此,為了解計算機科學(xué),需要先了解計算機科學(xué)家們的思考方式,因此也需要重視程序設(shè)計的學(xué)習(xí)。
為回答計算機科學(xué)知識與人類的關(guān)系,2006年3月,美國卡內(nèi)基梅隆大學(xué)計算機科學(xué)系主任周以真教授率先給出并定義了“計算思維”(Computational Thinking)的概念。她認(rèn)為:計算思維是思維過程參與制定問題,并給出它的解決方案,在一臺電腦上以人或機器的方式就可有效地開展。簡單地說,計算思維能力就是像一個計算機科學(xué)家一樣思考的思維能力。計算思維的本質(zhì)是抽象和自動化,其實質(zhì)是“能行、構(gòu)造、模擬”[3],即是通過概括抽象問題、建立問題模型、設(shè)計算法解決問題的過程。而計算思維的關(guān)鍵,就是通過用計算機模擬現(xiàn)實世界,幫助解決人類問題[4]。
理論思維、實驗思維和計算思維是作為科學(xué)思維的方式,共同構(gòu)成了人類的三大思維。計算思維作不一種早已存在的思維活動,它的出現(xiàn)并不能簡單地認(rèn)為是一種新的發(fā)明,而是,是每一名普通人應(yīng)該具備的一種技能。因而,在中學(xué)信息技術(shù)教學(xué)中,可以說計算思維是無處不在。在中學(xué)信息技術(shù)課程中明確地提出“計算思維”,關(guān)鍵是要學(xué)生將無意識的計算思維變成有意識的計算思維,主動地用計算思維去解決問題,應(yīng)用在各自的專業(yè)中。同時,還可以讓更多的中學(xué)生能夠主動地、習(xí)慣地找到利用計算機解決問題的辦法,并且形成主動使用計算機解決問題的思維能力。因此,計算思維除了能解答現(xiàn)時信息技術(shù)課程的困惑外,還對課程的內(nèi)涵,學(xué)生的學(xué)習(xí)目標(biāo)提出了更深刻的要求。我們也需要認(rèn)識到,計算思維與算法思維是有區(qū)別的。計算思維應(yīng)該成為中學(xué)生具備的基本能力,因為在可以預(yù)見的未來,更多的創(chuàng)新、更多的生活上變革都會來自于計算思維,計算思維將成為青年人立足社會、生存與發(fā)展的重要能力。而算法思維只是計算思維的一種,掌握計算思維不應(yīng)只學(xué)習(xí)編程,還要學(xué)習(xí)在多個層次的抽象思維[5],但是學(xué)生可以透過學(xué)習(xí)編程較好地理解和掌握計算思維。
2 以計算思維為核心的程序設(shè)計教學(xué)
2.1 教學(xué)內(nèi)容的調(diào)整
為達(dá)成總體的教學(xué)目標(biāo),程序設(shè)計的教學(xué)內(nèi)容需要得到擴充。在初中階段,學(xué)生應(yīng)該能理解程序設(shè)計的基本思想、基本方法和程序設(shè)計三種基本結(jié)構(gòu),了解一維數(shù)組的使用及枚舉算法的作用。高中階段,結(jié)合《數(shù)學(xué)》課本中《算法初步》的內(nèi)容,學(xué)生應(yīng)在理解流程圖的基礎(chǔ)上,寫出輾轉(zhuǎn)相除、冒泡排序、直接排序、進制轉(zhuǎn)換等相對抽象的程序代碼,具備在一定編程環(huán)境中調(diào)試程序的能力。在學(xué)習(xí)選修模塊方面,學(xué)生應(yīng)能了解子程序的作用、了解遞歸的概念和使用方法。對于力所能及的學(xué)生,應(yīng)能編寫更多的能模擬實際問題的程序代碼。
在教學(xué)內(nèi)容的編排上,應(yīng)該拋棄以往以知識點為主線編排內(nèi)容的辦法,而是以一個個互相聯(lián)系又可以獨立的問題序列,引導(dǎo)學(xué)生分析、模擬、解決問題。下面以“小明的網(wǎng)店”為線索為例說明。
項目一:初開網(wǎng)店。
問題概括:小明為幫助家鄉(xiāng)的果農(nóng)打開銷路,在網(wǎng)上開啟了一間網(wǎng)店;項目要求:假定網(wǎng)站暫時只賣一種水果,設(shè)定水果的單價,及每筆運費,根據(jù)購買者輸入的數(shù)量計算出每筆購買的費用。教師引導(dǎo)學(xué)生把水果的價格、數(shù)量、運費、總價抽象成變量數(shù)據(jù);使用輸入輸出語句及表達(dá)式處理相關(guān)信息(變量數(shù)據(jù));最后引導(dǎo)學(xué)生理解變量、輸入輸出及表達(dá)式的概念。
項目二:遭遇競爭。
問題概括:同類型的網(wǎng)店,向消費者做出買滿150元打九折和買滿100元免運費的促銷活動。從這個項目開始,要求學(xué)生分小組根據(jù)自己過往的經(jīng)驗,提出應(yīng)對的辦法。這種情況下學(xué)生通常提出這樣的方法:(1)做出同樣的促銷活動;(2)為避免惡性競爭,應(yīng)該在不虧本的情況下,進行價格競爭。教師由此引導(dǎo)學(xué)生找出項目二與項目一的區(qū)別,建立分支結(jié)構(gòu)模型,讓學(xué)生觀察流程圖,比較輸入輸出的數(shù)據(jù),理解邏輯表達(dá)式的作用;使用分支語句及邏輯表達(dá)式處理相關(guān)信息,加深對程序邏輯思維的理解。
項目三:籌劃未來。
問題概括:經(jīng)歷一次價格競爭,網(wǎng)店堅持下來,小明需要為網(wǎng)店的未來發(fā)展籌劃;經(jīng)過學(xué)生小組討論,學(xué)生大概會提出增加銷售種類、控制成本、廣告宣傳等方法。教師應(yīng)鼓勵學(xué)生的各種想法,并把一些簡單可行的想法設(shè)計成計算機可以執(zhí)行的程序,例如控制成本和廣告宣傳的方法。我們可以給予學(xué)生各種成本的數(shù)據(jù),包括人員平均薪酬,每月水、電費,水果的成本,一次性投資(購買電腦和網(wǎng)店保證金)等等;也可以給出水果售價和手機平臺推送消息對銷售情況影響的數(shù)據(jù),例如按月計算售價每降低10%,就會提高15%的銷售額,每月使用成本的10%做微信推送費,可以提高12%的銷售額等等。然后引導(dǎo)學(xué)生從這些問題中,提取出(抽象)出相應(yīng)的數(shù)學(xué)模型,形成變量、表達(dá)式和運算結(jié)構(gòu),先是要求學(xué)生計算最低售價和回本時間,制作一個計算水果最低售價的軟件及有關(guān)宣傳及利潤關(guān)系的計算程序,并生成可執(zhí)行文件,代替人工計算。在這個項目中,開始體現(xiàn)計算對現(xiàn)代生活的重要性,重點是讓學(xué)生開始完整地體會使用計算思維的全過程,即“能行—抽象—模擬—設(shè)計—自動化”的過程,并且了解在信息時代,數(shù)據(jù)和信息也是重要的資產(chǎn)和財富。
項目四:挖掘信息;問題概括:網(wǎng)店已經(jīng)運營了一年,掌握了大量信息,例如客戶的購買情況,“粉絲”的數(shù)量,好評率等等。我們應(yīng)該如何運用這些信息?仍然要求學(xué)生先自行尋找方案,引導(dǎo)學(xué)生把一些可行的想法設(shè)計成計算機可以執(zhí)行的程序。例如:(1)分析每天的購買情況,得出每個時段的購買情況,從而安排“店小二”的上班時間;(2)遍歷一遍所有“粉絲”,找出“大客戶”,安排人員跟蹤服務(wù);(3)根據(jù)四個季節(jié)種類水果的銷售情況和倉庫容量,設(shè)計出可行的每種水果的最小庫存量和最大庫存量;(4)根據(jù)“粉絲”數(shù)量和銷售情況,計算出每產(chǎn)生一位“粉絲”所需的成本,和“粉絲”每日的購買率,定出未來發(fā)展藍(lán)圖。繼續(xù)從“能行—抽象—模擬—設(shè)計—自動化”的過程引導(dǎo)學(xué)生解決這些問題,從而讓學(xué)生學(xué)習(xí)循環(huán)結(jié)構(gòu)、枚舉法、輾轉(zhuǎn)相除法(最大公約數(shù)、最小公倍數(shù))的使用。項目四的重點是引導(dǎo)學(xué)生體會通過計算思維加工信息,可以創(chuàng)造出新的價值。
以上的每一個項目都是較為開放的主題內(nèi)容,學(xué)生根據(jù)老師的引導(dǎo),把問題模型抽象成算法描述,然后形成程序達(dá)到自動化,通過計算思維體會從“具體—抽象—具體”的過程[6],深切體會到計算機學(xué)科獨特的思維對社會生產(chǎn)帶來不可替代的貢獻(xiàn)。
2.2 教學(xué)方式的調(diào)整
以皮亞杰為代表的心理學(xué)家認(rèn)為:思維是不可直接教的[7],而需要在生活中領(lǐng)悟和積累。而計算思維則是解決問題的思維方法,信息處理的過程即利用計算機特點求解問題的過程[8]。
由此可見,以編程為載體的計算思維教學(xué)不應(yīng)再著重傳授知識點和處理信息的方法,而應(yīng)以問題為引導(dǎo)展開教學(xué)線索,并以問題的解決最終目的,讓學(xué)生多參與實踐活動,通過判斷和推理找到有效的思維方法,從而理解計算機學(xué)科獨特的思維方式,理解計算思維對信息時代科技革新的推動作用,形成學(xué)習(xí)計算機科學(xué)創(chuàng)造美好生活的愿望。
2.3 教學(xué)實踐的反思
程序設(shè)計的必經(jīng)階段包含調(diào)試編譯。而計算思維中也有使用容錯、糾錯的方式幫助保護系統(tǒng)和編譯,它們都有從時間、空間的消耗考慮,提出更高效算法的要求,其目標(biāo)都是使解決方案或程序以螺旋上升的狀態(tài)不斷完善。同樣地,以計算思維為核心的程序設(shè)計教學(xué)也需要呈現(xiàn)這種過程,只是對象變成了教學(xué)的主體——學(xué)生。及時地反饋和評價可以幫助我們實現(xiàn)這個過程。評價可以在教學(xué)的各個階段發(fā)生,評價的實施者可以是老師,也可以是小組;可以是量性客觀評價(例如程序的時間、空間復(fù)雜度),也可以是主觀評價(例如是代碼的易讀性、創(chuàng)造性和友好的界面等等)。這些評價都在促進螺旋上升的過程,幫助學(xué)生在良好的科學(xué)探索氣氛下得到更全面的發(fā)展。
調(diào)整后的學(xué)習(xí)內(nèi)容是由幾個開放的結(jié)構(gòu)單元組成,學(xué)生除了學(xué)習(xí)程序設(shè)計知識外,也要從中形成解決方案。他們可以使用不同的數(shù)據(jù)結(jié)構(gòu)、算法,編寫不同的程序代碼;也可以從不同的角度,用不同的觀點形成解決方案。教師要鼓勵學(xué)生們存在不同的認(rèn)知,不同的觀點,鼓勵思維的多樣性[9]。
3 結(jié)語
雖然學(xué)習(xí)程序設(shè)計不是培養(yǎng)計算思維的唯一途徑,但是作為計算機科學(xué)最本源的一門課程,它的諸多理念、思維和算法仍然是現(xiàn)代科技發(fā)展的基礎(chǔ),并沒有隨著時代發(fā)展而被拋棄。中學(xué)生可以在學(xué)習(xí)程序設(shè)計的過程中,理解計算思維的本質(zhì)和內(nèi)涵,為終身發(fā)展打下堅實的基礎(chǔ)。
參考文獻(xiàn)
[1] 普通高中信息技術(shù)課程標(biāo)準(zhǔn)(實驗)[M].北京:人民教育出版社,2003:5-8.
[2] 張愛香.計算機語言發(fā)展歷程綜述[J].中國科技信息,2013(24):18-19.
[3] 劉向永.計算思維改變信息技術(shù)課程[J].中國信息技術(shù)教育,2013(6):5-12.
[4] 楊俊生,張潤.基于計算思維的C程序設(shè)計案例設(shè)計初探[J].工業(yè)和信息化教育,2013(6):65-69.
[5] 李廉.計算思維—概念與挑戰(zhàn)[J].中國大學(xué)教育,2012(1):7-9.
[6] 王榮良.計算思維教育[M].上海:上??萍即髮W(xué)出版社,2014:67-71.
[7] Gerd Mietzel,張鳳鳳,金建,等.心理學(xué)入門[M].北京:中央編譯出版社,2011:341-343.
[8] 賀完香,史寶明.漸進式PBL高效建立編程思維[J].現(xiàn)代計算機,2013(2):37-39.
[9] 丁金鳳.基于計算思維的程序設(shè)計類課程教學(xué)實踐[J].計算機教育,2012(12):65-68.