ในขณะที่นักศึกษากำลังเรียนรู้หลักสูตรวิทยาการคอมพิวเตอร์เบื้องต้นนั้น มีนักศึกษาจำนวนมากที่พบกับความยากลำบากในการนำแนวความคิดรากฐานดังกล่าวไปประยุกต์ใช้ เคย์ ฮอร์สต์แมนน์ อาจารย์ภาควิชาวิทยาการคอมพิวเตอร์ มหาวิทยาลัย SJSU ต้องการช่วยนักศึกษาให้ฝึกเขียนโปรแกรมด้วยตัวเอง เพื่อที่นักศึกษาจะได้พัฒนาทักษะของตนเองได้รวดเร็วยิ่งขึ้น ทว่าเป็นเรื่องน่าเสียดายที่โจทย์การเขียนโปรแกรมมักจะถูกนำมาใช้ซ้ำแล้วซ้ำอีก ดังนั้น นักศึกษาจึงค้นหาคำตอบทางออนไลน์ได้อย่างง่ายดาย ศาสตร์จารย์ฮอร์สต์แมนน์จึงต้องคิดหาวิธีที่จะทำให้นักศึกษาได้ฝึกฝนมากขึ้นในขณะเดียวกันก็จะต้องหาคำตอบได้ไม่ง่ายนัก
มหาวิทยาลัยแห่งรัฐซานโฮเซสนับสนุนนักศึกษาด้วยการสอนหลักการพื้นฐานในการเขียนโปรแกรม
ภาควิชาวิทยาการคอมพิวเตอร์ของ SJSU ประสบปัญหาการขาดแคลนเครื่องเสมือน จึงจำเป็นต้องหาทรัพยากรเพิ่มเติมเพื่ออำนวยความสะดวกให้กับนักศึกษาสาขาวิชาวิทยาการคอมพิวเตอร์ในการฝึกเขียนโปรแกรมได้อย่างไม่จำกัด
"ขณะที่นักศึกษากำลังทำการบ้านอยู่ในคืนวันอาทิตย์ อาจจะมีเครื่องเสมือน 20 เครื่องกำลังทำงานอยู่ และเมื่อปริมาณงานมีการเปลี่ยนแปลงไป เครื่องเสมือนก็จะทำงานเพิ่มขึ้นและลดลงโดยอัตโนมัติ"
Cay Horstmann, ศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์, มหาวิทยาลัยซาน โฮเซ สเตต
ช่วยให้นักศึกษาทุกคนได้รับการฝึกอบรมจากการฝึกปฏิบัติจริง
การสร้างระบบขึ้นมาให้นักศึกษาใช้สอนตัวเองนั้น เริ่มมีความสำคัญมากยิ่งขึ้น เนื่องจากนักศึกษาในสาขาที่ไม่เกี่ยวข้องกับวิทยาการคอมพิวเตอร์ เช่น ชีววิทยาและกฎหมาย เริ่มมีความสนใจในการเขียนโปรแกรมเพื่อนำมาช่วยทำวิจัยหรือเพื่อให้ทำงานได้มากขึ้น การเขียนโปรแกรมจึงไม่ได้มีไว้สำหรับแค่นักพัฒนาไฟแรงอีกต่อไปแล้ว
“ภาควิชาวิทยาการคอมพิวเตอร์ต้องเตรียมความพร้อมรับกับความต้องการเสริมทักษะในการเขียนโปรแกรมที่เปลี่ยนแปลงนี้” ฮอร์สต์แมนน์กล่าว “นักศึกษาทั่วไปลงเรียนวิชาวิทยาการคอมพิวเตอร์เพื่อช่วยให้ตัวเองทำงานในด้านของตัวเองได้อย่างมีประสิทธิภาพยิ่งขึ้น และเนื่องจากเราขาดแคลนครูผู้สอนวิชาวิทยาการคอมพิวเตอร์ ดังนั้น นักศึกษาจึงต้องเรียนรู้ได้จากการฝึกปฏิบัติด้วยตนเอง”
Cay ได้ข่าวเรื่องโปรแกรมทุนการศึกษาของ Google Cloud ผ่าน Special Interest Group on Computer Science Education (SIGCSE) และตัดสินใจสมัครขอรับเครดิตเพื่อการวิจัยจาก Google Cloud หลังจากนั้น เขาก็ได้รับเครดิตเพื่อใช้กับผลิตภัณฑ์ Google Cloud ใดก็ได้ และได้ใช้เครื่องมือต่างๆ เพื่อพัฒนาเครื่องมือให้คะแนนอัตโนมัติที่ชื่อว่า CodeCheck ซึ่งมีแบบฝึกหัดนับร้อยรายการสำหรับให้นักเรียนได้ฝึกการเขียนโปรแกรม
CodeCheck เป็นโปรแกรมบนเว็บไซต์ที่ออกแบบมาเพื่อช่วยสอนนักศึกษาเกี่ยวกับวิธีการเขียนโปรแกรมในภาษาที่มีความหลากหลาย โดยอาจารย์ปรับเปลี่ยนโจทย์ในการเขียนโปรแกรมได้ เพื่อที่นักศึกษาจะต้องสร้างคำตอบขึ้นมาเอง และแทบไม่มีคำตอบให้ลอกออนไลน์ เนื่องจากเซิร์ฟเวอร์ของภาควิชาวิทยาการคอมพิวเตอร์ใช้งานจนเต็มพิกัดแล้ว ดังนั้น เคย์จึงสร้าง CodeCheck ขึ้นมาโดยใช้ Google Compute Engine ซึ่งเป็นเครื่องเสมือนที่มีพลังในการคำนวณไร้ขีดจำกัด โดยเคย์เลือก Stackdriver สำหรับใช้ในการเฝ้าติดตาม การบันทึก และการวินิจฉัย และเลือกใช้ Cloud SQL เนื่องจากปรับเปลี่ยนขนาดได้และใช้งานได้สะดวกสบาย
“ขณะที่นักศึกษากำลังทำการบ้านอยู่ในคืนวันอาทิตย์ อาจจะมีเครื่องเสมือน 20 เครื่องกำลังทำงานอยู่ และเมื่อปริมาณงานมีการเปลี่ยนแปลงไป เครื่องเสมือนก็จะทำงานเพิ่มขึ้นและลดลงโดยอัตโนมัติ” ฮอร์สต์แมนน์กล่าว
ตอนนี้อาจารย์ภาควิชาวิทยาการคอมพิวเตอร์ของมหาวิทยาลัย SJSU ใช้เครื่องมือการประมวลผลแบบคลาวด์ (Cloud Computing) ในการสอนเขียนโปรแกรม จึงไม่ต้องกังวลเรื่องขีดความสามารถของเซิร์ฟเวอร์ในคณะอีกต่อไป และทำให้รองรับนักศึกษาจำนวนมากขึ้นได้ง่ายยิ่งขึ้น ซึ่งรวมถึงนักศึกษาที่กำลังศึกษาในคณะอื่นนอกเหนือจากคณะวิทยาการคอมพิวเตอร์ด้วย อีกทั้งนักศึกษายังได้เรียนรู้การบริหารจัดการระบบจากทางไกล การปรับเปลี่ยนปริมาณงาน การลงบันทึก และการใช้งานระบบอัตโนมัติ
กระตุ้นให้นักศึกษาสอนตัวเอง
CodeCheck ส่งความคิดเห็นให้นักศึกษาทราบถึงผลการเขียนโปรแกรมของตนเองแบบเรียลไทม์ ดังนั้น นักศึกษาจึงทราบทันทีว่าคำตอบของตนเองผ่านหรือไม่ CodeCheck จะไม่บอกนักศึกษาว่าทำจุดใดผิด นักศึกษาจะต้องเป็นผู้ค้นหาด้วยตนเอง ในอดีต กว่าที่นักศึกษาจะได้รับความคิดเห็นต่อผลงานของตัวเองก็ต้องใช้เวลาหลายสัปดาห์หลังจากที่ส่งงานไปแล้ว ซึ่งกว่าจะถึงตอนนั้น นักศึกษาก็มักจะลืมไปแล้วว่าใช้ขั้นตอนใดจึงได้คำตอบนั้นมา
ผลการสำรวจพบว่า นักศึกษาเห็นว่าการมีทรัพยากรให้ฝึกปฏิบัติทางออนไลน์นั้นเป็นสิ่งที่เป็นประโยชน์ นักศึกษาจะไม่รู้สึกอายหากทำผิดพลาด และไม่รู้สึกกดดันว่าจะต้องทำให้เสร็จภายในเวลาที่กำหนด
จากข้อมูลของฮอร์สต์แมนน์พบว่า CodeCheck ยังช่วยพัฒนาการเรียนรู้และผลการทดสอบของนักศึกษาอีกด้วย ในชั้นเรียนภาษา Java สำหรับนักศึกษาที่ไม่ใช่เอกวิทยาการคอมพิวเตอร์ซึ่งแบ่งออกเป็น 2 กลุ่ม พบว่ากลุ่มที่ใช้ CodeCheck มีผลงานดีกว่ากลุ่มควบคุม 50% ส่วนในชั้นเรียนภาษาเขียนโปรแกรม กลุ่มที่ใช้ CodeCheck ทำคะแนนในส่วนคำถามการเขียนโปรแกรม Scheme ได้สูงกว่ากลุ่มควบคุม 20% และมีคำถามหนึ่งที่ไม่ได้อยู่ในคำถามแบบฝึกหัด ปรากฏว่าทั้งสองกลุ่มทำคะแนนได้เท่าๆ กัน ในชั้นเรียนภาษา C++ สำหรับนักศึกษาที่โอนหน่วยกิตมา ซึ่งนักศึกษาทุกคนต้องทำโจทย์ฝึกหัด พบว่าจำนวนครั้งโดยเฉลี่ยที่นักศึกษาพยายามตอบต่อโจทย์หนึ่งข้อลดลงหนึ่งในสามเมื่อเทียบระหว่างช่วงเริ่มเรียนหลักสูตรและช่วงปลายหลักสูตร อีกทั้งระยะเวลาโดยเฉลี่ยในการทำแบบฝึกหัดก็ลดลงครึ่งหนึ่งด้วย
สอนการเขียนโปรแกรมให้กับทุกคน
นักศึกษากำลังเริ่มกลายเป็นผู้ใช้งานระบบคลาวด์ที่มีความเชี่ยวชาญ ดังนั้นเครื่องมือด้านการศึกษาต่างๆ ต้องได้รับการพัฒนาเพื่อรองรับนักศึกษาสาขาวิทยาการคอมพิวเตอร์และนักศึกษาในคณะอื่นๆ ตัวอย่างเช่น เมื่อนักศึกษาพัฒนาจากโจทย์ที่เป็นรูปภาพแบบธรรมดาไปเป็นการสร้างลูป ก็นับว่าเป็นการก้าวกระโดดในแง่ของแนวความคิด เนื่องจากลูปต้องทำงานให้กับทุกข้อมูลที่ป้อนเข้าระบบ มีนักศึกษาจำนวนมากที่เข้าใจแนวความคิดนี้ แต่ว่าการนำไปประยุกต์ใช้นั้นยากกว่ามาก เมื่อนักศึกษาได้เรียนรู้รูปแบบแล้ว ก็จะเริ่มเข้าใจวิธีการนำแนวความคิดดังกล่าวไปประยุกต์ใช้เพื่อเขียนโปรแกรม
เมื่อใช้งานโปรแกรม Autograder นักศึกษาจะเริ่มจากรหัส 5 แถวง่ายๆ เมื่อได้รับการบ้านที่จะต้องเขียนรหัส 200 แถวแล้ว รหัสแค่ 5 แถวก็อาจจะดูเล็กน้อยมาก แต่เป้าหมายก็คือให้เรียนรู้การค่อยๆ เพิ่มทีละน้อยและค่อยๆ นำสิ่งที่ตนเองได้เรียนรู้มาประยุกต์ใช้กับการบ้านที่ซับซ้อนยิ่งขึ้น
“การเขียนโปรแกรมเป็นทักษะในศตวรรษที่ 21 ของนักธุรกิจ นักวิทยาศาสตร์ นักกฎหมาย นักข่าว และของทุกคนที่ทำงานกับข้อมูล” ฮอร์สต์แมนน์กล่าว “หากเราล้มเหลวไม่เป็นท่ากับการสอนนักศึกษาเอกวิทยาการคอมพิวเตอร์เพราะใช้รูปแบบการบรรยาย เข้าห้องแลป ทำการบ้านแล้ว วิธีแบบนี้ก็คงใช้ไม่ได้ผลกับนักศึกษาที่ไม่ได้เรียนเอกนี้ ผมจึงใช้ “วิธีเรียนรู้จากการทำซ้ำๆ” ที่ผ่านการพิสูจน์ว่าได้ผลจริงมาแล้ว”
"การเขียนโปรแกรมเป็นทักษะในศตวรรษที่ 21 ของนักธุรกิจ นักวิทยาศาสตร์ นักกฎหมาย นักข่าว และของทุกคนที่ทำงานกับข้อมูล"
Cay Horstmann, ศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์, มหาวิทยาลัยซาน โฮเซ สเตต
ใช้งาน Autograder ร่วมกับระบบปฏิบัติการหลังบ้านได้อย่างราบรื่น
Stackdriver มีความสามารถในการเฝ้าติดตามและการวินิจฉัยที่เปี่ยมประสิทธิภาพซึ่งช่วยให้เคย์แก้ไขปัญหาต่างๆ ได้และมั่นใจได้ว่านักศึกษาใช้งาน Autograder ได้อย่างเหมาะสม ตัวอย่างเช่น หากนักศึกษาพยายามเปิดโปรแกรมเพื่อลบโปรแกรมอื่นๆ ทิ้งหรือทำให้เครื่องดับ Autograder จะขัดขวางคำสั่งดังกล่าวโดยอัตโนมัติ บางครั้งเคย์เคยต้องใช้เวลานานหลายชั่วโมงในการแก้ไขข้อบกพร่องของโปรแกรมเพื่อค้นหาสาเหตุของปัญหา
เป้าหมายหลักของ CodeCheck คือเพื่อลดความขัดแย้งสำหรับนักศึกษาทุกคนที่ต้องการฝึกเขียนโปรแกรม นักศึกษาไม่ต้องลงทะเบียนและลงชื่อเข้าใช้งาน Autograder อาจารย์บูรณาการ CodeCheck รวมไว้ในระบบบริหารจัดการการเรียนรู้ (Learning Management System: LMS) ได้ นักศึกษาทำงานใน LMS ได้โดยตรง แล้ว Autograder จะแจ้งคะแนนให้นักศึกษาทราบ ส่วน Cloud SQL จะเก็บบันทึกว่านักศึกษาใช้เวลาในการทำงานที่ได้รับมอบหมายนานเท่าใดและจะทำการสำรองข้อมูลโดยอัตโนมัติ การบูรณาการนี้ช่วยให้นักศึกษาคลิก “บันทึกคะแนนของฉัน” เพื่อส่งงานได้ ซึ่งเป็นการส่งโปรแกรมที่สะดวกทั้งสำหรับอาจารย์และนักศึกษา
“การเขียนโปรแกรมกลายเป็นทักษะสำหรับอนาคตมากกว่าเป็นทักษะเฉพาะของนักพัฒนา ดังนั้น ภาควิชาวิทยาการคอมพิวเตอร์จึงต้องปรับตัวเพื่อให้นักศึกษาจะได้เรียนรู้ด้วยตนเอง” ฮอร์สต์แมนน์กล่าว “นักศึกษาจะได้ท้าทายตัวเองในการเรียนรู้นอกห้องเรียนอย่างต่อเนื่องด้วยโปรแกรม CodeCheck”