中學生程式自學手冊--從電腦科學看程式自主學習學習規劃


JavaScript 中學生資源:

1. JS終結者,2017年TypeScript將成為新趨勢

2. 用十分鐘瞭解 陳鍾誠的程式設計課 (採用JavaScript + C的原因) (有很詳細的Javascript 應用領域,及理由介紹)

3. 專為中學生寫的 JavaScript 程式書

4. 專為中學生寫的 JavaScript 程式書 — 《網站設計篇》

5. 用 JavaScript 學習資料結構和演算法:JavaScript 快速入門

Python 中學生資源:

1. 適合中學生使用的Python 語言程式設計

2. Python入門

3. Django — 從平凡到超凡

4. 中文試譯:Writing a game in Python with Pygame. Part I

5. Python Handbook

6. Using Python in a High School Computer Science Program (Jeffrey Elkner
Yorktown High School, Arlington, Virginia)

7. Introduction to Python (Introduction to Python is a resource for students who want to learn Python as their first language, and for teachers who want a free and open curriculum to use with their students.)

8. Python 101 Michael Driscoll

9. Python 201 Intermediate Python

本來以為再寫一篇就可以將這主題講完,結果,發現要再寫三個系列才講得完整

從電腦科學看程式教育學習規劃

如何看待物理運算的學習 (包含開發板及機器人)

什麼才是K12 程式教育的合適規劃

這篇續 的第一段及第二段,我試圖替家長找出 資訊科學作程式教學,跟國外用物理運算工具或用創客角度做程式教學或學習的差別,其中物理運算工具 會把 “開發板” 跟”機器人” 分開兩個小節,然後第三段將筆者從家長及業者從業人員”角度看待小孩在K12教育中,程式教育有的進程及學習規劃!

再往下進行前,先提出這篇文章並不作教學方法或方式的討論! 記得我在上國中或高中時,最不喜歡念四書相關的文章,因為老師們總是用道德至上的態度去教,總覺得八股,年紀大了,才知道,人生很多學問、問題,都可以在四書中找到答案或方向,也看過,把四書可以教的,有批判性或有趣! 其實,意思是 即使九九乘法表的程式,雖然老掉牙,但也有老師把它弄得有趣!

你要你的小孩受完資訊教育的結果是什麼?

我喜歡用結果來討論,如果您的小孩從小寫程式就是要上大學資工系,那我們先來看一下大學資工系的程式設計課會怎麼上,請先看一下 ”用十分鐘瞭解 陳鍾誠的程式設計課 (採用JavaScript + C的原因)

重點資訊1.

重點資訊2 .

重點資訊3.

另一個重點是,這三張Slide 中,Javascript 換成 Python ,其實是類似的內容,但現在產業中,部分 C 語言的角色,有被Python 涵蓋! 在機器人、神經網路、人工智慧,Python 的影響力比較大!

然後,我們看一下 陳老師另一本 線上電子書 — 專為中學生寫的 JavaScript 程式書

好棒的前言! 這應該也是家長對家中有想要專研程式的小孩,要有的心理準備!

然後請看陳老師準備的目錄!

這是 Javascript 的編排! 那其他語言呢? 下表是 Python

到這,有看出些共同點嗎? 變數(或資料型態),迴圈、輸出入,然後是各語言特色的部分! 到這您或許會說,是國內老師這樣做分類吧! 以下是Python 101 的部分目錄,這是Python 101 作者Michael Driscoll ,我自己很喜歡的Python 教學書! 有看出重複的結構及資訊工程的程式教學架構嗎?

寫到這,要先說其實我完全沒修過資訊學分,我的本科不是資工! 但我高中時,就自學三種語言,所以上了大學,還幫幾個資工系的同學寫過作業! 大學時,C 正當紅,就自修,為了表示自己很厲害,K&R 的Bible ,還看原文,以為懂了! 出社會後進了IC 設計公司寫驅動程式,悲劇就發生了!一些Bugs ,正面看C 的程式碼,都沒問題,就需要將程式碼轉成組合語言還要 Realtime Tracing 。 C 很簡練,但畢竟是高階語言,組合語言,那是需要另一種腦袋,我適應了很久! 其中,還有一個Bug ,Realtime tracing 組合語言好幾天,實在不行了,找學長來看,就覺得進出函數的Stack ,怪怪的! 我們就去換Complier 版本,一行程式碼都沒改,就好了! 真的很 … ooxxx!

好,我的故事不是重點! 要說的是,學程式是一種技能,但不代表中學大學就會將你未來碰到的問題解決方法學會! 其實其他領域也是如此! 中學生會不會學會程式技能比絕大多的資訊工程系的學生好,答案當然是 — 當然! 有沒有必要要在小孩有表現出程式天份的時候,替他在中學階段規劃完整的資訊工程學習?

“vPhysics 是甚麼?

在進到物理運算工具的段落前,我先介紹一個叫 vPhysic 的計畫: “vPhysics 是甚麼? V代表視覺化(Visual)、虛擬化(Virtual),和透過電腦程式語言(VPython), 最後邁向Victory of Physics。

臺大物理系石明豐教授去年融合電腦程式「Python」與「VPython」模組於大一普通物理課程的跨領域學習” ,不少高中老師像南港高中高慧君老師有在推廣! 下圖 分別是 都普勒效應 跟 電場 由 vPhysic 產生出來! 我提這作什麼?

程式教育傳統上,會將數學加入,如Scratch基礎程式設計題庫與數學但在國外,其他學科不僅是研究,在中、大學教學中已經在使用程式工具幫助學習,了解如何使用程式工具作研究! 這裡提一個有趣的觀點,如果讓國小學生用Scratch 寫一個投籃程式,他需不需要懂 一元二次方程式,或是學高中拋物線物理之後,再來寫! 只告訴他要用拋物線公式,他寫得出來嗎? 若是他寫得出來,可以說他懂一元二次方程式或是拋物線運動嗎? 這是台灣傳統教育上,不容易接受的! 但若是自我學習的學生,是很容易作這樣的跳躍學習!

前面有提我的有關編譯器慘痛經驗,我在看vPhysic 的例子時,發現他的編譯器,是較老的版本,並不普遍,我有將部分例子改到 Jupyter ,整理到一段落後,若有興趣的可以私訊給我! 回到程式學習,若初步程式概念有了後,除了選有興趣的程式語言,選一個有普遍性的編譯環境是十分重要,不只是編譯環境的知識及技巧,自己累積的程式碼的相容性(像 vphysic 範例程式碼,不能直接放到 Jupyter )! 我們在這段落,先用年紀區分,我個人意見高中以上,有興趣將程式變成自己的職業技能(大學兼差,作專案…),一定要用開始普遍性的編譯環境 例如: Jupyter for Python , windows 上 用 Visual Studio , Linux eclipse , MacOS Xcode !


線上課程:

[程式創客] 中學生程式自學手冊

[Coding Maker] micro:bit Python 與 Python 3 的距離

[AI 創客] Scratch AIoT (人工智慧物聯網)

[AI 創客] Scratch AI

更多課程:

www.steamcourses.org