用「讀心術」學會電腦如何自我修復(parity-error-correction)

電腦在傳輸資料時,就像我們傳紙條一樣,有時候字跡會模糊、紙張會破損(資料損毀)。但神奇的是,電腦有一種機制可以「自動發現哪裡寫錯了」,甚至「自動修復它」。

這聽起來很抽象,但透過這場「卡片讀心術」,孩子不僅能學會這個原理(同位檢查 parity-error-correction),還能體驗當魔術師的快感。

第一階段:震撼教育 (The Magic Show)

在解釋任何規則之前,先表演。這能引發極大的好奇心。

  1. 準備:請孩子排好一個 5×5 的隨機卡片陣列。
  2. 關鍵動作(佈局):告訴孩子:「我要把這堆亂七八糟的卡片變得有秩序一點。」然後迅速加上這場魔術的秘密——「第6行與第6列」(同位元),確保每一行、每一列的黑色卡片都是偶數個。
  3. 表演
    • 老師:「我現在轉過身去,閉上眼睛。請你在這 36 張卡片中,隨便選一張翻面(把黑變白,或白變黑)。」
    • 孩子翻了一張。
    • 老師轉回來,假裝掃描全場,然後迅速指著那張被翻過的卡片:「是這張,對吧?」

孩子當下的反應:「你是怎麼知道的?你有裝鏡子嗎?是不是卡片有溫度?」
(這就是建構式教學的黃金時刻,不要急著給答案,聽聽他們的猜測。)

第二階段:探究與解密 (The Investigation)

現在,邀請孩子當偵探,破解你的魔術。

✅ 建構式引導(尋找規律):
老師:「我不記得每張卡片的樣子,但我記得一種『圖案的規律』。當你翻動卡片時,你破壞了這個規律。」

  • 引導觀察:指著還沒被破壞的那些行(Row)。
    • 老師:「來數數看,第一行有幾張黑卡?」
    • 孩子:「2張。」
    • 老師:「第二行呢?」
    • 孩子:「4張。」
    • 老師:「第三行呢?」
    • 孩子:「0張。」
    • 老師:「你發現了什麼?這些數字(2, 4, 0)有什麼共同點?」
  • 發現時刻:孩子會驚呼:「它們都是偶數(雙數)!」
  • 驗證假設
    • 老師:「好,現在去看看那張被你翻過的那一行,現在有幾張黑卡?」
    • 孩子:「3張… 啊!變成奇數(單數)了!」
    • 老師:「沒錯!我的眼睛就像掃描器,我只找『哪個地方變成了奇數』,我就知道問題出在哪裡。」

第三階段:換手操作 (Student as the Computer)

讓孩子當魔術師,你當觀眾。這步驟是為了鞏固他們對「同位檢查算法」的理解。

  1. 佈局挑戰:給孩子一個 5×5 的隨機排法,請他們加上「第6行」和「第6列」。
    • 提問:「如果這一行已經有 3 張黑卡(奇數),你的第 6 張卡片要放黑色還是白色,才能讓它變回偶數?」
    • (這就是在教導如何計算 Parity Bit)
  2. 執行檢測:老師故意翻一張牌,讓孩子把它找出來。
    • 孩子需要去掃描每一行、每一列,這模擬了電腦 CPU 在進行錯誤檢查的過程。

第四階段:連結現實 (Why do we need this?)

魔術結束後,才是電腦科學知識的切入點。

✅ 建構式對話:
老師:「你覺得我們剛才玩的遊戲,跟電腦有什麼關係?電腦會玩魔術嗎?」
孩子:「不知道。」
老師:「想像你在用手機傳一張照片給朋友,訊號就像這些卡片一樣飛過天空。但是如果有閃電干擾,或者硬碟壞了一小塊,就像有個調皮的小鬼偷翻了一張卡片。」

  • 提問:「如果電腦不知道這個魔術,照片會變成怎樣?」
    • (可能會有雜訊、顏色不對)
  • 總結:「但因為電腦懂這個『偶數魔術』(同位檢查),它收到照片時會先掃描一遍。如果發現某一排變成奇數了,它就知道:『哈!這裡錯了!』然後把它翻回來。這就是為什麼你的照片通常都能完好無缺地傳送出去。」

教學觀察與提問指南

為了協助家長/老師進行對話,請參考以下表格:

情境較無效的反應 (Less Effective)較有效的引導 (More Effective)
當孩子佈局錯誤(某行仍是奇數)「不對,這一行你有 3 個黑卡,應該要加一張黑卡。」(直接糾正)「等等,我先檢查一下你的防護罩(佈局)有沒有做好… 咦,這行怪怪的,你覺得這行安全了嗎?」
當孩子找不到被翻的那張卡「你看,是第三行和第四列交叉的那張。」「你找到哪幾行怪怪的?(第三行)。好,手先指著第三行。那直的呢?有哪一列怪怪的?這兩條線在哪裡交會?」
探討限制「如果有兩張卡片被翻就找不到了。」「如果你一次翻兩張卡片,你可以騙過我的眼睛嗎?試試看。為什麼翻兩張我就找不到了?」(引導發現奇偶性可能被抵銷)

關鍵概念總結 (The Takeaway)

透過這個活動,孩子學到的不只是魔術,而是:

  1. 資料冗餘 (Redundancy):為什麼要多加那一排卡片?那是為了保護資料而付出的「額外成本」。
  2. 演算法 (Algorithm):檢查每一行是否為偶數,就是一種檢查錯誤的演算法。
  3. 錯誤修正 (Error Correction):不只知道有錯,還能透過座標(行與列的交叉點)精確地把錯誤改回來。

參考來源:csunplugged error-detection-and-correction