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

ไอเดีย (Idea) idea exam education

ไอเดีย #36: ระบบคลังข้อสอบและสอบออนไลน์

ครูหลายท่านมีข้อสอบสะสมไว้เป็นร้อยข้อ แต่กระจายอยู่ในไฟล์ Word คนละโฟลเดอร์ ทุกครั้งที่จะสอบเก็บคะแนนต้อง copy มาเรียงใหม่ พอใช้ชุดเดิมซ้ำ รุ่นพี่ก็ส่งเฉลยต่อให้รุ่นน้อง ส่วนการสอบออนไลน์ที่ใช้ฟอร์มสำเร็จรูปก็คุมเวลาและสุ่มข้อไม่ได้อย่างที่ต้องการ ระบบคลังข้อสอบพร้อมสอบออนไลน์จึงเป็นโจทย์ที่ทั้งโรงเรียนและสถาบันกวดวิชาอยากได้ และเป็นโปรเจกต์ที่สอนเรื่องการออกแบบข้อมูลได้ดีมาก

ใครจะใช้

  • ครูผู้ออกข้อสอบ — เพิ่มข้อสอบเข้าคลัง จัดชุดสอบ ดูผล
  • นักเรียน — เข้าสอบตามเวลาที่กำหนด ดูคะแนนเมื่อครูเปิดให้ดู
  • หัวหน้ากลุ่มสาระหรือฝ่ายวิชาการ — ตรวจทานข้อสอบ ดูสถิติรวม

ฟีเจอร์ขั้นต่ำ (MVP)

  • คลังข้อสอบแบบปรนัย จัดหมวดตามวิชา หน่วยการเรียนรู้ และระดับความยาก
  • สร้างชุดสอบแบบกำหนดเงื่อนไข เช่น สุ่มหน่วยละ 5 ข้อ ง่าย 60 เปอร์เซ็นต์ ยาก 40 เปอร์เซ็นต์
  • สุ่มลำดับข้อและลำดับตัวเลือก นักเรียนแต่ละคนได้ข้อสอบไม่เรียงเหมือนกัน
  • จับเวลาฝั่ง server หมดเวลาแล้วส่งคำตอบอัตโนมัติ และบันทึกคำตอบทุกครั้งที่เลือก เน็ตหลุดก็ไม่หาย
  • กันโกงขั้นพื้นฐาน เช่น เปิดสอบเฉพาะช่วงเวลา ใช้รหัสเข้าห้องสอบ บันทึกเมื่อสลับหน้าต่าง
  • ตรวจอัตโนมัติและสรุปคะแนนรายคน export ได้

ต่อยอดได้อีก

  • วิเคราะห์ข้อสอบ ค่าความยากและอำนาจจำแนกรายข้อ เพื่อคัดข้อที่ไม่ดีออก
  • รองรับข้อสอบอัตนัยให้ครูตรวจเองพร้อมเกณฑ์ rubric
  • นำเข้าข้อสอบจาก Excel ตามแม่แบบที่กำหนด
  • รองรับสมการคณิตศาสตร์และรูปภาพในโจทย์

โครงข้อมูลตั้งต้น

  • questions — id, subject_id, unit, difficulty, body, created_by, status
  • choices — id, question_id, body, is_correct
  • exams — id, title, duration_min, open_at, close_at, rules_json, access_code
  • attempts — id, exam_id, student_id, started_at, deadline_at, submitted_at, score
  • attempt_answers — id, attempt_id, question_id, choice_id, answered_at
  • attempt_events — id, attempt_id, event_type, created_at

ระดับความยาก และสิ่งที่จะได้เรียนรู้

ระดับ ท้าทาย โดยเฉพาะช่วงที่นักเรียนทั้งระดับชั้นเข้าสอบพร้อมกัน ใช้ Yii2 หรือ Laravel + PostgreSQL/MySQL และอาจเพิ่ม Redis สำหรับ cache สิ่งที่จะได้ฝึก:

  • การสุ่มแบบมีเงื่อนไข และเก็บผลสุ่มไว้กับ attempt เพื่อให้รีเฟรชแล้วได้ชุดเดิม
  • การจับเวลาที่เชื่อเวลา server ไม่ใช่นาฬิกาเครื่องนักเรียน
  • การรับโหลดพร้อมกันจำนวนมากด้วย index ที่ดีและการบันทึกคำตอบแบบเบา
  • การวิเคราะห์ผลสอบด้วย SQL aggregate

ข้อควรระวัง

  • ห้ามส่งเฉลย (is_correct) ไปที่ browser ระหว่างสอบ เพราะเปิด DevTools ก็เห็นทันที
  • การกันโกงในเว็บทำได้แค่ระดับหนึ่ง ควรบอกครูตรง ๆ ว่าระบบช่วยลดและบันทึกพฤติกรรม ไม่ได้กันได้ทั้งหมด
  • คะแนนนักเรียนเป็นข้อมูลส่วนบุคคล ควรจำกัดให้เห็นเฉพาะครูประจำวิชาและตัวนักเรียนเองตามหลัก PDPA

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

0 คะแนน

0 คำตอบ

ยังไม่มีคำตอบ

รู้คำตอบ? ช่วยแบ่งปันได้เลย

ตอบคำถามนี้

เข้าสู่ระบบเพื่อตอบคำถามและโหวต

เข้าสู่ระบบ สมัครสมาชิก