跳到主要內容

從數感到程式感,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時代電腦科學教育指引(Guidance on the Future of Computer Science Education in an Age of AI (2025))》將Code Sense(程式感)定義為計算機程式底層設計、過程及系統關聯性的概念性理解,以及分析、模擬和預測程式行為的心智能力(聽起來很饒口,不知道在說什麼),我自己的解釋是比較像是你要對程式運作有把握,大概知道這段程式碼在做什麼,各部分的函式是如何連在一起,當執行程式的時候,會依序執行哪些步驟,其中的變數怎麼變化,最後會輸出怎麼樣的結果。當要修改某個模組或函式會對程式造成什麼影響,當錯誤發生的時候,可以知道怎麼解決問題及提升程式效率表現等。甚至可以從更高階的角度來看到程式在系統中是如何解決問題考量其適切性。


在這個指引當中也強調就算AI已經可以撰寫程式碼,孩子還是要建立對程式的理解。只是在撰寫程式的過程,不再是從頭到尾親自撰寫,是將思考偏重於如何評估程式碼。所以學習Programming依然重要,因為唯有孩子透過親自撰寫和Debug才有辦法建立對程式碼如何運作的理解。


而這種理解就是所謂的Code Sense,指的是孩子在AI輔助的程式開發中依然以人為主,能夠判斷AI的程式碼是否合理且安全,並具備修改跟編輯程式碼的能力。對於在資訊課程該如何整合AI進行教學,這本指引也給出以下幾個建議:

  • AI提供回饋:學生輸入他們程式碼及程式碼的說明,並從AI獲得程式設計與寫作的回饋

  • 與AI一起寫程式:用 ChatGPT 或 Copilot,讓他們體驗類似Pair programming程式設計的過程,同時促使他們提升自己的思考能力。

  • 從數學教育學習:

    • 建立多樣的表徵:用AI生成程式碼之後,請AI以小學生也能懂得方式解釋程式碼或利用流程圖說明程式執行過程,並比較不同表徵(representations)及其優缺點。

    • 探索不同的方式:學生可以使用AI創建不同的程式,以解決相同的問題,然後將它們彼此及人類產生的解決方案進行比較。

    • 解釋AI的程式碼:學生可以分析、描述跟解釋AI生成的程式碼

但指引中也提到電腦科學教師對於在教室中使用AI有以下的擔憂:AI將代替學生思考、學生將過度仰賴AI工具跟學生將失去基本技能。這些擔憂可以透過教授基礎的程式設計技能跟對AI的批判性使用來減輕。這樣可以讓學生將AI作為輔助,維持學生問題解決的能力並理解其背後的邏輯。


所以在課堂實踐中,我們應該創造機會讓學生閱讀跟用自己的話解釋程式碼、預測程式的流程、發現並改正錯誤、運用不同的方式讓學生理解程式的概念以幫助學生有效運用AI輔助撰寫程式的方式。


舉例來說可以讓學生體驗類似終極密碼的任務,程式會隨機生成一個數字,學生可以輸入一個數字,程式會判斷學生輸入的數字是否比隨機數字大或小,以此縮小範圍直到猜中為止。首先老師可以帶著學生體驗遊戲進行玩個幾輪之後,當學生已經建立對於遊戲進行的理解之後。可以讓學生試著用中文寫偽代碼(pseudocode)寫下遊戲的大概想法,再用流程圖表達大概的流程。


答案 = 隨機(1..100) 

輸出 = "請輸入你想猜測的密碼" 

如果 使用者輸入 > 答案: 

輸出 = "比答案大" 

否則: 輸出 ="比答案小"


老師再以AI生成程式碼,讓學生閱讀程式碼找出可能的錯誤或是可以改進的地方。我還會問孩子「為什麼這裡要用迴圈」「如果我輸入的不是數字是國字的三十六」會怎樣透過這樣的活動讓學生知道AI可以生成程式碼但是還是需要具備Code Sense的人來檢核。也透過這樣的活動讓學生理解他們要具備排序的基本原理跟程式如何進行才能判斷程式的正確性,才能跟AI溝通如何改進。

而Code Sense只是基本,隨著孩子年齡的增長跟能力的進步他們還要發展出Code Taste,不是只是能動,而是更適切解決當下問題的程式。就像會拍照的人很多,攝影大師卻很少。我們不是只要培育出比AI更會寫程式的孩子,而是培養出下一代的AI原住民更能與AI協作,運用AI解決問題的孩子。


留言

這個網誌中的熱門文章

Anthropic 團隊如何使用 Claude Code

Anthropic團隊透過Claude Code 改造他們的工作流,讓開發人員跟非技術人員可以處理複雜專案、自動化流程,並跨越過去限制其生產力的技能鴻溝。 他們深入採訪了以下團隊 資料基礎設施 產品開發 安全工程 推論 資料科學與視覺化 產品工程 成長行銷(Growth Marketing) 產品設計 強化學習工程 法律 Claude Code 用於資料基礎設施 資料基礎設施團隊為公司內所有團隊組織業務資料。他們使用 Claude Code 自動化例行資料工程任務、排除複雜基礎設施問題,並為技術和非技術團隊成員創建文件化工作流程,讓他們能夠獨立存取和操作資料。 主要 Claude Code 使用案例 使用截圖進行 Kubernetes 除錯 當 Kubernetes 叢集當機且不再排程新的 pod 時,團隊使用 Claude Code 診斷問題。他們將儀表板的螢幕截圖輸入 Claude Code,它逐一引導他們瀏覽 Google Cloud 的 UI 選單,直到找到顯示 pod IP 位址耗盡的警告。Claude Code 接著提供確切的指令來建立新的 IP 池並將其新增到叢集,無需涉及網路專家。 為財務團隊提供純文字工作流程 工程師向財務團隊成員展示如何撰寫描述其資料工作流程的純文字檔案,然後將其載入 Claude Code 以獲得完全自動化的執行。沒有編碼經驗的員工可以描述步驟,如「查詢此儀表板、獲取資訊、執行這些查詢、產生 Excel 輸出」,Claude Code 會執行整個工作流程,包括詢問所需的輸入,如日期。 協助新進人員熟悉程式庫 當新的資料科學家加入團隊時,他們被引導使用 Claude Code 來導覽龐大的程式庫。Claude Code 讀取他們的 Claude.md 檔案文件,識別特定任務的相關檔案,解釋資料管線間依賴關係,並幫助新人了解哪些上游來源輸入到儀表板。這取代了傳統的資料目錄和可發現性工具。 工作階段結束後更新claude.md 團隊要求 Claude Code 總結已完成的工作階段,並在每個任務結束時建議改進。這創建了一個持續改進循環,Claude Code 根據實際使用情況幫助改進 Claude.md 文件和工作流程指示,使後續迭代更有效。 跨多個實例的平行任務管理 在處理長時間執行的資料任務時...

親師溝通一定要用LINE嗎? 用LINE@會更安全更省時間

作者: 林穎俊 常聽到很多老師不想用LINE,因為LINE的方便性使得老師上班時間延伸到5點下班之後,舉凡孩子的大小事,甚至婆媳之間的事情,家長也想好好跟老師聊一聊。常讓老師覺得為什麼我下班了還要當家長的垃圾桶? 而且相信大家也有聽過同事說過。家長覺得孩子在學校受到委屈,自己覺得老師沒有公正的處理,就放話說要來學校找對方孩子的,在LINE群中這些層出不窮的事,相信都不是老師想要跟家長溝通的本意。 ㄧ、LINE@的特色: LINE@最大的特點是 群組成員無法對話跟互相加好友,只能跟老師對話。還可以設定關鍵字回復,不用立即回訊。在1對1 對話中還可以設定對話時間,不用半夜還在回line LINE@的功能:群發、1對1對話、動態消息等可以方便做好親師溝通。而且群發訊息(像是提醒 全班注意事項、班級宣導等)只要在1000則內都是不收費的。 二、如何使用LINE@ 1.安裝並登入Line@ 1-1在AppStore 中搜尋LINE@。  1-2 下載完成後,以原來LINE的帳號登入,設定好照片、名稱(例如五年孝班的小天地等),就可以開始使用了。 2.回應模式: 2-1簡介回應模式:登入後,先點進「回應模式」,內有「1對1聊天模式」、「於自動回應模式接收訊息」、「1對1聊天可對應時間」、「自動回應訊息」、「關鍵字自動回應訊息」、以及「設為好友時的歡迎訊息」。老師們可以視需要開啟前面兩項1對1聊天模式」跟「於自動回應模式接收訊息」。 2-2「1對1聊天可對應時間」是設定家長可以傳訊給您的時間,我們先點入週日,再點右上角的「編輯」再把左邊那個綠溝溝點起來,按下刪除後儲存,回到「回應模式」的畫面你就發現,週日你就收不到訊息囉~~科科 接下老師也可以設定平常上班日可以跟家長對話的時間 2-3 自動回應:先點入「撰寫新訊息」,「編輯訊息」可以設定當家長傳訊給你時,系統會自動回覆的訊息。管理用標題是你可以設定訊息的標題。指定期間或時刻,你可以區分上下課不同時間來回應家長不同的訊息。例如在上課時間,我會打「親愛的家長您好,謝謝您傳訊給我,我知道您一定有重要的事情跟我聯絡,...

【Vibe Coding 或是Vibe Prompting?】

自去年開始,我開始嘗試教孩子一門結合 Python 與 AI 的課程。一開始叫做「AI Assisted Python Programming」,但現在或許叫做「Vibe Coding」會是更貼切的名稱。這門課的想法是運用 Python 作為基礎程並結合 AI 作為教學助力,幫助小學生學習基礎的程式學習。 在最初的設計中,我採取的是「由下而上」的教學設計。透過一個實作專案,我一步步引導學生認識變數、資料型別、if-else跟函式等基本概念。當時我們設定的目標是建構一個簡易的線上訂購網站。雖然最終並未完整實作出來,但這個過程讓學生有機會從目標出發,理解每一項功能背後所需的知識與技能,並逐步補足所需的知識。 當學生遇到困難時,我會先請他們透過 AI 尋求協助。他們可以請 AI 解釋概念,甚至產出程式碼。但我給了他們一個額外的挑戰:他們必須能向我清楚說明這段程式碼的意義與邏輯。為了完成這個挑戰,他們必須學會如何有效地與 AI 對話,從而深化對程式內容的理解。這樣的好處是學生不用花費很多時間查資料獲等待老師解決問題,只要有問題AI都可以回答。然而在實際執行的過程中,我發現即使這樣循序漸進地引導,還是有部分學生容易卡關。 因此今年我嘗試轉向「由上而下」的教學方式,靈感來自 Vercel CEO Guillermo Rauch 的訪談。我從中學到人類的價值在於抽象與高階的思考,我們應該訓練孩子更清楚地表達需求,善用 AI 將想法實現,而不是拘泥於每一行程式碼的細節。 因此這學期我決定從「品味」開始,帶領學生探索「什麼是好的作品」。我們從一塊巧克力開始討論,學習如何描述一個「好吃」的巧克力,進而將這樣的能力轉移到數位創作上。我們的主題是「貪食蛇」遊戲設計。我會讓學生先用 AI 生成一個基礎版本,再引導他們去玩網路上的不同版本,學習觀察與評比:什麼樣的遊戲更美觀?速度更流暢?玩法更有趣或更具挑戰性? 接下來,學生需要根據自己的體驗,提出對「好遊戲」的定義與規格,並運用 AI 進行修正與調整,完成屬於他們自己的版本。對我來說這樣的過程可稱為「Vibe Coding」:從描述目標開始->進行生成->再進入反覆的修改與調整。但因為課程還沒告一段落,還無法做出很精確的結論。 這樣的過程也讓我思考孩子們在這當中究竟學到的是什麼?他們學到的是「Coding」本身,還是「Prompt...