每一步,與世界同步
我們都知道,國內中小學程式設計教育的普及在政府政策方面被提上了日程,這極有可能在計算機教育方面迎來一波改革。而在三年前,英國教育部就已經在這方面下功夫了,他們發現英國小學生們的ICT課程只是教教打字,教教基礎的電腦操作,已經快要跟不上時代發展了。於是,便快馬加鞭地制定了新的計算機教育課標,對全國小學的計算機課程進行改革,設立了新的Computing學科。
羅漢普頓大學計算機學科負責人及教師培訓講師,英國教育系統資深人士。
在英國新的Computing課程中,包括了計算機科學(CS)、資訊科技(IT)、數學素養(DL)三方面的知識,計算機科學則是課程的核心和主線。也就是說,英國的小學生們在課堂上已經能系統地學習程式設計和計算機知識了。
Computing新課標的核心理念,就是為了孩子們不再只是學習如何操作電腦,而是能去深入理解計算機科學,並且培養起計算思維。
今天的文章是一位英國教育系統資深人士對這次改革的闡釋,看看他們是如何把計算思維與教育融合在一起,這是有一定借鑑意義的。如果抓住計算思維作為計算機教育的核心內容之一,我想我們的計算機教育改革也決不會比他們做的差。
最好的計算機教育是用計算思維改造世界
英國的小學計算機課程改革,有一個理念是貫徹了始終的,那就是計算思維,我們都認為,最好的計算機教育,是要教會小學生們用計算思維和創造力去改造世界!對很多家長來說,計算思維還是個聽著有些陌生的詞,也有人認為,有了計算思維,孩子們是不是就能像計算機科學家和專業人士一樣去分析、解決問題了?這真的現實嗎?
在我看來,小學階段的計算思維,主要還是教會孩子從計算機的角度去看問題,也就是說,面對問題時,他們需要考慮這兩點:如何讓計算機幫助我解決?計算機是以什麼順序和方法解決這個問題的,我能借鑑嗎?要鍛鍊這種思維方式,不僅是在電腦課上學程式設計,還要鼓勵孩子多將它應用到其他學科和實際生活問題的解決當中。
那麼,計算思維到底分為哪幾個層次和方面?又是如何貫穿在課程教育中的呢?
演算法設計用簡單的話來說,演算法就是用一個步驟、一個步驟的指令去完成某件事,或者規定某種情況執行的規則。一份食譜、一組舞步動作、一個話劇指令碼,這些都是廣義上的“演算法”。教孩子“演算法”,就是在教他們思考:當計算機或者孩子自己要去某件事、解決某個問題時,都需要哪些步驟?
計算機科學麵臨的日常挑戰之一就是找到更高效的演算法(即使是針對同樣的問題),舉個例子,將它應用到課堂中,每天上學、放學時分,時間緊張,上學時爸爸媽媽催,放學時自己在教室待不住,但要做整理書本、記錄作業、理清一天的事情等等一堆瑣事兒,問問孩子,怎樣才能最高效地度過?
同時也可以引導孩子在使用各類APP和軟體時,有意識地去感受開發者們是如何設計介面的?選單欄放在左邊還是右邊?要完成某個功能需要經過哪些步驟?對於做得好的設計形式,孩子們可以吸收模仿,也可以讓他們想想,有哪些功能可以更加高效地實現,以提升自己的創造力。
邏輯推理計算機最大的特點就是“確定性”,你給它什麼程式碼,它就執行什麼程式,你輸入什麼,就會得到對應的結果。因此,只要看看演算法程式碼,孩子們就能夠預測到計算機將要做什麼事兒。讓孩子們學會去預測程式碼執行效果就是一個培養邏輯能力的好方法。
在這個過程中,他們需要整合和利用已知資訊,透過邏輯去推斷結果。另外,當孩子們自己寫程式時,程式碼中往往會出現很多小錯誤,需要不斷地“debug”,進行除錯。解決這些bug並不是靠運氣或者偶然,靠的就是透過邏輯推斷去“模擬執行”這段程式,看看程式跑到哪裡會出現問題。
分解問題我的老同事曾經說過一句名言,如何吃掉一隻大象?一次一口!其實,開發軟體也是同樣的道理。不管是解決問題還是開發系統,都需要把整個大專案分成很多小部分來一一擊破,這樣透過呼叫不同的函式、演算法、物件等就能使這些問題很快得到解決。
一款APP的開發,就是一個分解專案的過程
這種分解問題的方法不僅用在程式設計中,孩子們不管是學習什麼科目,或是在日常生活中碰到什麼問題,都可以用上這個“套路”,很快就能理順問題,提高解決效率。
模式認知我們有句俗語叫“最好的計算機科學家就是最懶的計算機科學家”,他們懶在總是想要找到最快、最簡便的演算法來解決問題,不僅自己開發,還常常借鑑、改編別人已有的成果。
孩子們在學習一段時間的程式設計後也會發現,他們經常一次又一次地再寫一些重複的程式碼塊,程式設計師們往往把這叫做“模式”,也可以說是“通用解法”,它們就是標準程式碼庫裡每個人都能用到的那幾行。
當孩子們在學習程式設計時,不免會學習並模仿別人寫的程式碼,使用Scratch這樣的程式設計入門軟體讓這一點變得很容易。而且,軟體開發的大環境也是傾向於會開放原始碼給程式設計愛好者們來改進測試的。孩子們會發現,程式設計裡“模式”複製的這一套在每個學科裡都很適用,不管是學語法造句還是學樂理編曲,這種認知模式可謂是文理通吃。
抽象思維我認為,抽象思維是計算思維的核心。抽象思維是要讓孩子們去抓取一個問題或者系統的核心或者主要架構,而不是過於糾結細節。孩子們在美術、建築相關課程中接觸到的管道示意圖就是個很好的例子,它完全忽略了實地距離,只是強調了各節點的連線方式和走向。
孩子們在學習程式設計的時候,就需要這樣抓著一條主幹線,一開始可能是弄清楚自己要做什麼功能,然後尋找實現的方法,至於如何表達資料,用什麼硬體展示,如何提高CPU利用效率這些則都可以後續進行完善。有效的程式設計學習,就是這樣從大的層面展開,再去調整細節,最後,孩子們將學會:既能顧全大局,又能有的放矢,粗中有細。
最後我想,毫無疑問,程式設計學習將成為小學教學中非常重要的一部分,孩子們從程式設計中學習到的計算思維模式可以輻射到各個不同學科領域。而且,學習程式設計還有一個很大的原因是它非常有趣,能給孩子帶來成就感。無論如何,對於小學生們來說,學習程式碼,可能是進入計算思維最有效、最適合的方式了。