ปัญหาหลักในการตรวจแลปของวิชาการเขียนโปรแกรมคอมพิวเตอร์ คือ การเดินตรวจความถูกต้องของโค้ดโปรแกรมให้กับนักศึกษาแบบรายคน เป็นระยะเวลาทั้งหมด 3-5 ชั่วโมงต่อเนื่องกัน คิดดูว่าถ้าคุณต้องสอนนักศึกษาทั้งหมด 3 ห้อง โดยมีนักศึกษาเฉลี่ย 30 คนต่อห้อง เท่ากับว่าใน 1 วันคุณต้องเดินตรวจหน้าจอคอมพิวเตอร์ของนักศึกษาทั้งหมด 90 คนต่อวันเลยทีเดียว นี่ยังไม่นับว่า ใน 1 คนอาจมีการกลับไปแก้งานเดิมแล้วกลับมาส่งใหม่อีกครั้ง หรือ ร้องขอให้ตรวจสอบความถูกต้องของโค้ดโปรแกรมว่าเป็นไปตามทฤษฏีรึปล่าว
ดังนั้นการใช้โปรแกรมช่วยตรวจความถูกต้องของโค้ดโปรแกรมในเบื้องต้น จึงค่อยข้างที่จะเป็นประโยชน์ทั้งกับตัวผู้สอน และผู้เรียนด้วยเช่นกัน ผมจึงมองหาโปรแกรมหรือระบบที่มีความสามารถในการตรวจงานการเขียนโปรแกรมของนักศึกษาในลักษณะเช่นนี้ได้ ซึ่งได้ลองใช้งานไปหลายตัว (และสร้างระบบใช้งานเองด้วยเช่นกัน) แต่สุดท้ายไปเจอกับ Github Classroom ซึ่งตอบโจทย์ทุกอย่าง
วันนี้ผมเลยจะมาแนะนำการตั้งค่าให้ Github Classroom ให้สามารถตรวจงานการเขียนโปรแกรมของนักศึกษาหรือผู้ที่สนใจได้
เมื่อสร้าง Assigment เรียบร้อยแล้ว ให้ตั้งค่าตามนี้
ต่อมา ส่วนนี้จะต้องทำการเลือก Repository Template ที่เราต้องการนำมาใช้เป็นโจทย์ ซึ่ง Template ที่ดีควรจะต้องมีดังนี้
ส่วนถัดมา คือ การตั้งค่าการมองเห็น ซึ่งแนะนำให้ตั้งค่าแบบ private เพราะจะเป็นการตั้งค่าให้เฉพาะนักศึกษาคนนั้นเท่านั้นที่จะมองเห็นโจทย์ของตนเอง และจะมองไม่เห็นโค้ดของเพื่อนนักศึกษาคนอื่นที่เคยส่งโค้ดโปรแกรมข้อนี้มาแล้ว (เป็นการป้องกันการ Copy ได้ระดับหนึ่ง แม้ว่าจะไม่ใช่การป้องกันที่ดีที่สุดก็ตาม)
ต่อมา ส่วนนี้เป็นการเลือก IDE ซึ่งโดยทั่วไปในหลักสูตรวิศวกรรมคอมพิวเตอร์ หรือ วิทยาศาสตร์คอมพิวเตอร์ ส่วนใหญ่จะเลือกใช้ VS Code เพราะเป็น IDE ที่แต่ละบริษัทซอฟต์แวร์เลือกใช้กันมากที่สุด และขั้นตอนนี้ก็เช่นกัน หากเลือกผิดตั้งแต่แรกจะไม่สามารถกลับมาแก้ไขใหม่ได้ (ถ้าต้องการเลือกใหม่ ต้องลบ Assignment นี้ แล้วสร้างใหม่เท่านั้น)
ต่อมา คือส่วนของการตั้งค่า Testcase ซึ่งส่วนนี้หากขยันหน่อย ก็สามารถตั้ง Testcase หลายๆ อันได้ การตั้งค่าหลัก ให้กดปุ่ม +Add Test
การตั้งค่า Testcase ตามนี้
เมื่อเรากำหนด Assignment เสร็จแล้ว ระบบจะพาเรามายังหน้าสรุปภาพรวมของโจทย์ข้อนี้ จากรูป ถ้ามีคนส่งงานผ่านแล้ว จะขึ้นคำว่า Submitted สีเขียว และจะแสดงด้วยว่านักศึกษาคนนั้นส่งงานมาแล้วทั้งหมดกี่ commits และส่งล่าสุดเมื่อไหร่ หากต้องการนำคะแนนออกมาใช้งานเพื่อประมวลผลต่อให้กดปุ่ม Download ได้เลย
มีข้อพึงระวังคือ เมื่อทำการโหลดไฟล์ csv มา จะมีคะแนนการส่งงานอยู่ในนั้นเรียบร้อยแล้ว แต่จะไม่มีข้อมูลของนักศึกษาอยู่เลย มีเพียงแค่ github_username เท่านั้นที่พอจะเชื่อมโยงกับข้อมูลของนักศึกษาได้ ดังนั้นจึงควรทำการ mapping ข้อมูลรหัสนักศึกษากับ github_username ให้เรียบร้อยก่อนเริ่มต้นใช้งาน github classroom เช่น ทำแบบฟอร์มเก็บข้อมูลนักศึกษา พร้อมเก็บข้อมูล github_username ให้เรียบร้อยตั้งแต่แรก
การกำหนดโจทย์สามารถทำได้หลายภาษา ทั้งภาษา C, Python, PHP, ฯลฯ แต่สิ่งสำคัญที่สุดในการทำ Auto Grading คือ การตั้งค่าคำตอบภายใน Testcase ให้ถูกต้องและสอดคล้องกับโจทย์ หากคุณตั้งค่าให้ระบบตรวจแบบ Included จะทำให้มีประสิทธิภาพในการตรวจมากที่สุด และตรวจได้ง่ายที่สุดเช่นกัน แต่หากคุณต้องการตั้งโจทย์ที่เน้นความถูกต้องจริงๆ และมี Expected Output ที่ไม่ซับซ้อนมาก แนะนำให้ใช้งานแบบ Exact จะทำได้คำตอบที่ตรงมากกว่า