ข้ามไปยังเนื้อหา

วิธีสอนที่ได้ผลกับการเขียนโปรแกรมระบบฝังตัว

  1. จัดกิจกรรมรอบตัวอย่างหนึ่งไฟล์ตาม PRIMM
  2. ออกแบบไฟล์ฝึกที่ตัวช่วยลดลงตามลำดับ และแปลงเป็นแบบฝึก Parsons
  3. แบ่งงานระหว่างอีมูเลเตอร์กับบอร์ดจริง
  4. อธิบายงานวิจัยที่รองรับได้
  • จากบทที่แล้ว ข้อความอ้างอิงแบบไหนที่ต้องใส่ในสไลด์ทุกหน้า
  • ในรายวิชาของคุณ ผู้เรียนเห็นโค้ดที่ทำงานได้ครั้งแรกในนาทีที่เท่าไรของชั่วโมงแรก

เปิดบทเรียน โปรแกรมแรก และ อ่านเซนเซอร์ ของ Explorer แล้วสังเกตสามอย่าง

  • ส่วน “ดูของจริงก่อน” ให้ ทำนายก่อนรัน
  • ส่วน “ตัวอย่างสมบูรณ์” มีป้าย ท่าที่ 1, 2, 3
  • ไฟล์ฝึกบทแรกมีช่องว่าง 2 จุด บทถัดมามี 4 จุด

สามอย่างนี้ไม่ได้เกิดโดยบังเอิญ แต่ละอย่างมีงานวิจัยรองรับ

PRIMM (Predict, Run, Investigate, Modify, Make) จัดกิจกรรมรอบโค้ดตัวอย่างเป็นห้าขั้น ผู้เรียนทำนายผลก่อนรัน รันเพื่อเทียบ สืบว่าแต่ละส่วนทำอะไร แก้โค้ดเดิม แล้วจึงสร้างของใหม่ งานวิจัยของ Sentance, Waite และ Kallia รายงานผลการใช้ PRIMM ในโรงเรียน ที่ผู้เรียนกลุ่มที่ใช้ PRIMM ทำคะแนนได้ดีกว่ากลุ่มควบคุม (Sentance, Waite & Kallia 2019) แนวนี้เข้ากับหลักคิด “เริ่มจากของที่ทำงานได้ แล้วค่อยแกะ” ที่หลักสูตรใน TESA Open Knowledge ใช้

ตัวอย่างที่ติดป้ายเป้าหมายย่อย (subgoal label) เช่น “ท่าที่ 1 เลือกหลอด” “ท่าที่ 2 เริ่มจากสถานะที่รู้แน่” ช่วยให้มือใหม่เรียนการแก้ปัญหาด้วยโปรแกรมได้ดีขึ้น (Morrison, Margulieux & Guzdial 2015) ทุกตัวอย่างสมบูรณ์ในคลังจึงมีป้ายท่าที่เสมอ

เริ่มจากตัวอย่างเต็ม แล้วค่อยเว้นว่างมากขึ้นจนผู้เรียนเขียนเองทั้งไฟล์ในงานปลายทาง (backward fading) (Renkl & Atkinson 2003; Renkl, Atkinson & Große 2004) เหตุผลอีกข้อคือ expertise reversal ตัวช่วยที่มากเกินไปจะกลับเป็นภาระเมื่อผู้เรียนเก่งขึ้น (Kalyuga, Ayres, Chandler & Sweller 2003) แนวปฏิบัติในคลังนี้: ในหนึ่งโมดูล ไฟล์ฝึกไปจาก ตัวอย่างเต็ม → ราว 2 ช่องว่าง → ราว 6 ช่องว่าง → ไฟล์เปล่าในงาน capstone

แบบฝึก Parsons ให้ผู้เรียนเรียงบรรทัดโค้ดที่ให้มาแล้วให้ถูกลำดับ งานวิจัยรายงานว่าได้ผลการเรียนรู้ใกล้เคียงกับการเขียนหรือแก้โค้ดเอง แต่ใช้เวลาน้อยกว่า (Ericson, Margulieux & Rick 2017) เหมาะกับผู้เรียนที่ยังไม่มีบอร์ด และกับบทเรียนภาษา C ที่ไม่มีอีมูเลเตอร์ ใน quiz.yaml ใช้ type: order สร้างแบบฝึก Parsons ได้ทันที

การฝึกตอบคำถาม (practice testing) กับการเว้นระยะทบทวน (distributed practice) เป็นสองเทคนิคที่ได้คะแนนประโยชน์สูงสุด ในการทบทวนงานวิจัยเทคนิคการเรียนสิบวิธี (Dunlosky et al. 2013) จึงให้ทุกบทมีเช็กความเข้าใจ 3–5 ข้อ และให้ส่วน “ก่อนเริ่ม” ถามทวนบทก่อนเสมอ

6. อีมูเลเตอร์สำหรับแนวคิด บอร์ดจริงสำหรับดีบักและการวัด

หัวข้อที่มีชื่อว่า “6. อีมูเลเตอร์สำหรับแนวคิด บอร์ดจริงสำหรับดีบักและการวัด”

การทบทวนงานวิจัยเรื่องแล็บเสมือนและแล็บทางไกลเทียบกับแล็บลงมือจริง พบว่างานวิจัยส่วนใหญ่รายงานผลเท่ากันหรือดีกว่า (Brinson 2015) แต่ทักษะบางอย่าง เช่น การดีบักฮาร์ดแวร์ การใช้เครื่องมือวัด และการรับมือกับจังหวะเวลาจริง ต้องเกิดบนบอร์ด การแบ่งงานที่ใช้ในคลังนี้คือ

ใช้อีมูเลเตอร์ ใช้บอร์ดจริง
ทำความเข้าใจแนวคิดและ API ดีบักเมื่อผลบนบอร์ดต่างจากอีมูเลเตอร์
ฝึกเติมไฟล์ฝึกและวนแก้เร็ว ๆ วัดค่าจริงด้วยเครื่องมือวัด
ออกแบบหน้าจอ เครือข่ายจริง พลังงาน และจังหวะเวลา
ผู้เรียนที่ยังไม่ได้คิวบอร์ด แล็บปลายโมดูลและ capstone

ดังที่เห็นในบทแรกของชุดนี้ การเรียนเองล้วนมีอัตราเรียนจบต่ำ การเรียนแบบ mastery ช่วยผลสัมฤทธิ์ได้จริงในภาพรวม (Kulik, Kulik & Bangert-Drowns 1990) แต่งานเดียวกันก็ชี้ว่าโปรแกรมแบบเรียนเองตามจังหวะตัวเองมักมีอัตราเรียนจบลดลง จึงใช้เกณฑ์ผ่านรายบท (80%) คู่กับการเรียนเป็นรุ่นที่มีกำหนดส่ง

ใช้ตัวอย่าง 02_blink.py ของ Explorer จัดตาม PRIMM

  • ท่าที่ 1 Predict (3 นาที) ให้อ่านแค่ค่า ROUNDS ON_MS OFF_MS แล้วเขียนคำทำนาย
  • ท่าที่ 2 Run (3 นาที) รันในอีมูเลเตอร์ เทียบกับคำทำนาย
  • ท่าที่ 3 Investigate (8 นาที) ถามว่า “ถ้าลบ led.off() บรรทัดสุดท้ายจะเกิดอะไร” “ทำไมต้อง str()”
  • ท่าที่ 4 Modify (8 นาที) เปลี่ยนจังหวะเป็นติดสั้นดับยาว
  • ท่าที่ 5 Make (15 นาที) เขียนไฟกะพริบรหัสมอร์สเอง บนบอร์ดถ้ามีคิว

เลือกโมดูลหนึ่งในรายวิชาของคุณ แล้ววางแผนไฟล์ฝึกสามไฟล์

ไฟล์ ตัวช่วย ช่องว่างกี่จุด มีแบบ Parsons ไหม
บทที่ 1 ตัวอย่างเต็ม ให้แก้ค่าเดียว 0–1
บทที่ 2 ราว 2
บทที่ 3 ราว 6

จากนั้นเขียนแบบฝึก Parsons หนึ่งข้อในรูป quiz.yaml (type: order) จากไฟล์บทที่ 2

ตอบคำถามใน quiz.yaml ถูกตั้งแต่ 80% ขึ้นไปถือว่าผ่าน

แหล่งอ่านเพิ่มสำหรับผู้สอน Carpentries Instructor Training มีบทเรื่องการสอนแบบ live coding และการให้ผลป้อนกลับที่ใช้ได้ดีกับห้องปฏิบัติการ

วิธีไหนในบทนี้ที่คุณใช้อยู่แล้วโดยไม่ได้ตั้งชื่อ และวิธีไหนที่ลองได้ตั้งแต่สัปดาห์หน้า

คำถามทบทวน

ลองตอบเองก่อน แล้วค่อยเปิดดูเฉลย

  1. เรียงขั้นของ PRIMM ให้ถูกลำดับ (เป้าหมายข้อ 1)

    1. Modify แก้โค้ดเดิม
    2. Predict ทำนายผล
    3. Make สร้างของใหม่
    4. Run รันเทียบกับคำทำนาย
    5. Investigate สืบว่าแต่ละส่วนทำอะไร
    ดูเฉลย

    ลำดับที่ถูก: B. Predict ทำนายผล → D. Run รันเทียบกับคำทำนาย → E. Investigate สืบว่าแต่ละส่วนทำอะไร → A. Modify แก้โค้ดเดิม → C. Make สร้างของใหม่

    Predict, Run, Investigate, Modify, Make ทำนายก่อนทำให้ผู้เรียนอ่านโค้ดอย่างตั้งใจ และสร้างของใหม่เป็นขั้นสุดท้าย

  2. ข้อใดตรงกับหลักการลดตัวช่วย (fading) ในหนึ่งโมดูล (เป้าหมายข้อ 2)

    1. ทุกไฟล์ฝึกมีโค้ดให้ราว 70% เท่ากันตลอด
    2. ตัวอย่างเต็ม แล้วราว 2 ช่องว่าง แล้วราว 6 ช่องว่าง จนเป็นไฟล์เปล่าในงานปลายทาง
    3. เริ่มจากไฟล์เปล่าแล้วค่อยให้ตัวอย่างเต็มตอนท้าย
    4. ไม่ต้องมีไฟล์ฝึก ให้ดูเฉลยอย่างเดียว
    ดูเฉลย

    คำตอบ: B. ตัวอย่างเต็ม แล้วราว 2 ช่องว่าง แล้วราว 6 ช่องว่าง จนเป็นไฟล์เปล่าในงานปลายทาง

    ตัวช่วยควรลดลงเมื่อผู้เรียนเก่งขึ้น ตัวช่วยที่มากเท่าเดิมตลอดจะกลายเป็นภาระ (expertise reversal)

  3. ใน quiz.yaml ของคลังนี้ แบบฝึก Parsons สร้างด้วยชนิดข้อใด (เป้าหมายข้อ 2)

    1. type: single
    2. type: multi
    3. type: order
    4. type: short
    ดูเฉลย

    คำตอบ: C. type: order

    type order ให้เรียงรายการตามลำดับ ใช้กับบรรทัดโค้ดได้โดยตรง

  4. กิจกรรมใดควรทำบนบอร์ดจริง (เลือกได้มากกว่าหนึ่งข้อ) (เป้าหมายข้อ 3)

    1. วัดแรงดันจริงด้วยมัลติมิเตอร์
    2. ดีบักเมื่อผลบนบอร์ดต่างจากอีมูเลเตอร์
    3. ทำความเข้าใจว่า ui.Label รับอาร์กิวเมนต์อะไร
    4. ทดสอบการเชื่อมต่อเครือข่ายจริงและพลังงาน
    ดูเฉลย

    คำตอบ: A. วัดแรงดันจริงด้วยมัลติมิเตอร์ · B. ดีบักเมื่อผลบนบอร์ดต่างจากอีมูเลเตอร์ · D. ทดสอบการเชื่อมต่อเครือข่ายจริงและพลังงาน

    การทำความเข้าใจ API ทำในอีมูเลเตอร์ได้ ส่วนการวัด การดีบักฮาร์ดแวร์ เครือข่ายจริง และพลังงานต้องใช้บอร์ด

  5. งานทบทวนของ Dunlosky และคณะ (2013) จัดเทคนิคใดเป็นประโยชน์สูง (เป้าหมายข้อ 4)

    1. การขีดเส้นใต้และการอ่านซ้ำ
    2. การฝึกตอบคำถามและการเว้นระยะทบทวน
    3. การสรุปย่อและการจินตนาการภาพ
    4. การฟังบรรยายยาวต่อเนื่อง
    ดูเฉลย

    คำตอบ: B. การฝึกตอบคำถามและการเว้นระยะทบทวน

    practice testing และ distributed practice ได้คะแนนประโยชน์สูงสุด จึงให้ทุกบทมีเช็กความเข้าใจและคำถามทวนบทก่อน

  6. งานทบทวนของ Brinson (2015) เรื่องแล็บเสมือนและแล็บทางไกล สรุปแนวโน้มว่าอย่างไร (เป้าหมายข้อ 4)

    1. แล็บเสมือนแย่กว่าแล็บลงมือจริงเสมอ
    2. งานวิจัยส่วนใหญ่รายงานผลสัมฤทธิ์เท่ากันหรือดีกว่าแล็บลงมือจริง
    3. ไม่มีงานวิจัยเรื่องนี้
    4. ควรเลิกใช้บอร์ดจริงทั้งหมด
    ดูเฉลย

    คำตอบ: B. งานวิจัยส่วนใหญ่รายงานผลสัมฤทธิ์เท่ากันหรือดีกว่าแล็บลงมือจริง

    ผลส่วนใหญ่เท่ากันหรือดีกว่า แต่ทักษะอย่างการวัดและการดีบักฮาร์ดแวร์ยังต้องใช้บอร์ดจริง จึงใช้แบบผสม

อ้างอิงบทเรียนนี้

ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน

"วิธีสอนที่ได้ผลกับการเขียนโปรแกรมระบบฝังตัว" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0

ข้อความอ้างอิงภาษาอังกฤษ: "Teaching methods that work for embedded programming" from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0

ลิงก์บทเรียน: https://tesaiot.github.io/tesa-qualification-program/courses/educator-kit/m02-teach-and-assess/l01-teaching-methods/

วิธีอ้างอิง TESA ฉบับเต็ม

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA