ครูอาจารย์อย่างเราก็รู้นะครับ ว่าถ้าอยากให้นักเรียนพัฒนาความรู้ทักษะได้ สิ่งสำคัญที่สุดคือการให้การบ้านและการตรวจการบ้าน

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

ผมสอนวิชาการเขียนโปรแกรมคอมพิวเตอร์มาหลายปี และใช้เวลาไปกับสองเรื่องนี้มากทีเดียว แต่ตลอดเวลาที่ผ่านมา ผมก็พยายามมองหาผู้ช่วยตรวจการบ้านมาโดยตลอด แรกเริ่มเดิมทีก็พยายามจะใช้สื่อการสอนออนไลน์ที่มีแบบฝึกหัดให้ผู้เรียนได้ศึกษาเองมาเป็นส่วนหนึ่งของวิชา เคยลองใช้ www.khanacademy.org หรือแม้แต่ www.codeacademy.com ที่มีภาษาไพทอนโดยเฉพาะ Python

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

สื่อประเภทสุดท้ายที่ใช้คือพวก online interactive exercise เช่น www.learnpython.org/ ซึ่งสื่อแบบนี้จริงๆ แล้วผมว่าโอเคกว่าทุกประเภทที่ว่ามาทั้งหมด เพราะมันจบในที่เดียวครับ ถ้าเป็น codeacademy มันเหมือนกับทำตามไปเรื่อยๆ ทีละนิด ส่วนการดูยูทูบก็ดี ถ้าทำถามไปด้วย คือต้องเปิดสองหน้าต่างแล้วทำไปพร้อมๆ กับวิดีโอถึงจะเวิร์ก

ที่เริ่มมาเอะใจ คือตั้งแต่ใช้ codeacademy มาหลายปี เสียงจากผู้เรียนบอกว่ามันไม่ค่อยจะเวิร์ก (แต่ผมว่ามันก็ยังดีกว่าไม่มีอะไรให้ไปผึกทำเอง เรียนเอง) แต่ก็บอกนักเรียนตลอดนะครับว่าเรียนจาก codeacademy ได้มันก็ไม่ใช่ว่าจะเก่งเลย มันแค่พื้นๆ ขำๆ เท่านั้น ช่วงเดือนที่ผ่านมานี้ผมลุยหาข้อมูลเทคโนโลยีใหม่ๆ ที่จะมาเป็นตัวช่วยก็ไปเจอบทความจากบล็อกเกอร์หลายคนพูดเหมือนกันว่า codeacademy มันไม่โอเค คุณ Mattan Griffel (learn.onemonth.com/codecademy-didnt-work/) บอกว่ามันไม่ดีเพราะไม่สามารถสอนอะไรที่เป็นเรื่องยากๆ ได้ ก็วนๆ อยู่แค่ตัวแปร การเขียนลูป อะไรแค่นั้น คุณ Cameron Chapman และ Matthew Hughes (www.makeuseof.com/tag/4-reasons-shouldnt-learn-code-codeacademy/) (skillcrush.com/2017/01/16/codecademy-learn-to-code/) พูดคล้ายกันว่า codeacademy มันเบาหวิวเกินไป คือเรียนสนุกๆ ได้แต้ม ได้รางวัลหรือ badges เอาไปอวด

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

แต่ช่วงหลายสัปดาห์ที่ผ่านมา ผมเจอเว็บใหม่ๆ ที่ดูดีมีแววว่าจะมาช่วยผู้เรียนได้ เลยอยากจะมาเล่าให้ฟังว่าสุดท้ายผมตัดสินใจเลือกใครมาเป็นผู้ช่วยคนใหม่

CS Educators StackExchange cseducators.stackexchange.com

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

Coding Bat https://codingbat.com/python

โปรเจ็กต์แบบฝึกหัดออนไลน์ของ Nick Parlante (cs.stanford.edu/people/nick/) อาจารย์สายวิทย์ฯ คอมฯ จาก Stanford ที่สามารถฝึกการเขียนได้ 2 ภาษาคือ Java และ Python

จุดเด่นคือ

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


ClassCube https://classcube.com/

คุณ Ryan Nutt ครูสอนคอมพิวเตอร์ พัฒนา ClassCube เพราะไม่เจอเครื่องมือตรวจการบ้านที่ถูกใจครับ ทำไปทำมาแล้วมันเวิร์ก แกก็เลยพัฒนาเป็นระบบบริการตรวจการบ้านขายเลย

จุดเด่น

  • สามารถทำงานร่วมกับ Learning Management System ที่เป็นระบบ open source เช่น Moodle และ Canvas ได้ ซึ่งทำให้ผู้เรียนไม่ต้องกระโดดไปมาหลายระบบ และคะแนนจะถูกบันทึกเข้าไปในฐานข้อมูลหลักช่วยให้ผู้สอนไม่ต้องกังวลกับการรวมคะแนนจากหลายระบบ
  • รองรับหลายภาษา แต่ผู้สอนต้องเขียน Unit Test ของภาษานั้นๆ ได้
  • คุณ Ryan ขยันมากครับ ทำ tutorial video ใน youtube ให้ดู มีช่องทาง social media ให้ติดต่อได้ด้วย

ข้อสังเกต

  • ระบบตรวจงานผ่าน cloud ทำให้คุณ Ryan ต้องเก็บเงินค่าบริการ เพื่อเป็นค่าเช่า servers ครับ ราคาก็ตั้งแต่แปดร้อยบาทไปถึงหมื่นกว่าเลย แล้วแต่จำนวนนักเรียน

relp.it https://repl.it/

เป็นระบบที่รองรับ นักเรียน + อาจารย์ คืออาจารย์เข้ามาสร้างแบบเรียนได้ มีภาษาคอมพิวเตอร์ให้เลือกเป็นสิบ พอสร้างบทเรียนแล้วก็ส่งอีเมลหรือ URL ไปให้นักเรียนเข้ามาทำแบบฝึกหัด อาจารย์ก็ดูความคืบหน้าของผู้เรียนจากกระดานสรุปข้อมูล (dashboard) ได้ด้วย เรียกว่าเป็นระบบที่สมบูรณ์ทีเดียว ผู้พัฒนามีลูกค้าเป็นบริษัทยักษ์ใหญ่อย่าง Google, Facebook และมหาวิทยาลัยแนวหน้าทั้ง UC Berkeley, MIT, Harvard

จุดเด่น

  • มีบทเรียนสำเร็จรูปพร้อมให้เราใช้ได้เลยครับ อย่างภาษา Python นี่มีห้องเรียนออนไลน์พร้อมใช้งานแล้ว พร้อมแบบฝึกหัดเป็นร้อย
  • สามารถปรับแต่งแบบฝึกหัดได้ เช่นการตั้งวันส่งงาน การตั้งลำดับแบบฝึกหัด (dependencies) เช่นต้องผ่านแบบฝึกหัด ก ก่อนจะไปถึงแบบฝึกหัด ข ได้
  • มี dashboard ให้ครูสามารถดูความคืบหน้าของผู้เรียนและตรวจงานได้
  • รองรับหลายภาษา แต่ผู้สอนต้องเขียน Unit Test ของภาษานั้นๆ ได้

ข้อสังเกต

  • เว็บใช้ระบบฟรีเมียม คือสามารถใช้ฟรีถ้ามีนักเรียนไม่เกิน 200 คน ถ้ามากกว่านั้น หรืออยากได้ระบบที่ทำงานเร็วขึ้นก็ต้องจ่ายเพิ่มครับ

ลองดูวิธีการใช้งานระบบ relp.it classroom ได้จากลิงก์นี้เลยครับ


Snakify https://snakify.org/en/

Snakify นี่เน้น Python เลยครับ ชื่อ Snake ก็คืองูเหมือนกัน ถึงแม้โปรไฟล์ลูกค้าของระบบนี้ไม่ได้ยิ่งใหญ่เหมือน relp.it เป็นโรงเรียนมัธยมเสียส่วนใหญ่ แต่มีมหาวิทยาลัยดังอยู่สองแห่งคือ University of Pittsburgh และ UC Santa Cruz

ผมมาเจอ Snakify เพราะเข้าไปลองใช้ relp.it และพบว่าคนที่เข้ามาสร้างบทเรียนภาษา Python มากมายใน relp.it ที่ชื่อ Vitaly Pavlenko เป็นคนก่อตั้ง snakify.org ซึ่งตอนนี้มีบทเรียนเฉพาะ Python อยู่ทั้งหมด 11 เรื่อง แถมภาษาเกี่ยวกับการพัฒนาเว็บอีกนิดหน่อยคือ JavaScript, HTML, CSS, Bootstrap, และ jQuery

เรื่องนึงที่เด่นมากของ Snakify คือการรวมเอาความสามารถเรื่องการสร้างภาพจากภาษา (visualization) ถ้าให้ผมเดา มันคือการดึงเอา open source จาก pythontutor.com มาเป็นส่วนหนึ่งของระบบ


การใช้ภาพเข้ามาช่วยอธิบายขั้นตอนการทำงานของโปรแกรมก็เหมือนการอธิบายเรื่องเดียวกันด้วยวิธีการที่แตกต่าง อย่างน้อยที่สุดมันช่วยเพิ่มโอกาสให้ผู้เรียนทำความเข้าใจแบบฝึกหัดหรือวิธีการแก้ปัญหาที่ตัวเองทำอยู่ได้ หลายครั้งที่เราต้องไล่ดูโปรแกรมทีละบรรทัด (debugging) การไล่ดูด้วยรูปภาพก็จะช่วยให้เห็นความเคลื่อนไหวของค่าตัวแปรต่างๆ ได้ง่ายขึ้นครับ


Snakify เอา visualization เข้ามาผสมกับแบบฝึกหัดที่วางไว้แล้ว ทำให้ผู้เรียนค่อยๆ ต่อยอดความเข้าใจในเนื้อหาไปได้เรื่อยๆ และแน่นอนว่าระบบบันทึกความก้าวหน้าของผู้เรียนให้ด้วย

จุดเด่น

  • มีบทเรียนพร้อมแบบฝึกหัด Python พร้อมใช้
  • มี dashboard ให้ครูสามารถดูความคืบหน้าของผู้เรียนและตรวจงานได้
  • รองรับหลายภาษา แต่ผู้สอนต้องเขียน Unit Test ของภาษานั้นๆ ได้
  • มี dashboard ให้ผู้สอนสามารถติดตามความคืบหน้าของผู้เรียนได้

ข้อสังเกต

  • แบบฝึกหัดมีจำกัด เหมาะสำหรับผู้เริ่มต้นเรียนภาษาแรก


นั่นละครับ การเดินทางจากที่เริ่มจาก StackExchange ก็มาจบลงตรง Snakify เพราะมันตอบโจทย์สำหรับวิชาเริ่มต้น มี visualization มี dashboard และแน่นอนครับ ฟรีตลอดงาน

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