演算法觀念與設計思考

Artificial Intelligence (A.I.) 是什麼

『人工智慧』這概念可追溯到1950年代,距離現在相當長的一段時間。到了1980年,機器學習逐漸受到歡迎。到了2006年左右,深度學習(Deep Learning) 被安排在鬆散地模仿人類大腦的圖層中,學習模式中的模式(learning patterns of patterns)。深度學習驅動機器學習,最後實現了人工智慧,成為我們現今所說的A.I.。

在A.I.的趨勢下,如何用正確的流程與方式來處理資料,甚至深度學習中的類神經網路 (Nuron Network), 皆強調電腦如何作機器學習、以至於依據現實中回饋的經驗做自主學習,都是以演算法為基礎的概念。

什麼是演算法

『演算法』簡易來說,是用來達成特定目的的過程。這些演算法簡單的可能像是把一堆數字排序。複雜的可能,就如大家每天用的Facebook,它採用不斷更新的 News feed 演算法,本身就是針對資料處理的方法與邏輯。

以語文來比喻,Coding語法的學習如同理解文法與句子的正確結構;演算法的學習如同在理解基礎的文法後,如何針對自己想表達的論點做出完整的論述,即是作文與文體結構。

設計思考的面向 –

學習演算法與Coding語言的差異在於:

學習演算法強調「演算法本身的運作過程」。目標是理解演算法、靈活運用演算法。例如圖論、計算幾何、字串學等等。進一步實作上「把想法轉換成演算法:演算法設計 Algorithm Design 」

目標是設計計算步驟解決問題,以及從各種演算法當中汲取經驗、擷取靈感。

Coding語法的學習強調「Coding語言 Programming Language 」。目標是背熟規格書、靈活運用Coding語言。進一步實作上「Coding設計 Programming 」。目標是設計Coding碼解決問題,把想法轉換成Coding碼。

演算法與Coding工具學習的比較

一般來說我們使用SCRATCH來做為年齡層較低的學生進行Coding語法訓練。學習完Scratch之後,若要進入較複雜的邏輯架構學習,以Blockly型式語法來完成的程式專案,因為每一行程式都是以拼圖的形狀呈現於介面上,拼圖之間的空間佔用了大多數的版面,因此這樣的限制無法深入較複雜的架構。

Tarkus採用圖形化程式設計高程度地避免直接使用寫程式的教學模式所產生的學習問題,所見即所得(WYSIWYG) 的方式。並且不同於Blockly型式的Scratch介面,TarkusVP使用流程圖式圖形介面(Flow-Based Programming; FBP) 讓使用者可以將大部份的精神花費在學習程式專案的邏輯思維訓練上,只需按照實際會發生的事件,依照流程順序排列,程式就可完成。此種寫程式的方式,只要確保邏輯正確,程式就可以運作,省略熟悉語法的學習曲線。

以流程圖的結構來看程式較Scratch的堆疊式圖型更為清楚,步驟也更為簡化。因此更容易直觀地操作指令與變數的運用,結合出進階的複雜專案,卻又保有比Blockly介面更為簡潔的版面安排。

    同時,考慮學習對象是小學四年級至中學階段,縮減了參數的變化性,並直接顯示在模組方塊上面。學習上透過一個個模組部件的應用逐步開發出可涵蓋所有程式語言的變化的流程圖示編輯,讓學習更加輕鬆有趣。