我畢業於劍橋大學工程系。我經常會用到編程,後來工作了一段時間,越來越覺得,編程是一個非常有用的技能,我就又去學了Html、CSS、Java Script、Python和Ruby,越學我越遺憾沒能在更小的時候接觸到它。

(周安琪老師在少年商學院國際教育沙龍上。本文為她此後線上直播公開課的內容。)

感謝少年商學院,讓我今天通過視頻直播這種方式,與來自全國各地的諸多家長及教師朋友們交流(公開課簡介)。我經常會聽到一些孩子說,編程屬於理科生學習的東西,就好像有很多同學會不理解為什麼文科生也要學數學一樣。其實在美國,編程已經開始變成和讀寫、數學、科學並列的學生核心能力。而且,學編程的核心,也不是學計算機語言,而是學一種思維方式。今天,很多孩子每天都忙於上各種各樣的補習班、學習各種各樣的才藝,但其中,我覺得最值得投入時間和精力的,還是孩子思維能力的培養,把重點放在學習“計算性思維”上面——而不單單只是學幾行酷炫的代碼。

▋哪怕你的孩子以後讀文科,計算性思維也不可或缺

什麼是計算性思維?簡單來說,是一種用電腦的邏輯來解決問題的思維,這個是由谷歌公司提出的,可以簡單概括成這幾種類型:分解問題、模式認知、抽象思維和演算法設計這幾個類型。

這幾個詞只是看上去很抽象,實際上,我們的生活中,有很多問題的解決要用到這些思維。比如計劃一次旅行——前不久我在少年商學院線下國際教育沙龍上的分享(點擊閱讀當天分享精華《她13歲留英,劍橋畢業後到MIT充電,她給中國孩子的7個學習錦囊》)也提到,英國學校會要求學生自主策劃一次大型旅行,每個過程,都對應了計算性思維中的一個小部分。

第一是分解問題的能力,把一個龐大的任務分解成幾個小問題分別解決。“策劃全家人的旅行”聽起來非常龐大、繁瑣,那麼,我首先就要將這個龐大的任務分解成幾個小任務,我可以把旅行,先分解成“訂機票”、“訂酒店”、“訂活動”三個任務,然後依次分別解決。而其實每一個小問題又可以進一步分解成不同的小任務來解決,當你將每一個小任務都解決好了以後,這個“計劃全家旅行”的龐大的任務也就可以輕松地解決了。

第二是模式認知。比如旅行時,訂酒店,其實我2014年、2015年都在某一個網站上訂了某個連鎖酒店,非常靠譜,住得也非常舒服,這一次我可以同樣地在這個網站上訂這個連鎖酒店。在這裡,我會根據我過去的經驗以及過去解決問題的方法,來解決我眼前的問題,這是認知模式的一種。酒店訂完了,我們基本上就要計劃一下我們的活動了。

第三是抽象思維。下圖中,左邊和右邊是兩個不同的計劃,對比之下就能發現,左邊有很多沒有必要的細節,比方說“要吃巧克力麥片”,如果我們把很多時間花在沒有必要的細節上,就會降低我們的效率。

所以一個善於運用抽象思維的同學會剝離出問題的核心,知道什麼是重要的、需要提前確定的,什麼是不重要的、到時候慢慢看也行的。這樣TA就不會浪費時間在不必要的項目上。

第四是演算法設計,大家可以通俗地理解為解決方案的設計。我們還拿旅行計劃的設計作為例子,到了假日的早上,我非常開心地准備去公園玩,那麼問題來了,怎麼從酒店走到中央公園去?這裡需要一系列的解決方法。

我首先會問今天下雨嗎?今天不下雨,我們就要出酒店門,右轉,朝北走七條街等等,才可以帶我們到公園。如果今天下雨,我們則要回房間、拿上傘,在酒店門口等的士,的士來了就告訴的士司機我們的目的地……

我以前經常聽到別人說——“我天生就是個路痴,就算給我個地圖我也找不到地方,你還是來接我吧”,其實我認為,沒有人是所謂的天生的路痴,只要你能對著地圖、運用好計算性思維裡的演算法設計、嚴謹地計劃好自己的每一步,就沒有你無法到達的目的地。

▋會編程的孩子,數理化學起來也不會太難

我們接下來就看看在學習中如何運用計算性思維。

比如說在解數學題的時候,我們就經常要用到分解問題的技巧。這裡有道數學題,看上去有點長,不過一個思維能力強的小朋友就不會被這個長度嚇到,而是把它分拆成三個問題:第一個問題是,首先要解出左邊這個算式的答案;接著要計算出右邊這個算式的答案,這是第二個小問題;再來是我們要比較這兩個數的大小,這是第三個小問題。

一個思維敏捷的小朋友馬上就可以分解一個復雜的問題,成為這三個小問題,然後一個個算出來,這樣的話這道很長的題其實也就變得很容易了。

另外一個例子是在做應用題的時候,很多小同學則需要學會剝離出問題的核心。

比如說上面這道初中物理題,很多同學讀完這道題後可能感覺這裡有很多信息,但是一個思維敏捷的同學就可以快速地找出這道題的關鍵信息,就是車的重量和剎車的力度。然後小朋友要運用模式認知回想一下,好像過去那道題都是需要用到牛頓的第二定律的,這樣小朋友就會想到這個公式是F = m * a,從而解出這道題的答案。

▋寫作文、做演講,其實都需要計算性思維

其實計算性思維不僅能用在數學學科上,還可以用於其他很多學科的學習。

比方說在語文課上寫作文的時候,要想寫得又快又好,通常我們要列一個作文的提綱,列提綱這個動作其實就是在分解問題。比方說今天我要在這裡介紹計算性思維,我很緊張,這麼龐大的一個話題,我不知道從哪裡開始講,不過我列了一個提綱,決定將這個大的演講分成好幾個小塊:

我這樣分解一下,感覺就輕鬆了很多。我主要把每一個小部分講好就好了。

有時候學社會學的時候,我們可以分析我們現在看到的現象,和過去歷史裡發生過的現象有沒有什麼相似之處,是否有可以學習的地方,這就是一種模式認知。學科學的時候,我們使用的公式和模型都是抽象化的。然後在做科學實驗的時候,我們也經常要用演算法設計的技能來精確地設計實驗步驟。

▋不同年齡段,為孩子選擇不同的編程工具

最後我想介紹的是如何根據孩子的年齡和特點,挑選學編程的軟體——除了去上課、去學編程以外,還是有一些iPad的編程工具和游戲可以幫助同學們鍛煉計算性思維的。這個暑假,我在北京為同學們開展的設計未來學校的夏令營,也要運用編程構建方案(點擊這裡了解詳情)。

1、幼兒園或小學低年級:Swift Playgrounds、code.org

對於幼兒園的小朋友來說,他們可能最先學會的不一定是計算機的語言,而是學會怎麼樣精確地發號施令。可以不需要用計算機語言,而是用他們精確的語言、用一些簡單的圖形、音樂來傳達這個概念。

前幾天蘋果公司發布了一個幫助同學們鍛煉計算性思維的APP,叫Swift Playgrounds,這個APP要秋天才能上架,所以普通人去架子上找應該還沒有。但是我拿了他們提前給老師的一本培訓介紹書,我發現,比起讓同學們學會如何用Swift編寫蘋果的APP,他們更加註重用一些歡快的、活潑的謎題和游戲的形式,幫小朋友們甚至是很小的、幼兒園的小朋友們鍛煉計算性思維,為小朋友們啟蒙。

其實code.org也是用一些非常簡單的方法來讓小朋友們鍛煉計算性思維、鍛煉如何發號施令的。

有個家長說帶著姑娘玩code.org,一小時全部通關了。其實她就是喜歡過關,卻對自己過程中產生的一些創意沒什麼興趣。怎麼引導呢?比方說,如果我的一個學生,他很喜歡畫畫,我就會引導他想辦法去做一個繪畫的程序,或者做一些繪畫上的編程。這個時候,Scratch這個軟體會更適用一些。

2、小學階段:Scratch、APP Inventor、Hopscotch

6歲以上就可以開始從Scratch接觸了,我建議先學一種拖拽式的積木式拼裝的語言——Scratch或者APP Inventor。然後等孩子大一點,再去學Python、Java,其實我還很推薦學Html Javascript,因為Html Javascript有一個好處是在於你每寫一行代碼,它都可以馬上在你的顯示屏上、瀏覽器上顯示出來,跟Python相比,它的趣味性可能更濃。我覺得最好是先學Scratch或者App Inventor,然後可以學(Html、CSS、JS,再到Python、Java)。

最後這個是hopscotch,可以讓孩子在iPad上寫小游戲、小動畫,比scratch稍微難一點點。可在AppStore裡下載到。

3、12歲以上:別著急抄寫代碼

就算是12歲以上,我也建議先通過一種可視化的語言開始——就是模塊化,像Scratch和APP Inventor,像拼積木一樣把邏輯程序拼起來,以這個作為開始。

有很多家長說同學比較大了,可不可以直接學Python?但是我覺得Python、Java等,有很多的英文字,很多初學者容易犯的一個錯誤就是,把時間和精力都花在抄寫代碼上面了,而且這種文本式的語言很多都需要學生對括號、分號等標點符號的使用非常了解,很多小朋友把心思全都花在寫正確的標點符號和打正確的字上面了。

而我推薦就算是12歲以上的同學也可以先用一種積木式、拖拽式的語言,可以讓這些同學們首先通過這些先學好這些程序的核心邏輯,把這些編程的邏輯和概念學扎實了以後,再去學這些文本式的語言。當他已經有了一個編程概念或者說計算機概念的基礎後,他再去學文本語言就要好很多,這個時候他可以花多一點心思去看怎麼樣把這些代碼打對。

一定要多問For What,讓孩子學編程到底為了什麼。

網上有不少不用寫代碼就能直接生成APP的工具,家長給孩子們選用這些工具的時候,不妨考慮一下,我們讓孩子學編程是為什麼?是為了讓他們做一個APP出來賣錢嗎?應該不是吧,我們還是希望,在學習編程的過程中,鍛煉計算性思維,以及解決實際問題的能力等 ,這比生成一個APP要有用很多。當然,如果孩子像做一個APP,我覺得恰好可以引導他們來學習編程。

今年暑期,我將聯合畢業於連續多年全美排名第一教育學院的范德堡大學教育學博士、少年商學院趙晴老師,在北京為9到12歲小學生開設《2046學校大創想x MIT APP編程》工作坊,顯然,孩子們要學習編程,但這更是一次項目制學習(Project Based Learning)。我們將帶領同學們暢想、采訪調研、頭腦風暴,設計30年後的未來學校,並通過APP編程,呈現智能操控所建造Future School的邏輯,這個過程中對孩子們設計思維、創想力、計算性思維及動手實踐能力的鍛煉同樣非常重要。(點擊“這裡”查看詳情並報名)

最後,有個小提醒給家長朋友們。現在很多同學學習編程語言,都是以自己的興趣為主,比如說寫論壇、機器人、做網站等,比較隨性,我們要不要給他加一下系統性的學習呢?答案是:NO。我想說的是,興趣是一切的源動力,最好的教育方式從不是給孩子一個系統,而是讓他們根據興趣和熱情,自己慢慢摸索出一個系統來。

參考來源