計算思維:編程教育的價值追求

2021-03-01 中小學信息技術教育



陸平:江蘇省信息技術特級教師,淮陰師範學院兼職副教授,淮安市陸平特級教師工作室領銜人,全國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中,孩子們輕鬆學會使用變量,能夠在對不同角色搭建腳本中理解模塊化編程的思想。他們有的編制中秋賀卡,有的編寫與音樂相關的程序,有的熱衷於編寫簡單有趣的小遊戲。我們可以自由獨立設計,也可以在別人設計的遊戲或者作品基礎上修改代碼,重構自己的作品,然後通過網際網路發布,與全世界編程愛好者分享。每一個優秀的作品,都需要謀篇布局,需要細節的診斷,需要耐力和創新能力。

 

例如,教師在課堂給出一個簡化版本的「彈球遊戲」。運行規則是:球自由下落,反彈板跟隨滑鼠移動,如果反彈板能夠接住球,就可以一直玩下去;如果接不住球,小球落到地面,遊戲結束。然後由學生接龍,修改、優化或重構,形成一個個改進的版本。其中一個版本的遊戲界面中多了來回走動的兩個角色,幹擾接球,加大了遊戲難度。

 

這是真正意義上的合作學習。每個人都可以分享自己的作品,也可以在別人的基礎上修改再分享。課堂上,學生可以做小先生,老師可以做學生。

 

從此,筆者的編程課,從課堂延伸到安靜的書桌,陽光下,草場,餐廳。學生學習編程,也可以利用編程進行學習,在作品設計過程中,因為作品需要,學生往往需要學習編程之外各門學科的知識。例如,有的學生為了編寫遊戲,還要研究遊戲背後人的心理特徵,進而思考玩家沉溺遊戲的深層次原因。

 

編程學習,終於脫下冰冷的外套,與我們每一個人友好相擁。在這個由算法搭建的世界裡,我們有了一種全新的表達方式,有了理解算法、構建世界的新通道。慢慢地,我知道,這個由算法搭建的世界需要了解我們,我們也需要了解它,因為這是一個計算的世界。當我們對編程有了足夠虔誠的態度,能夠深度地了解它,豐富地詮釋它,並用平靜而溫暖的心去與它相對時,它便回饋給我們同樣的姿態。

 

在編程的旅行中,計算思維喜樂陪伴,編程學習,我們重拾初心,穩步前行。

(作者單位:江蘇淮陰中學)


相關焦點

  • 北歐借編程教育培養計算思維
    理念 編程教育重在培養計算思維等關鍵能力 2006年,美國計算機科學家周以真開創性地提出「計算思維」概念,引發國際範圍對計算思維本質及其教育問題的廣泛討論。
  • Python教學:編程如何培養學生計算思維
    其中,必修模塊分為「數據與計算」、「信息系統與社會」兩個子模塊,而「數據與計算」模塊中的內容強調了簡單算法的學習,讓學生掌握一種程序設計語言的基本知識,使用程序設計語言實現簡單算法,將計算思維的形式化、模型化、自動化特徵滲透至內容標準中。在這裡,特別突出了計算思維的重要性。那麼,什麼是計算思維?高中信息技術課程中該如何通過編程教學體現計算思維呢?
  • 國外計算思維教育研究進展
    計算思維有算法思維和程序思維兩種起源說;從算法思維、程序思維到計算思維正式提出再到實踐中的計算思維,其內涵呈現多角度、交叉重疊且越來越精細的特徵;計算思維的本質是抽象。計算思維教育內容主要涉及計算思維的過程階段要素及其基本概念和能力,教育內容具有多樣性。教育活動形式主要有基於屏幕的編程、製作和控制數字有形物及通用方法三種。
  • 解析計算思維與少兒編程的關係
    少兒編程風頭正勁,有傳言編程將取代英語,成為下一個進入高考的科目。那麼,被機構熱炒的「全世界多個國家都在全民推廣的少兒編程」,真相究竟如何呢?其實,少兒編程在上個世紀60年代就已經出現並得到推廣(《》),而且目前國際上公認的少兒階段培養目標並不是學習編程,而是利用編程促進計算思維的培養。學習少兒編程是不是就等於培養計算思維呢?二者之間是什麼樣的內在聯繫呢?
  • 編程貓首席科學家:用科學教育、計算思維培養學生自主探索能力
    近期,編程貓首席科學家、編程與人工智慧研究院院長、北京航空航天大學自動化科學與電氣工程學院副教授秦曾昌在中國教育網絡電視臺、長安書院APP、CETV教師培訓微信公眾號等多平臺同步開展以培養孩子自主探索能力為主題的教師培訓直播講座,5萬在線觀眾參與並觀看了本次直播。
  • 計算思維與如何提升中小學生計算思維能力?
    由此進入到全民學編程的狂熱時期,各類針對中小學生的編程培訓班如雨後春筍大量出現。本文將從如何培養中小學生計算思維角度去對中小學編程一些問題進行分析。編程教育中計算思維的培養目前市場中的編程教育主打樂高機器人與Scratch編程,其中樂高機器人主要通過軟體去控制硬體,即如何實現機器人的組裝與控制,Scratch編程主要採用可視化模塊(積木)搭建形式進行程序開發
  • 新聞:北京大學學習科學實驗室指導開發的融入遊戲化學習理念的計算思維編程教育課程發布
    課程簡介:本次發布的遊戲化計算思維編程教育課程面向小學階段,由北京大學學習科學實驗室、索尼(中國
  • 編程視角|少兒scratch編程教育對成長價值的意義!
    為了彌補未來智能化的時代的人才空缺,今天我們一起簡單聊一聊少兒編程教育-少兒scratch編程教育對成長價值的意義!國內少兒編程教育萌芽起源於國際化編程教育的推動,同時伴隨著國內教育線的空缺,為了更好地彌補國內應用市場,從制度層面開始逐漸公開發文擴散傳播編程教育,時間大致在2015年-2016年間,國內逐漸開始有了「少兒編程」萌芽概念,同時新起的少兒編程教育機構也逐漸向少兒編程市場邁開了步伐,其中鮮為人知的品牌比如「小碼王」少兒編程等等。
  • 學習「編程思維」,KOOV推動機器人編程教育蓬勃發展
    青少年人工智慧教育列入通識教育課程已是大勢所趨,這既對接國家戰略,也與我們人才培養體系、課程建設、教學方法的改革有著特殊聯繫。編程學習作為青少年人工智慧教育重要組成部分,其教育培訓之風在國內方興未艾。KOOV既是該領域的開拓者,又在不斷提高、精進,為編程教育創造新動能。
  • 合肥工業大學原校黨委書記李廉談計算機教育與計算思維
    Baltimore曾表示:「生物學是信息科學」;Fuchs認為新物理學原理是資訊理論;ACM前主席G.Forsythe表示:「對於科技教育最有價值的是能夠終身受益的通用技能,我認為是自然語言、數學,而計算機科學位於第三。」計算思維1.0到2.0計算思維1.0和2.0,經過十幾年的演化,人們開始對計算思維認識越來越深刻。
  • 培養計算機專業人才的計算思維和計算行動之探討
    如何培養學生的計算思維(Computing Thinking and Computational Thinking)是全世界計算機教育工作者共同關心的話題。編程教學的重要目標是為了讓每一個人具備編寫程序語言來表達思想並與他人交流的能力,最終正確理解和認知世界。
  • 國內外計算思維研究與發展綜述
    為了更好地了解計算思維領域的研究現狀,特運用內容分析法分別對國內外計算思維相關文獻進行分析。研究發現:當前國內計算思維研究還處於初級階段,理論研究主要關注計算思維的概念、內涵、特徵與價值,應用研究層次主要集中在高等教育階段,主要聚焦於對計算思維培養策略、計算思維教學模式和計算思維支持系統的設計與開發三個方面。
  • 基於算法的編程教學,讓計算思維向更深處漫溯
    Education makes life better為了進一步提高信息技術課堂的有效性,藉助編程教學,圍繞項目式教學模式研究開展,切實提升學生的計算思維能力,落實學生的核心素養,4月28日,黃巖區基於算法的編程教學研討活動在東城街道中心小學(文萃校區)順利舉行。
  • 學的不是寫代碼,學的是編程思維
    >進入基礎學科,意在通過培養孩子的計算機思維和編程思維,幫助他們更好地理解未來世界的事物,在其他領域得到應用價值。 編程教育≠學寫代碼,我們讓孩子學編程是為了掌握「編程思維」,優先考慮的是孩子的成長和興趣培養
  • 什麼是計算思維?在編程課程中是如何體現的?
    對於生活在科技和智能自動化時代的孩子們來說,理解計算機的思維方式,運用計算思維去解決生活中的問題,被認為和聽、說、讀、寫、算一樣,是每個人必備的思維能力。然而,到底什麼才是計算思維呢?對於計算思維,不同領域的科學家有不同理解。
  • CCCF譯文 | 從計算思維到計算行動*
    在這篇觀點文章中,我們勾勒了計算行動的兩個關鍵維度:計算身份和數字賦能,而且進一步提出通過專注計算行動以及計算思維,我們可以使計算機教育對年輕的學習者更具包容性、激勵性和賦能作用。關鍵詞:計算行動 計算思維計算行動(computational action),一個新的計算機教育框架,提出在學習計算機的同時,年輕人也應該有機會利用計算機來創造對他們的生活和社區有直接影響的事務。
  • 為青少年培養計算思維 優必學人工智慧教育的教學創新與探索
    計算思維在當今社會至關重要,每個學生都需要培養計算思維。計算思維是什麼,該如何培養孩子的計算思維。Looi Chee Kit 教授發表了一篇有關計算思維(Computational Thinking, CT)的文章。
  • 計算思維模型及其知識體系(草稿)
    我想要的體系不是 「Scratch—Python—C++」 這樣的程式語言拼圖,也不是靠各種工具和案例堆砌而成的階梯,它需要能真正承載起計算教育的目標:幫助學習者學會用計算思維解決問題(個人理解)。可是當我開始考慮這個體系的時候,發現這是一個巨坑,而且還是一個很新的巨坑!這個坑不是我一個人能填上的,而且一時半會兒也很難取得什麼成果。
  • 怎樣培養孩子的計算思維?
    未來是高度計算的世界。來人類將視數據和分享為信仰,以算法和推薦為決策依據。計算思維是未來「算力社會」的重要思考模式,是一個搭建在人類與計算機、算法之間的溝通橋梁,讓人類能夠更好地理解數據和算法的世界,與它們進行溝通,最終能夠完美駕馭數據、算法和智能。目前教學實踐中,培養計算思維往往依託於編程課。
  • 計算思維
    2013年12月11日,美國非盈利性組織Code. org為配合國家計算機科學教育周( National Computer Science Education Week) 發起了「編程一小時( The Hour of Code) 」倡議和活動,旨在通過採用趣味教學的方式讓中小學生了解基本的電腦程式編寫,並從小培養孩子們對計算機的興趣。