สัปดาห์ที่ 04 · Code Literacy with AI

อ่านโค้ดที่ AI เขียน

ในคอร์สเดิม สัปดาห์นี้คือ "เริ่ม print + ตัวแปร" · ในคู่มือนี้เรา ข้าม ไปเลย — ให้ AI เขียนโปรแกรมจริงให้ดู แล้วเรียน "อ่านโค้ดให้เข้าใจ" ก่อน ครอบคลุม print, input, if, for, def ในงานเดียว

เป้าหมายสัปดาห์นี้

ทำไมเริ่มจาก "อ่าน" แทน "เขียน"

ในยุคก่อน — คนจะอ่านได้ต้องเขียนได้ก่อน · ในยุคนี้ — คนอ่านได้เร็วกว่าเขียนได้ เพราะ AI เขียนให้ได้แล้ว · งานสำคัญของนักศึกษาคือ "ตรวจว่า AI เขียนถูก"

อ่านได้ก่อน → แก้ได้ → ต่อยอดได้ → ในที่สุดจะเขียนเองได้โดยไม่รู้ตัว

🔒 ทำไม "อ่านโค้ดเป็น" คือทักษะที่ AI ทำให้คุณไม่ได้ AI เขียนโค้ด ให้ได้ใน 10 วินาที · แต่ "ตรวจว่าโค้ดทำตรงกับ spec มั้ย" ต้องเป็นคุณ · เพราะ AI ก็ไม่รู้ว่า spec จริง ๆ ของคุณคืออะไร — มันแค่เดา · ถ้าคุณอ่านไม่ออก → ก็ได้แค่ "copy-paste แล้วหวังว่าจะไม่พัง" · คนที่อ่านได้ + จับ bug ได้ คือคนที่ "ทำงานได้จริงในที่ทำงาน"

🎯 Running Case — Grading App ของพี่นัท (ต่อจาก W02)

ใน W01 เราระบุปัญหาของพี่นัท · ใน W02 เราออกแบบ Mental Map · สัปดาห์นี้ — เริ่ม build จริง โดยให้ AI เขียน "ส่วนเล็กที่สุด" ของ Grading App แล้วเราอ่านให้เข้าใจทุกบรรทัด

flowchart LR W01[W01
หาปัญหา] --> W02[W02
วาด Mental Map] W02 --> W04["W04 (ตอนนี้)
อ่านโค้ดส่วนที่ AI เขียน"] W04 --> W05[W05
แก้ + ต่อยอด] W05 --> W06[W06
สั่ง AI จาก spec] W06 --> W07[W07
Build CLI tools] classDef current fill:#1e3a5f,stroke:#3776ab,stroke-width:3px,color:#fff classDef past fill:#0b1020,stroke:#6b748c,color:#9aa3b8 classDef future fill:#0b1020,stroke:#6b748c,color:#9aa3b8 class W04 current class W01,W02 past class W05,W06,W07 future

Grading App ทั้งระบบยังใหญ่เกินสำหรับสัปดาห์นี้ · เราจะ "แยกชิ้นเล็ก":

ส่วนหน้าที่เรียนได้จากตัวอย่าง
Example 1คำนวณเกรดจาก 1 drawingfunction, if/elif, return
Example 2สรุปคะแนนห้องเรียนรวมlist, for loop, counter
Example 3เก็บข้อมูลนักศึกษา 1 คนdict, key access
Example 4หน้า login ของ TA (โปรเจกต์อื่น)while loop, break

📍 3 ตัวอย่างแรกคือชิ้นส่วนของ Grading App จริง · ตัวที่ 4 ตั้งใจเอาจาก project ต่าง เพราะ "นักวิศวกรอ่านโค้ดจากหลายที่" — ไม่ใช่แค่ของตัวเอง

🛠️ ติดตั้งเครื่องมือ — ก่อนเริ่มสัปดาห์นี้

📦 ยังไม่ได้ติดตั้ง? — มี 3 หน้า step-by-step แยกไว้แล้ว · ทำครั้งเดียวใช้ทั้งคอร์ส:

✅ ตรวจว่าพร้อม — Hello World

  1. สร้าง folder โปรเจกต์ — เช่น Documents/cp-w04 (ห้ามมีภาษาไทย / เว้นวรรค ในชื่อ path) · เปิดใน VS Code/Cursor: File → Open Folder
  2. สร้างไฟล์ hello.py — ใส่ print("สวัสดี โลก") · save (Ctrl/Cmd + S)
  3. กด Run ▷ มุมขวาบน · ต้องเห็น "สวัสดี โลก" ใน terminal · ถ้าได้ → พร้อมแล้ว
Hello World ไม่ผ่าน? อย่าไปต่อ · กลับไป setup-python troubleshoot หรือ setup-vscode troubleshoot ก่อน · แก้ที่นี่จะลำบาก

💡 ลืม syntax? เปิด Python Cheat-sheet ค้างไว้แท็บข้าง ๆ · ของ print/input/if/for/def ทั้งหมดอยู่ในหน้านั้น พร้อมตัวอย่างรันได้

📁 File structure ของ Python project

cp-w04/                      ← folder โปรเจกต์
├── hello.py                 ← ไฟล์ Python (ลงท้าย .py)
├── grade_calc.py            ← อีกไฟล์
├── data.txt                 ← ไฟล์ข้อมูล (ถ้ามี)
├── README.md                ← อธิบายโปรเจกต์
└── .gitignore               ← บอก git ว่าไฟล์ไหนไม่ต้องเก็บ
เคล็ดลับ Cursor กด Ctrl/Cmd + L เปิด chat panel · กด Ctrl/Cmd + K ให้ AI แก้ code ตรงที่ cursor อยู่

📝 Pseudocode — สะพานระหว่าง Flowchart กับ Python

W01 เราวาด flowchart · ทันที we want to jump → Python · แต่ มี step ระหว่างนั้น ที่ช่วยมาก: pseudocode — "code ภาษาคน" · ไม่ต้อง syntax ถูก · ใช้ "วางแผน" ก่อนเขียนของจริง

🎯 ทำไม pseudocode ช่วย

📐 Flowchart → Pseudocode → Python — ตัวอย่าง

# 📊 LEVEL 1: FLOWCHART (W01) # วาดด้วยมือ / Mermaid [Start] ↓ [รับคะแนน score] ↓ {score >= 80?} ├─ Yes → grade = A └─ No → {score >= 70?} ├─ Yes → grade = B └─ No → grade = F ↓ [print grade] ↓ [End] # 📝 LEVEL 2: PSEUDOCODE # "code ภาษาคน" · ไม่ต้องรู้ Python ขอ score จาก user ถ้า score >= 80: grade เป็น A ไม่งั้นถ้า score >= 70: grade เป็น B ไม่งั้น: grade เป็น F แสดง grade
# 🐍 LEVEL 3: PYTHON CODE # syntax จริง · รันได้ score = int(input("คะแนน: ")) if score >= 80: grade = "A" elif score >= 70: grade = "B" else: grade = "F" print(f"เกรดของคุณคือ {grade}") # 💡 สังเกต: pseudocode → Python # แทบ "1-1 mapping" # - "ถ้า" → if # - "ไม่งั้นถ้า" → elif # - "ไม่งั้น" → else # - "แสดง" → print # - "เป็น" → =

🧪 Workflow แนะนำ (ใช้ตลอด 15 สัปดาห์)

  1. 📊 วาด flowchart สั้น ๆ (5-10 กล่อง) — W01
  2. 📝 เขียน pseudocode — ภาษาผสมไทย/อังกฤษ · บรรทัดต่อบรรทัด
  3. 👀 review pseudocode — ดูว่าครอบ edge case มั้ย · ลบ step ที่ลืม
  4. 🤖 ส่ง pseudocode ให้ AI — "แปลง pseudocode นี้เป็น Python 3.11"
  5. 🐍 รัน + ทดสอบ — code ที่ได้แทบจะตรงกับ pseudocode
เคล็ดลับ — ใช้ pseudocode คุยกับ AI Prompt ที่ดี: "นี่ pseudocode ของผม: [paste] · ช่วยแปลงเป็น Python 3.11 · ใส่ type hints · มี input validation" — AI จะให้ code ที่ ตรงตามที่คิด มากกว่า "ขอ Python ที่ทำ X" ลอย ๆ

📖 ตัวอย่างที่ 1 — อ่านโปรแกรมคำนวณเกรด (ของพี่นัท)

โจทย์ที่ขอ AI: "เขียน Python ที่รับคะแนน 0-100 แล้วบอกเกรด A/B/C/D/F"

🐍 ลองรันเลย — เปลี่ยน input แล้วกด Run

def calc_grade(score): if score >= 80: return "A" elif score >= 70: return "B" elif score >= 60: return "C" elif score >= 50: return "D" else: return "F" score = int(input("กรอกคะแนน (0-100): ")) grade = calc_grade(score) print(f"เกรดของคุณคือ {grade}")

💡 ลองเปลี่ยน Input เป็น 95, 72, 45 · ดู grade ต่างกันยังไง

🗺 ดู Flowchart ของโค้ดเดียวกัน

นี่คือ flowchart ที่เทียบเท่ากับโค้ดด้านบน — ฝึก "อ่านโค้ด" ควบคู่กับ "อ่าน flowchart"

flowchart TD A([Start]) --> B[/รับคะแนน score/] B --> C{score >= 80?} C -->|Yes| C1[grade = A] C -->|No| D{score >= 70?} D -->|Yes| D1[grade = B] D -->|No| E{score >= 60?} E -->|Yes| E1[grade = C] E -->|No| F{score >= 50?} F -->|Yes| F1[grade = D] F -->|No| F2[grade = F] C1 --> Z[/print grade/] D1 --> Z E1 --> Z F1 --> Z F2 --> Z Z --> END([End])

🔍 สังเกต: elif ใน code = "ลูกศร No" ใน flowchart · return = "End ของ function"

อ่านทีละบรรทัด

บรรทัดทำอะไรคำศัพท์
def calc_grade(score):นิยาม function ชื่อ calc_grade รับค่า 1 ตัวเรียก scoredef, function, parameter
if score >= 80:ถ้า score ≥ 80 ให้ทำบรรทัดถัดไปif, condition
return "A"ส่งคำว่า "A" กลับให้คนเรียก functionreturn, string
elif score >= 70:"else if" — ถ้าอันบนไม่ใช่ ลองอันนี้elif
else:ถ้าไม่ตรงเงื่อนไขไหนเลยelse
score = int(input(...))ถามผู้ใช้, แปลงเป็นเลข, เก็บใน scoreinput, type cast
grade = calc_grade(score)เรียก function ส่ง score เข้าไป รับคืนเก็บใน gradefunction call
print(f"...{grade}")พิมพ์ออกหน้าจอ, f"..." = f-string แทรกตัวแปรprint, f-string
เคล็ดลับยุค AI ถ้ามีบรรทัดที่ไม่เข้าใจ → ไฮไลต์ → กด Ctrl+L → ถามว่า "บรรทัดนี้ทำอะไร?" AI จะอธิบายในแบบที่นักศึกษาเข้าใจ — เร็วกว่าค้น Google

📖 ตัวอย่างที่ 2 — อ่านโปรแกรมนับคะแนน (ห้องเรียนพี่นัท)

scores = [85, 72, 45, 91, 60, 33, 78] passed = 0 failed = 0 for s in scores: if s >= 50: passed += 1 else: failed += 1 print(f"ผ่าน: {passed} คน") print(f"ตก: {failed} คน") print(f"คะแนนเฉลี่ย: {sum(scores) / len(scores):.2f}")

🔎 เดินทีละขั้น — Code Trace

ยังไม่เข้าใจว่า passed และ failed เปลี่ยนยังไง? — กด ถัดไป ทีละขั้น

🎲 ทดสอบความเข้าใจ — ทำได้ไหม?

scores = [85, 72, 45, 91, 60, 33, 78]
passed = 0
for s in scores:
    if s >= 70:
        passed += 1
print(passed)
4
ผ่าน ≥ 70: 85, 72, 91, 78 = 4 คน · 45, 60, 33 ตก

คำถามเพื่อตรวจสอบความเข้าใจ

📖 ตัวอย่างที่ 3 — อ่านโปรแกรมที่ใช้ dict (ข้อมูลนักศึกษา)

student = { "name": "Ploy", "id": "640001", "scores": [85, 72, 91], } print(f"นักศึกษา: {student['name']}") print(f"รหัส: {student['id']}") total = sum(student["scores"]) avg = total / len(student["scores"]) print(f"คะแนนรวม: {total}") print(f"คะแนนเฉลี่ย: {avg:.2f}")

เรียนรู้พร้อมกัน

student = {
    "name": "Ploy",
    "scores": [85, 72, 91],
}
print(student["scores"][1])
72
student["scores"] = list [85, 72, 91] · [1] = index ที่ 1 (เริ่มนับ 0) → 72

📖 ตัวอย่างที่ 4 — อ่านโปรแกรม while + break (TA Login — อีก project)

"นักศึกษาวิศวกรอ่านโค้ดจากหลายที่" · ตัวอย่างนี้ไม่ใช่ของ Grading App แต่เป็น login screen ของ project อื่น · ฝึกอ่าน code ที่ไม่คุ้น

attempts = 0 max_attempts = 3 while attempts < max_attempts: password = input("รหัสผ่าน: ") if password == "open-sesame": print("✅ เข้าได้!") break else: attempts += 1 print(f"❌ ผิด ({attempts}/{max_attempts})") else: print("🔒 บัญชีถูกล็อค")

💡 ลองเปลี่ยน input เป็น wrong / wrong / wrong (พิมพ์ wrong 3 ครั้ง) — จะเห็น "บัญชีถูกล็อค"

ส่วนที่ทำให้สับสน

ขอ AI ทำ Trace Table ใช้ Cursor chat: "ช่วยทำตารางว่าตัวแปรเปลี่ยนยังไงในแต่ละรอบ ถ้าผู้ใช้พิมพ์: wrong, wrong, open-sesame" — AI จะตอบเป็นตาราง · นี่คือ "learning with AI" ที่จริงจัง

🎓 AI เป็น Tutor — 5 Prompts ที่ใช้ได้ตลอดชีวิต

เปลี่ยน AI จาก "คนเขียน code ให้" เป็น "คนสอน" — ด้วย 5 prompts ต่อไปนี้ · ใช้ใน Cursor chat (กด Ctrl+L) หรือ claude.ai · ไฮไลต์ code ก่อนถาม

เมื่อไหร่Prompt
อ่านบรรทัดที่ไม่เข้าใจ "อธิบายบรรทัดนี้ในแบบนักศึกษาปี 1 ที่ไม่เคยเขียน Python · ใช้ตัวอย่างจากชีวิตจริง"
ทำ Trace Table "ทำตารางว่าตัวแปรแต่ละตัวเปลี่ยนค่ายังไงในแต่ละรอบของ loop · 1 แถว = 1 step"
แปลงเป็น Flowchart "แปลง code นี้เป็น Mermaid flowchart · ใส่ลูกศร Yes/No ทุกที่"
ทดสอบความเข้าใจ "ถาม 5 คำถามเช็คว่าฉันเข้าใจ code นี้จริง ๆ มั้ย · เริ่มจากง่ายไปยาก · อย่าเฉลย"
หา edge case "ลอง input อะไรที่จะทำให้ code นี้พัง · หา 3 case ที่ developer ลืมคิด"

⌨️ Cursor Cheat-sheet — Shortcuts ที่ใช้ทุกวัน

Shortcutทำอะไรใช้เมื่อ
Ctrl/Cmd + Lเปิด AI chat panelถาม AI เรื่อง code
Ctrl/Cmd + KAI แก้ code ตรงที่ cursor อยู่แก้บรรทัดเดียว / inline (จะใช้ใน W05)
Ctrl/Cmd + IAI Composer mode (แก้หลายไฟล์)refactor ใหญ่ (W11)
F5Run ไฟล์ปัจจุบัน + debuggerรัน Python
Ctrl + `เปิด/ปิด terminalรันคำสั่ง python file.py
Ctrl + Bเปิด/ปิด sidebarดูไฟล์ในโฟลเดอร์
Ctrl + /comment / uncomment บรรทัดทดสอบเปิด-ปิด code
Alt + ↑/↓เลื่อนบรรทัดขึ้น-ลงจัดลำดับ code
Ctrl + Dเลือกชื่อตัวแปรทุกที่rename ตัวแปรหลายที่
Ctrl + Shift + PCommand Paletteหา command ใดก็ได้

✅ Self-Check — รู้ได้ไงว่า "อ่านเข้าใจจริง"?

หลังอ่าน code ตัวอย่าง — เช็คตัวเองด้วย 4 วิธีนี้ "ตามลำดับ"

  1. ✋ ปิด output ทาย — ก่อนกด Run ลองทาย output ในใจก่อน · ถ้าทายถูก = สมองคุณ run Python ได้
  2. 👥 อธิบายให้เพื่อนฟัง (Rubber Duck) — เล่าให้เพื่อน (หรือตุ๊กตาเป็ด) ฟังว่า code ทำอะไร · ถ้าติด = ส่วนนั้นยังไม่เข้าใจ
  3. ✏️ แก้ค่าเล็ก ๆ + ทาย output ใหม่ — เปลี่ยนเลข, เปลี่ยน string · ทายว่าจะออกอะไร · กด Run เช็ค
  4. 🔨 เขียนใหม่จากความจำ — ปิด code · เขียนใหม่จาก memory · เทียบกับ original · ผิดตรงไหน = จุดอ่อน
กฎ — "ขั้น 3-4 สำคัญกว่าขั้น 1-2" อ่านแล้วเข้าใจ ≠ ใช้ได้ · ต้อง "แก้แล้วยังเข้าใจ" และ "เขียนใหม่ได้" · ที่ W05 จะลงลึก

Workshop — Read & Trace 4 Programs

  1. copy ทั้ง 4 ตัวอย่าง ใส่เป็น 4 ไฟล์: grade_calc.py, pass_count.py, student_dict.py, login.py
  2. รันทุกไฟล์ และดู output · ถ้าโปรแกรมถามคำถาม → ลองตอบหลาย ๆ แบบ
  3. วาด Flowchart ของ grade_calc.py และ login.py ด้วยมือ — แล้วเทียบกับ Mermaid ที่ AI สร้างให้
  4. เขียน "Code Reading Note" — ไฟล์ notes.md สำหรับแต่ละโปรแกรม: 5-7 ประโยคอธิบายว่าทำอะไร
  5. หา 3 บรรทัด ในแต่ละโปรแกรมที่ ไม่เข้าใจ → ถาม AI ในแชท
  6. ทำ "Trace Table" ของ pass_count.py ทีละรอบ — ดูค่า s, passed, failed เปลี่ยนยังไง
  7. ขอ AI สร้างโปรแกรมที่ 5 — เช่น "เครื่องคิดเลข BMI" — แล้วทำขั้นตอน 1-6 ซ้ำกับโปรแกรมใหม่

คำศัพท์ Python ที่เจอสัปดาห์นี้

defนิยาม function
returnส่งค่ากลับจาก function
if / elif / elseการตัดสินใจ
for / whileการวนซ้ำ
break / continueออก / ข้าม รอบของ loop
print()พิมพ์ออกหน้าจอ
input()รับจาก user (คืน string เสมอ)
int() / float() / str()แปลง type
list = [...]ลำดับ
dict = {...}map คีย์→ค่า
len() / sum()built-in functions
f"...{x}"f-string แทรกตัวแปร
+= / -= / *=operator แบบยุบ (x += 1 = x = x + 1)

ข้อผิดที่พบบ่อย

รัน code ไม่ได้ — IndentationError Python ใช้ การย่อหน้า แทนวงเล็บ · ภายใน if/for/def ต้องเยื้องเข้าไป 4 ช่อง เสมอ · กด Tab ใน Cursor → แปลงให้อัตโนมัติ
copy code มาแต่ภาษาไทยกลายเป็น ??? เซฟไฟล์เป็น UTF-8 (Cursor ทำให้อัตโนมัติ) · ถ้าใช้ Notepad ระวัง encoding
"ผ่านแล้วเข้าใจ" — code รันได้ ≠ คุณเข้าใจ · ต้องอ่านอธิบายทีละบรรทัดได้ ก่อนเปลี่ยนหน้า · ถ้าไม่ทำตอนนี้ จะลำบากใน W05

ส่งงานสัปดาห์นี้

Reference จาก slide เดิม

เนื้อหานี้รวบ Topic 2 (Python), Topic 3 (Output), Topic 4 (Input), และส่วนหนึ่งของ Topic 5-7 ไว้ในสัปดาห์เดียว — เพราะ AI สอนได้พร้อมกันผ่านตัวอย่าง