點石學園 Q & A
點石學園 Q & A
Q 1: 點石學園創辦人
陳俊穎老師,UCLA電腦博士,曾任交大資工系教授,擁有多年業界工作經驗與學校教學經驗。陳老師認為程式設計是一門綜合數學, 工程及藝術創作的學問. 學好程式設計可以有效培養小孩理解問題與思考解決問題的能力。
Q 2: 為什麼要獨立開發設計 Stone ?
Stone 程式語言是由UCLA電腦博士, 點石學園創辦人陳俊穎及麻省理工碩士畢業生陳伯恩參與研發設計的語言. 點石學園在一開始設計程式入門教材時, 希望能選擇一個簡潔易懂,可以直接在瀏覽器編寫執行, 且又盡量符合大部分傳統程式語言結構語法, 與涵蓋大部分的程式設計的內涵的語言工具.但是遍尋不到適當的語言工具.
JavaScript 雖然可以直接在瀏覽器執行, 又相對簡潔, 是不錯的選擇。 它的設計核心相較於其他傳統程式語言,相當特別。 極具彈性的函數定義與使用, 及非典型的物件導向機制等, 功能強大, 是目前使用最廣泛的語言( 點石學園無論前後台系統都是 JavaScript 實作的), 但作為入門學習的語言, 若必須正確解釋 JavaScript 的核心原理, 反而會增加學習負擔.
若選擇其他語言如C++或Java,則無法直接在瀏覽器執行,而僅能藉由遠端後台提供簡單且功能有限的支援(例如不能隨意處理檔案,執行互動程式等)。若要求學生在本機安裝軟體工具來編譯及執行程式,則有層出不窮的系統安裝及操作使用等問題, 常讓初學者感到頭痛。就以 使用相當廣泛的 Python 為例,要能開始寫第一個程式, 使用者要先根據自己的電腦形態及作業系統,到網路找尋適當的工具程式,而在安裝過程中, 常常會碰到一些電腦術語或手動設定甚至是使用者權限的問題. 安裝完之後, 還可能面臨程式編輯工具的選擇及如何操作使用等問題。這些問題若沒有經驗的人在旁指導,通常事倍功半,加深挫折感。
其實更重要的,是使用這些常規語言仍然難以教授 UI (使用者介面) 及事件等重要的程式設計概念. 在諸多因素的權衡下, 我們才決定自行設計一個簡單語言,以符合學習程式設計的完整面向.
Stone 沿襲 Python 的語法, 省去 Java 或 C++ 等煩瑣的類別或資料形態宣告, 適合初學者直接切入主題核心寫程式. 但我們仍更改少部分語法, 使之較符合軟體工程的原則 (例如必須宣告變數才能使用), 並更貼近 Java 及 C++ 的語法 (例如加入較為傳統的 for 迴圈). 且由於 Stone 是用 JavaScript 實作的, 容許初學者編寫簡易 APP 在瀏覽器直接執行並和使用者互動,這都是其他語言難以辦到的。
由於以上考量, 我們希望能提供初學者一個合適的語言及學習工具來克服以上種種問題, 在他們在紮實地學習程式設計後, 能輕易銜接其他各有特色的語言而沒有偏漏。
點石學園 Stone 語言和系統, 完全不需要安裝工具或下載軟體, 初學者只要在上課第一天申請一組帳號, 回家後隨時可以登入課程系統, 複習上課內容和練習寫程式. 語法簡單易學但又包含多數語言共同的邏輯規則, 教材中包含豐富的實作程式設計習題, 循序漸進的讓學員學會寫程式, 是最適合初學者的一套完整的課程.也是他們將來更深入學習其它程式語言的最佳踏板.
Q 3: 幾歲開始可以學Stone?
雖然 Stone 較C++, Java等語言簡單, 但 從Stone 開始, 孩子必須用雙手打字輸入程式碼, 也不再有像Scratch 那麼容易看到的聲光效果, 並不是每個孩子都能接受. 且Stone的習題中加入許多國中以上數理習題的運算應用, 建議最好國高中以上再來學習比較適合.
小五小六開始也可以, 但老師就必須在授課時同時教這些數學概念, 可能會花比較久的時間, 但根據經驗, 學習程式設計的思考邏輯訓練對孩子數理能力的發展是很有幫助的.
Q 4: 為什麼要學程式設計, 有什麼好處?
一般人要學會一個程式語言到熟練運用經常要花數年的時間, 不斷的學習, 操作, 應用演練. 但在孩子初學的階段, 讓他們接觸程式設計, 則應避免冗長的語法的反覆記憶與訓練, 而是要以帶他們從實作專案與遊戲中, 學習思考判斷和觀察規律與程序. 排和最重要的, 引起興趣與為主.
孩子在思考如何做出一個遊戲或app的特別效果時, 需要提出問題, 分析問題, 並從反覆實驗測試中, 找到最佳解決方案. 這些訓練在他們整體思考學習上都很有幫助.
到了中學以後, 我們強調學習程式設計就像學習任何一門技術一樣, 一定要多動手寫程式. 在訓練學生寫出有效率, 簡潔優美有組織的程式的同時, 也教他們學會將大問題分解成小問題與除錯的能力. 在這過程中, 學生自然學會嚴謹周密的思考與分析解決問題的能力. 尤其在中學時有先修程式設計的學生, 在進到大學理工科後, 就可以明顯感受到有先修程式設計讓他們在面對大一計概時遊刃有餘而不至手忙腳亂跟不上.
長遠來看, 投資在程式設計能力的培養的回報是很大的. 程式設計應用在各行各業, 與醫療數據結合, 與科學實驗結合, 與物流運輸結合, 與金融體系, 工業設計, 藝術電影, 航太科技結合, 更不用提現代人不可或缺的網際網路與日益蓬勃的人工智慧, 而這些產業對資訊人才的需求只會越來越多.
Q 5: 學 stone 需要什麼樣的電腦配備?
筆電規格只要可以無線上網, 有 Chrome 或 Firefox 瀏覽器即可使用
Q 6: 請假有補課機制嗎?
如需請假請事先告知, 老師會將上課畫面錄影供學生自己補課觀看
Q 7: 上完 Stone 以後有什麼延續的課程嗎?
一般學生上完 Stone 進階以後, 已經具備程式設計的基本能力, 如果有興趣進修, 我們建議可以開始學 C++ 基礎, C++ 解題, 演算法, 資料結構 或 Python 網頁設計等.
Q 8: 有什麼競賽活動可以參加嗎? 我的小孩適合參加競賽嗎?
目前比較知名的競賽活動有 NPSC 國中程式設計競賽, code forces 線上競賽, AtCoder 線上競賽 以及 TOI 練習賽, NPSC 高中程式設計競賽, 高中 APCS 程式設計能力檢測等等 。
參加競賽的孩子除了上課之外,通常都必需每周花上好幾個小時練習解題, 所以必須是對思考解題有很大的熱情與執着的孩子才比較有可能在競賽中取得好成績,有這樣熱情的孩子,我們會給予協助與輔導 。
Q 9: 從 Python 或 C++ 開始學雖然比較難, 但是不是可以節省一些時間?
我們認為要學好程式設計,不能侷限於學習程式語言 ( 如 C++ 或 Python ) 的語法及題目的演練而已,還要能慢慢領略程式設計優美的原理及廣泛的運用,諸如對規則樣式的歸納及推理, 問題的表達及分析, 程式的嚴謹及正確性, 恰當的程式結構組織, 使用者操作的直覺及流暢性等等,是需要時間慢慢養成的, 這些都需要適當的指引, 若使用C++或Python 等語言, 學生一開始就會為複雜的語法所苦, 反而不容易學到真正程式設計的核心邏輯概念, 感到事倍功半 !
我們專門為初學程式設計所設計的 Stone 教學系統, 把初學時面臨的像是繁瑣的語法, 編輯使用環境不友善等困難排除, 讓學生可以直接學習程式設計邏輯的核心, 感受寫程式的樂趣與體驗寫程式思考解決問題的成就感.
我們也在課程裡循序帶入的基礎 UI (使用者界面)設計, 物件與類別的運用, 及小型專案的實作等, 讓初學者能對程式設計的廣大內涵能有更全面的掌握而不容易迷失. 這些是個別學習 C++, Python, 或Java 短期內不容易達到的. 所以學Stone事實上是可以事半功倍的學習程式設計的比較完整的全貌!
Q 10: APCS檢測如何準備?
APCS考的是程式設計及演算法,而不是語言本身. 而 Stone 就是用又快速又紮實的方式在培養訓練學生的程式設計能力.從簡單的Stone語言系統入門, 可以提升初學者的學習動機, 降低挫折感, 有志在APCS得到好成績的學生, 從我們的學習方式入門是比較恰當的. 先從 Stone 學會寫程式, 再開始學C++ 準備APCS檢測是一個比較水到渠成, 自然的方法.
反之若只是為了檢測而開始學C++解題則比較辛苦而且對程式設計可能會產生錯誤的觀念.