載入中... 請稍候

精選文章

用 Scratch 學程式設計,可不是玩玩而已

July 04, 2014 16:41


Atom in real steel wide

橘子蘋果進行兒童程式教學至今,經常被問到這些問題:

「我的小孩不見得會成為工程師,學程式設計幹嘛?」

「我知道程式設計很重要,但是學Scratch真的算是程式設計嗎?」

「他們的學校已經有教Scratch了,和你們教的有什麼不同呢?」

 

或許利用這個機會,好好來解釋一下,我們是怎麼用Scratch將孩子引入門的。

 

首先, Why Scratch?

Scratch 是美國麻省理工學院開發的一套兒童程式語言,特色在於沒有複雜的文字指令,所有的指令都是以視覺化的積木來呈現。 要完成一個程式,只要像組合積木一樣,就可以完成一個程式。因此,完全沒有程式設計經驗的孩子可以立刻上手,開始設計程式。

麻省理工這群全世界最厲害的人才當然有能力開發另一套文字程式語言,像是Ruby或Python。但是小朋友的思考模式畢竟和青少年及成人不同:

  1. 思考較直觀
  2. 對於英文的掌握能力較弱

因為以上兩點原因,使得孩子難以掌握如C, java, python等文字介面的程式語言,但事實上小學的孩子就有能力掌握程式邏輯了。Scratch的誕生,就是為了讓孩子「跳過」以上這兩個障礙,用更親切、直觀的方式來寫程式,訓練程式邏輯並培養程式設計的基本knowhow

但是,什麼是程式邏輯呢?什麼又是程式設計的基本knowhow呢?

 

來自麻省理工的教條

MIT media lab 在開發Scratch的同時,也撰寫了一份課綱,敘述學童應該學會的幾項重要觀念。

 

計算性觀念 Computational Concepts

在程式的建構中,有許多的重要概念,是不分語言、彼此共通的。例如最基本的序列(Sequence)、迴圈(loops)以及資料(data)。Scratch的設計中,便融入了這些重要的元素。

程式設計七大元素:

  1. 序列(Squence)
  2. 迴圈(Loops)
  3. 平行化(Parallism)
  4. 事件(Events)
  5. 條件式(Conditionals)
  6. 運算子(Operators)
  7. 資料(Data)

 

計算性實作 Computational Practices

當然,在了解程式運作的原理以及基本構成外,接著要進入的是真正的程式設計實作。但在一個完整的軟體,並非一蹴可及,而是階段性、反覆修正、甚至要將程式切割並模組化。這些概念都是軟體工程的重要基礎。

可能很多家長對於程式設計有些誤解,認為這些概念太偏門,只有就讀相關科系的人才會用到,但其實不然。舉例來說,「反覆,漸進式開發」(Being iterative and incremental) 在生活中到處可見,無論是學習、考試、創作。一步步的前進,並隨時修正學習方式,其實就是很多人的成功秘訣。

 

計算性觀點 Computational Perspectives

如果你認為程式教育就只是教孩子複雜的邏輯、演算法,那以下 MIT 提出的 計算性觀點 應該會讓你改變想法:

  1. 表達 (Expressing):
    學習如何正確表達目的、程式需求、以及實作方式。
  2. 連結 (Connecting):
    程式是為了滿足人的需求而產生的,所以要了解「為別人」或「和別人一起」寫程式的樂趣與力量。
  3. 提問 (Questioning):
    一個不斷進步的人才,是懂得時時質疑眼前的問題的,培養提問的習慣,便能在不知不覺間養成透徹的洞察力。

以上幾點跟數理能力幾乎一點關係都沒有,但卻是這個世代最重要的能力 -「溝通、整合、與分析」。也因此,越是頂尖的人才,他們所擁有的優勢可絕不只在技術,而是這些所謂的「軟實力」。

 

那,你們是怎麼教的,跟學校教的有什麼不同呢?

先不論大多小學、中學的電腦課只教 word, excel 等軟體這件事實,少數願意教小朋友寫Scratch的學校,往往只能最基本的解釋如何操作Scratch。在沒有適當引導、傳授 Computer Science 重要觀念的情形下,孩子往往失去興趣,也無法照心目中的想法將程式實作出來,這是相當可惜的。

橘子蘋果Scratch程式設計課程 就是嚴謹遵循以上來自麻省理工的程式設計教條,一步步的引導孩子進入程式邏輯思維,培養解決問題的能力。

 

不是教你寫出複雜的演算法,而是教你如何解決問題

在這個什麼都Google得到的時代,用搜尋得到的資訊來解決問題不是難事,這個世代的孩子在未來面臨最大的挑戰將是:「如何解決從沒出現過的問題」以及「適應產業快速的變遷」。

我們的下一代,準備好面對資訊時代了嗎?