跳到主要內容

發表文章

目前顯示的是有「程式教育」標籤的文章

從數感到程式感,AI世代的程式教育想像

過去我曾帶著我們的孩子嘗試Vibe Coding。孩子會很興奮的展示他的作品說:「老師你來玩玩看,我用ChatGPT做的貪吃蛇遊戲」但是當蛇吃到東西時,分數卻還是0。孩子修改了好幾次卻找不出問題來,最後只能重新生成一個新的貪吃蛇。但卻有小學生可以跟AI協作寫出一個上架Apple Store的App。 因為AI的出現,讓寫程式變的更簡單更容易上手,但從小遊戲到App這中間的孩子要補足的是哪些東西? 我們先從「程式設計(Programming)」開始說起,到底什麼叫做程式設計?以前的我會覺得就程式設計是學程式語言,所以學程式就是要先學程式語法跟邏輯,然後學了半年不知道要幹嘛就放棄了。 但程式設計不僅是撰寫程式碼告訴機械應該如何運行,更像是運用程式碼解決特定問題的具體方式,不僅要撰寫程式碼。更像是要理解問題根據問題設計解決方案後,運用程式碼解決這個問題。 就像手機興起之後,攝影不再是專業攝影師所獨有的能力,甚至連小學生都可以是攝影師,透過手機記錄生活的點滴甚至據此賺錢。 就如同攝影工具的進步讓拍照變的更普及化,但現在程式設計的工具因LLM而有了劇烈的變化。我們可以想見的所謂「程式工程師」這個概念將會比目前坐在電腦前的程式工程師更為不一樣,或許將從開發最新LLM的AI工程師到透過自然語言跟AI對話的普通人,都將會是AI世代的程式工程師。 而在這樣的未來來說,所謂好的程式工程師特質跟所需的能力到底是什麼?哪些能力是是與AI協作的程式工程師依然重要的能力? Maggie Johnson( google.org )提出了一個概念Code Sense(以下稱做程式感),她覺得這是學生在未來軟體工程領域所需的新技能,將其比喻為數學中的「數感(Numeracy)」。就像因為計算機的發明,讓學生覺得學習抽象的公式跟複雜的運算沒有用,所以開始推動數感。數感通常指的是對數字跟其關係有良好的理解,並可以將這這種理解應用於解決現實生活的問題。 舉例來說一個數感不好的人就算用計算機算半天結果搞錯單位或少按一個0卻沒有感覺。而一個沒有程式感的人可能沒有注意到安全漏洞、程式錯誤卻不知道怎麼修改或者直接把個資暴露在外等。就像小朋友寫了一個可以讓同學投票的網站,結果才發現每個人都可以重複投票,甚至根本沒有紀錄票數的機制。 而CSTA(美國電腦科學教師協會)跟TeachAI也在《2025年AI時代電腦科學教...

Spec作為Code

  OpenAI 的 Sean Grove 分享的一場演講,主題是New Code,主要在說隨著LLM的進步,未來重要的不是Code而是Spec(規格說明書) Sean認為Code甚至只是Spec的有損投影(lossy projection),重點在其背後的「結構化溝通」,如何做為人類跟AI之間的橋樑,確保所有相關人對目標有一致的理解,也讓AI可以執行。 我們透過prompt跟LLM溝通,告訴他們我們要什麼,等到生成code之後,就丟掉prompt留下code。 但以Typescript或Rust為例,將Code透過編譯器(Compiler)編譯為機械碼之後。就像把我們把code作為source Spec生成機械碼。我們會留下原本的source Spec,不留下機械碼。 但當LLM將我們的意圖轉換為code的時候,我們卻保留了生成的code而刪除了我們的Spec或prompt。Sean把這類行為比喻為我們銷毀了原始碼卻對機械碼進行版本控制。 未來的寫程式技能將從學習語法轉化為能撰寫能完全捕捉意圖跟價值的Spec的能力,無論是工程師、產品經理或者律師,都將成為新世代的Programmer。 他還以OpenAI的模型Spec舉例如何對齊(Alignment)人類跟AI,就像雖然Spec早已規定不要過於諂媚,但4o依然發生了過於諂媚的行為,透過對齊Spec,馬上可以確認這是個Bug Sean還將這個概念跟美國憲法類比,憲法同樣用來對齊人們的行為有修正案(版本控制)有司法判例(測試)。 #雖然我聽不太懂 #但這個比喻太神了吧 聽完後的感想是只有20分鐘也太短了,好想多聽一些他的論述跟具體的作法。 #未來程式教育的重心也將從Code到Spec嗎

Canva Code

  今天試著讓學生用Canva Code重做之前的貪食蛇遊戲。 Canva Code的美感真的超強,孩子很快就投入其中。甚至還有孩子直接把流行歌融入遊戲。但也有孩子比較喜歡用Claude或ChatGPT寫,因為不懂的話AI會解釋給他聽,但目前Canva Code還沒有這個功能。 但我還在考量怎麼使用Canva Code,因為這個產品給我的感覺就是針對設計師可快速做出很美的作品。但因為看不到程式碼,也無法請AI修改或解釋程式碼無法幫助學生學習程式。 但Canva Code自訂網域跟一鍵發佈成網頁的功能,可以快速讓孩子分享成果跟同學討論。所以就教孩子如何運用AI解決問題或製作作品的角度還是個不錯的工具。

最近想看的書 React Key Concepts

  兩年前買了《React Key Concepts》第一版,但老實說我只翻了幾頁就默默擺回書架上。今年我打算在 GitHub Copilot 的協助下,把第二版從頭到尾好好看完……雖然這並不代表「學會」了所有內容。 雖然AI 可以透過人類語言快速生成程式碼,但我在過程中還是覺得自己學的不夠紮實,我還是希望自己可以更紮實的掌握React概念。 運用ai+react做出一些有趣的東西。

AI世代的Scratch?

如果你對一年前的tldraw有印象的話,它還是個很酷炫的畫布canvas軟體(或許比喻類似google jamboard,大家會比較容易理解),只要你輸入openai 的api ,你就隨手在畫布上畫下你的想法,可能是網站草稿或井字遊戲等,它都能把想法轉化成能動的程式碼。 但這次推出的tldraw computer不僅不需要你輸入任何api,因為他們跟Google 合作提供免費的gemini 2.0給使用者使用。 而我覺得很適合拿來教孩子程式跟aI的原因是 1.操作簡單的視覺化介面:雖然幾乎都是拖拉+箭頭可以搞定,但基本的命名變數跟流程都有甚至還可以打API去拿資料回來玩。 2.內建很多模態模型的功能,不論是文轉圖、圖轉聲音、圖轉文、甚至文生文等,都能在裡面玩到,可以讓孩子體驗目前aI的功能。 雖然我猜tldraw的本意不是拿來給學生學習程式的,應該是為了更遠大的AI工作自動化之類的。但對我來說還是先讓我給我的學生玩玩吧 #用自然語言寫程式 #圖片點開有試玩網址跟簡介 透過相機拍照後,ai會根據照片生成外號 https://computer.tldraw.com/t/x9hUk8gCxMGWTZHHTc6eN7 隨機生成動物圖片直到出現老虎才停止。在設立條件的地方還是要用英文比較準 https://computer.tldraw.com/t/tgq1EZKgEDjGs6UGSFDVsu call api取得SpaceX發射成果 https://computer.tldraw.com/t/c1maKsUj76cu2psoLQ1oL1

AI輔助程式設計教學

  在規劃課程的時候 以AI輔助程式教學來說,哪些能力是更重要?哪些是可以放掉的? 如何在過程中培育這些我們覺得重要的能力? 如何讓學生願意投入?在學習中獲得成就感? 如何避免學生過度仰賴AI得到答案? 如何增加學生成長思維及非認知能力? 而課程主要會以因材網的e度輔助寫程式及「遊戲化Python與AI數位學習」的教學影片為素材,教學內容編排主要參考Learn AI-Assisted Python Programming及吳恩達教授的AI Python for Beginners。 課程的安排如下: 1. AI 素養 2.如何問出好問題 3.認識因材網及e度 4.認識Colab 5.閱讀程式碼 6.Functions 7.Python基礎 7.1 Datatypes� 7.2 Variables 7.3 Conditonals 7.4 Lists 7.5 Loops 7.6 Dictionary 7.7 Files 7.8 Modules 8.問題分解 9.專案:分析運動或偶像的數據 11.專案:製作自己會用的ChatBot 12.專案:開發小遊戲 不過這個都只是想法,可能一學年都上不完啊 也請各位先進不吝指教

2023暑假程式營隊記錄

  緣起> 一開始是想嘗試如何應用ChatGPT幫助學生學會新知識,所以就利用暑假開設為期兩週的學生營隊教小學生不太可能接觸過的Python,上課內容主要是如何教ChatGPT提問跟Pyhton的基礎。學生是4-6年級自由報名的20位學生。 <課程規劃> 在準備內容跟構思教學方式時,一直找不到比較好的教學方向,直到看到The Programmer’s brain這本書後,根據The Programmer’s brain 書中的做法跟自己的一些想法,把寫程式當成學英文來教,運用提取練習、間隔學習、交錯練習、精細處理和Dual-coding來進行教學。像是要學生把新學的概念跟語法寫在flash card跟筆記上、每天複習考跟寫學習日記記錄自己學到什麼、喜歡什麼跟問一個問題,不斷地提示孩子哪些概念很重要。有趣的是孩子很喜歡kahoot 複習考,不會因為考不好而放棄學習,而是希望再給他們一段時間複習待會再考一次。 <ChatGPT 學習助理> ChatGPT或Google Bard用在debug、逐步解釋程式,讓學生追問看不懂的地方或是請ChatGPT舉例説明。 例如: 1.請你把我當成小學生逐步跟我解釋這段程式碼 ``` {程式碼}``` 2.我對於第三行的程式碼還是搞不懂,可以請你解釋並用以生活中的例子舉例幫助我理解? 但在使用ChatGPT時,為了避免給出錯誤的答案而不自知,所以孩子們都要兩人一組。一個用ChatGPT提問,一個用Google查證,還是不懂的話在呼叫老師協助。而在找出答案之後,要親口跟夥伴解釋每一句程式的意思,確認自己真的了解. <結果> 直到最後依然沒有學生落下,孩子都通過了變數、if 跟else、for loop跟函式等等初學者常見的難關,幾乎每個孩子都說自己愛上寫程式。甚至連4年級的小學生都可以掌握Python基本概念,能夠看懂及修改簡單的程式。 <如何幫助孩子學會新概念> 1.營造孩子覺得安全有趣的環境,孩子只要卡住或不懂就馬上提問,並以孩子生活舉例解釋概念及大量的合作解題時間,所以幾乎沒有孩子落下。 2.善用ChatGPT,AI生成的範例跟解答可以快速幫孩子解決問題,而且放大孩子的成就感。甚至還有4年級的家長傳照片跟我說孩子回到家還在寫Python程式。 3.運用學習科學,幫助孩子...

The Programmer's Brain

  起因只是想要試驗在AI的輔助下,學生學習從未學習過特定領域知識(如Python)的學習成效。但在備課過程中找到這本The Programmer’s Brain 這本書的作者寫書的起因就是因為她在教兒童寫程式的時候發現她從未真的上過程式課程,她小時候她是找書來自學,透過把程式碼搞懂的方式來學習。但沒人教她如何閱讀程式碼及解決問題。 而在她教孩子程式的過程中,她發現這些孩子不是沒有學習的熱情,但是就是有些地方卡住,所以她開始研究孩子要如何學習寫程式。 以我而言我覺得收穫最多的是本書把兒童如何學習寫程式的理論、相關研究跟步驟整理得相當清楚。 例如: 1.善用提取練習(retrieval practice)、間隔重複計畫(spaced repetition)、交錯(interleaving)及精細化(elaboration)的學習策略,可以幫助學習。 2.閱讀程式近似閱讀文本,閱讀理解的策略一樣可以用在閱讀程式。 3.雖然程式語法可以網路搜尋,但是當我們不斷搜尋沒有真的記到長期記憶時。會因為沒有長期記憶而影響我們如何思考問題 4.教孩子寫程式可以幫助孩子發展程式技能,但無法遷移 5.問題解決不是認知過程(cognitive process) 也不是通用技能(genric skill)因為人類使用長期記憶來解決問題及大腦傾向解決類似的問題。 6.要提高解決問題的能力不等於多解決問題,要提高程式設計師的能力不代表要多寫程式,而是要刻意練習不會的地方