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