計算思維:編程教育的價值追求
陸平:江蘇省信息技術特級教師,淮陰師範學院兼職副教授,淮安市陸平特級教師工作室領銜人,全國NOI優秀輔導教師。
我們在「編程」的旅途中,時常有茫然失措、忘了初心的感覺。為什麼要踏上編程之旅?為什麼要帶孩子們一起編程?有個聲音不早不晚地出現:因為通過編程,可以讓孩子們擁有與讀、寫、算同等重要的認知能力——計算思維!
是的,計算思維是我們俯下身子和計算機對話的入口,也是編程學習漫漫歷程中對編程學科本質的一種洞見。
計算思維的提出,最早可回溯到美國麻省理工學院(MIT)的西蒙·帕佩特(Seymour Papert)教授。美國卡內基梅隆大學的周以真教授則對其進行了系統闡述和推廣。周以真教授認為,計算思維代表著一種普遍的認識和一類普適的技能,每一個人,都應熱心於它的學習和運用。而習得計算思維,則能讓我們「像計算機科學家一樣思考」。對於計算思維,她是這樣定義的:「計算思維涉及運用計算機科學的基礎概念去求解問題、設計系統和理解人類的行為。計算思維涵蓋了反映計算機科學之廣泛性的一系列思維活動。」進一步地,她做了如下闡釋:「計算思維就是把一個看起來困難的問題重新闡述成一個我們知道怎樣解決的問題,如通過約簡、嵌入、轉化和模擬的方法」「計算思維是一種遞推思維,它把代碼譯成數據,又把數據譯成代碼」「計算思維採用抽象和分解迎戰浩大複雜的任務或設計複雜的系統」「計算思維的本質是抽象和自動化」。哈爾濱工業大學戰德臣等人則用「計算之樹」給出了計算思維多維度表述框架,認為「0和1」「程序」「遞歸」三大思維最為重要。
計算思維的概念眾說紛紜,即便如此,依然讓編程教育發現了自己的價值追求和行走路徑。
編 程
一棵鍵盤裡長出的計算之樹
2016年4月,我為高一學生上了一節題為《演算法的質疑與拓展》的程序設計研究課。沒有教材,沒有語言的限制。教什麼?幾經思考,我選擇計算機奇偶校驗模擬軟體設計與製作來詮釋演算法,以滲透計算思維訓練,並在演算法的質疑與拓展中豐富學生對演算法的理解和技術哲學的思考。
【開局】
2016年3月9日,「人狗大戰」迎來首輪戰局。經過三個多小時鏖戰,九段李世石向「阿爾法狗」(AlphaGo)投子認輸。問題:1.李世石究竟輸給了誰?2.演算法究竟是什麼?3.計算機是如何工作的?
課的設計圍繞「演算法是什麼、計算機是如何工作的」的設問與如何培養計算思維兩條線索展開。
【演算法分析】
藉助「小魔術」,揭秘計算機檢測錯誤的方法:奇偶校驗法。繼而尋找解決問題的方法和步驟。
玩法:出示25張整齊排列的牌,一面黑色,一面白色。第一步:請一位學生任意翻動牌。第二步:老師說「為了增加難度」,再增加一行和一列(實質為奇偶校驗行和列)。增加後,共36張牌。第三步:老師轉身蒙眼,學生任意翻動其中一張牌。第四步:老師準確找出被翻動的那張牌。
魔術中增加的一行一列,和計算機中奇偶校驗位的作用相似,是為了將行列「黑色」紙牌數量偶數化。這樣,一旦某張牌被翻動,便能迅速找出黑牌非偶數的行列交接點,即被翻動的紙牌位置。通過揭秘魔術,讓學生了解了計算機奇偶校驗的基本原理,為用奇偶校驗法模擬軟體進行數學建模和演算法描述做好鋪墊。
【數學建模】
計算機本質是以「0」和「1」為基礎來表示現實世界的信息的。「0」和「1」是計算機軟硬體聯繫的紐帶。用「0」和「1」分別表示黑色牌和白色牌,可以為演算法描述鋪路搭橋。
【演算法描述】
教師引導學生輕鬆用N-S工具描述演算法,一行一行枚舉,再一列一列枚舉,尋找黑色紙牌為奇數的行和列。二維矩陣中黑色紙牌為奇數的行列相交點便是要糾錯的數據。其實循環體部分包含了迭代演算法。這也是一種重要的計算思維。
【演算法實現】
演算法實現(即編程)環節,僅僅設置了一個代碼查錯和一行代碼填空,弱化了代碼編寫,旨在引導學生既親歷程序設計的完整過程,又突出本課的重點,引導學生深度思考演算法及其工作流程。圍繞奇偶檢驗軟體的研發,學生分析問題、數學建模、演算法描述、編寫代碼、調試程序、修改程序、運行程序,親歷完整的思維過程。這些豐富的體驗,為最後環節做了充分的準備。
【質疑與拓展】
從最初困擾第一代計算機科學家的Bug到計算機輕鬆檢測並修復批量錯誤數據的修復演算法的出現,學生能夠輕鬆理解:計算的發展史是演算法不斷質疑與優化的歷史。
學生從現實問題產生的認知衝突開始,通過親歷一個項目從開始到結束的完整過程,很容易理解演算法是程序設計的靈魂,阿爾法狗的勝利,其實是演算法的勝利,阿爾法狗的智慧是人賦予它的。教學的過程也是學生思維不斷展開、生髮的過程。隨著教學的開展,問題自然生髮——
那是不是可以這樣理解:李世石不過是輸給了一幫人的智慧?是不是在未來的某一天,人類會被人告訴你:我是跟你學的,你也一樣愚蠢」讓關於演算法的思辨升級,同學們開始追問失控的技術帶來的道德惡果。在思辨中,他們不斷重構意義,形成追問:人工智慧、深度學習,這些技術是否會成為人類的奇點?人造世界的走向將如何?
「人不會輸給人造的機器,本質上,人永遠是自己的掘墓人!因為人性的惡!」孩子文思泉湧,紛紛表達見解。
「我們生活在演算法搭建的這個世界裡,所以你們,作為青年學子,對人類,對世界,對未來,對技術,都應該有自己的思考、見解和主張。」教師總結,演算法學習課在掌聲中結束。
編 程
一種觀察世界的視角「學科教學能夠使學生終身受益的,不是具備具體的學科專業知識,而是影響他們世界觀、人生觀和價值觀的學科思想觀念……」
漂亮的代碼、嚴格規範的語言風格、計算思維的訓練都是編程學
習的重要內容。當一個孩子在少時候遇見編程,如果能夠真正地投入時間去掌握它們。那麼,編程於他們的意義,可謂一種觀察世界的全新視角。
筆者20年信息學奧賽的輔導中,遇到了不少熱愛編程的孩子。這些在童年時期開始接受紮實、專業編程訓練的孩子,在成年以後,他們的思維品質和眼裡的世界是什麼樣的呢?
「我本科學習的是物理。雖然所有人都是零起點學習求解複雜系統行為的計算方法,編寫處理實驗數據的函數模塊,擁有編程基礎的同學表現出驚人的學習速度。優良的代碼風格使得我們花在debug上的時間遠小於其他同學。對運行效率的精益求精早已融入了我們的血脈……不光是物理,從事量化交易編程、從事機器人策略研究、數學研究的同學,都對自身行業里編程的重要性深有體會。」(朱恩臨,2009屆畢業生)
顯然,自小受過良好編程訓練的學生,對自己從事的專業,有了更多的機會和解決問題的途徑。
「編程,讓我們學會用計算的手段解釋物理世界中的現象。液體究竟是什麼?氣體究竟是什麼?為什麼水加熱會變成水蒸氣?磁鐵加熱為什麼會失去磁性?慢慢地,我們相信,物理世界是由簡單精確的定律所支配的。計算是理解物理世界規律的手段。任何在演算法上可計算的問題,同樣可由計算機來計算。那是否意味著,我們有了計算機,就能計算一切?如果物理世界是由規律來控制的,那我們是否能用計算來預測未來?規則孕育了物理世界,物理世界創造了生命,生命擁有了意識和思維,思維認識了計算,計算回歸了物理的本源。我們為計算而生,終回到計算的長河中……」(蔣炎岩)
今天,我們重新翻開馮·諾依曼的《計算機與人腦》,在他的「神經脈衝的本質」的研究中和「神經系統的數字部分和模擬部分」的文字里,無不在訴說著世界未來的種種可能。
著名的計算機科學家、圖靈獎得主艾茲格·迪傑斯特拉說:「我們所使用的工具影響著我們的思維方式和思維習慣,從而也將深刻地影響著我們的思維能力。」是的,生命的禮物總會意外賞賜給堅持的人。當他們訴說著編程給人生帶來的種種體驗時,他們的大腦中其實流淌著的正是計算思維!
編 程
一種嶄新的表達
長年為有天分的學生輔導信息學奧賽,讓筆者一直以為編程是個別有著數理天分學生的專利,直到遇到Scratch。「編程就是寫作,是一種表達方式,也是開發新的思維方式的入口」。
在筆者接觸Scratch不久,便決定將小學課本里的這個編程平台,移植到初中課堂,用中學生的思維進行編程學習。以前以複雜代碼為載體的程序的基本結構:順序、選擇、循環,以及各種難以記憶和理解的代碼不再成為孩子們創意表達的障礙。可視化的編程語言,本質上是可視化了的思維,讓思維的展開迅速,思維能見度清晰且寬闊,計算思維的訓練觸手可及。在這裡,文字、音樂、創造、邏輯、條理、推理、計算,不同的孩子可以獲得不同的收穫和思維訓練,他們充分地表達自己。
在Scratch中,孩子們輕鬆學會使用變數,能夠在對不同角色搭建腳本中理解模塊化編程的思想。他們有的編製中秋賀卡,有的編寫與音樂相關的程序,有的熱衷於編寫簡單有趣的小遊戲。我們可以自由獨立設計,也可以在別人設計的遊戲或者作品基礎上修改代碼,重構自己的作品,然後通過互聯網發布,與全世界編程愛好者分享。每一個優秀的作品,都需要謀篇布局,需要細節的診斷,需要耐力和創新能力。
例如,教師在課堂給出一個簡化版本的「彈球遊戲」。運行規則是:球自由下落,反彈板跟隨滑鼠移動,如果反彈板能夠接住球,就可以一直玩下去;如果接不住球,小球落到地面,遊戲結束。然後由學生接龍,修改、優化或重構,形成一個個改進的版本。其中一個版本的遊戲界面中多了來回走動的兩個角色,干擾接球,加大了遊戲難度。
這是真正意義上的合作學習。每個人都可以分享自己的作品,也可以在別人的基礎上修改再分享。課堂上,學生可以做小先生,老師可以做學生。
從此,筆者的編程課,從課堂延伸到安靜的書桌,陽光下,草場,餐廳。學生學習編程,也可以利用編程進行學習,在作品設計過程中,因為作品需要,學生往往需要學習編程之外各門學科的知識。例如,有的學生為了編寫遊戲,還要研究遊戲背後人的心理特徵,進而思考玩家沉溺遊戲的深層次原因。
編程學習,終於脫下冰冷的外套,與我們每一個人友好相擁。在這個由演算法搭建的世界裡,我們有了一種全新的表達方式,有了理解演算法、構建世界的新通道。慢慢地,我知道,這個由演算法搭建的世界需要了解我們,我們也需要了解它,因為這是一個計算的世界。當我們對編程有了足夠虔誠的態度,能夠深度地了解它,豐富地詮釋它,並用平靜而溫暖的心去與它相對時,它便回饋給我們同樣的姿態。
在編程的旅行中,計算思維喜樂陪伴,編程學習,我們重拾初心,穩步前行。
(作者單位:江蘇淮陰中學)
推薦閱讀:
※於建嶸:【愚見】社會風氣與社會規則
※等你下課,不愛就拉倒!
※如何讓教育走向輕鬆愉快
※聽了這麼多的育兒方法,你真的會育兒了嗎?
※杜威「教育生長論」探新