1. แนวคิดการสอนเขียนโปรแกรม |
"การเขียนโปรแกรม ทุกภาษานั้นเหมือนกัน" สิ่งที่แตกต่างกัน ของแต่ละภาษาคือ syntax แต่สิ่งที่ เหมือนกันของทุกภาษาคือ การใช้ประสบการณ์จากภาษาหนึ่ง ไปใช้ในอีกภาษาหนึ่งได้ ด้วยการซึมซับ เรื่อง ของ Structure Programming จนเข้าใจ เพื่อควบคุมในสิ่งที่คล้าย ๆ กันคือ input, process และ output ซึ่งหมายความว่า ถ้าท่านเขียนโปรแกรมอะไร ในภาษาหนึ่งได้แล้ว การเขียนโปรแกรมแบบนั้น ในภาษาอื่นย่อมไม่ใช่เรื่องยากอีกต่อไป เพียงแต่ต้องศึกษาถึง syntax หรือ รูปแบบการเขียนของภาษาใหม่ นั้นเพิ่มเติม แล้วนำประสบการณ์ที่เคยเขียน ไปสั่งให้ภาษาใหม่ทำงานตามต้องการ ผมจึงมักสนับสนุนให้ นักเรียน ได้ศึกษาภาษาที่ไม่มีตัวช่วยมาก เพื่อให้เข้าใจในหลักการ และขั้นตอนการทำงาน อย่างละเอียดชัดเจน จากการทำงานของตัวแปรภาษาที่มีตัวช่วยน้อย ทำงานบน dos สามารถแปลเป็น exe และ นำไปใช้ได้โดยไม่ยุ่งยา ก เช่น c, pascal, basic, fox... หรือ clipper เป็นต้น |
3. การเริ่มต้นเขียนโปรแกรม |
โดยเฉพาะการเขียนโปรแกรมทุกภาษา ผมจะสอนให้นักศึกษาเขียนโปรแกรมควบคุมตัวเลข เช่นการพิมพ์ 1 ถึง 10 หรือ สูตรคูณ หรือปิรามิดของตัวเลข ที่ต้องฝึกใช้ Structure Programming ให้ชำนาญ และปัญหาก็เกิดขึ้นทุกครั้ง คือ "นักเรียนบ่นว่าไม่ชอบเขียน ไม่มีประโยชน์" หรือ "เขียนไม่ได้ ถึงเขียนได้ ก็ไม่รู้จะเขียนไปทำไม" แล้วผมก็ต้องกลับไปอธิบายอีกครั้งว่า การเริ่มต้นแบบนี้ "จะทำให้รู้จักควบคุมโปรแกรม ตามหลักการของโปรแกรมแบบมีโครงสร้างได้ชำนาญขึ้น รู้จักเรียนรู้ และแก้ปัญหาด้วยตนเอง รวมทั้งรู้จักแก้ไข Syntax พื้นฐานไม่ให้ผิดพลาด เมื่อสามารถเขียนโปรแกรมในระดับต่อ ๆ ไปได้"
|
4. การบ้านคือ บันไดสู่ประสบการณ์ |
สั่งงานเกือบทุกชั่วโมงเรียน ยกเว้นเทศกาล หรือวันหยุดราชการ ที่เว้นให้นักเรียนได้พักบ้าง สำหรับ projec t จะต้องใช้หลักการที่สำคัญทั้งหมดที่ได้เรียนมา หรือที่ศึกษาค้นคว้าเพิ่มเติม ด้วยตนเอง และต้องใหญ่พอที่จะใช้เวลาทำทั้งสัปดาห์ไม่เสร็จ แต่จะต้องใช้เวลาทำอย่างต่อเนื่อง ตลอดทั้งภาคเรียน การยอมรับคำวิงวอนให้ลดงานของนักเรียนนั้น อาจทำได้ตามความเหมาะสม กับบทเรียนที่ได้สอนไป แต่ขนาดงานก็ไม่ควรน้อยกว่า การทำให้นักศึกษา ได้ฝึกฝน และใช้เวลาศึกษาด้วยตนเอง (Self learning) อย่างน้อย 1 สัปดาห์ เพื่อทำให้โครงงานสำเร็จลุล่วง และในบางวิชาของการเขียนโปรแกรม ควรมีโครงงานทั้งก่อนสอบกลางภาค และปลายภาค คือมี Project 2 ชิ้น ในวิชานั้น และที่สำคัญที่สำคัญที่สุดสำหรับหลักการสั่งงานของผมคือ งานชิ้นใหญ่จะต้องเป็นงานเดี่ยว เพื่อให้ทุกคนได้มีโอกาสทำด้วยตนเอง มีความภูมิใจในความสำเร็จ และเป็นผู้รับผิดชอบขั้นตอนทั้งหมดด้วยตนเอง ผมจะไม่มอบ project ชิ้นใหญ่เป็นงานกลุ่ม เพราะไม่ต้องการให้นักเรียนคนใดเลย พลาดขบวนการเรียนรู้ แม้แต่ขั้นตอนเดียว และอาจารย์จะต้องมีเวลาที่จะตอบข้อซักถามเสมอ เพราะบ่อยครั้งที่อาจจะสอนผิด สั่งงานผิด นักเรียนนั่งหลับ นักเรียนจดผิด หนังสืออ้างอิงเขียนผิด หรือแม้แต่การตรวจงานผิดของอาจารย์ ก็เป็นได้ โดยให้ฝึกปฏิบัติด้วยตนเอง ประสบความล้มเหลวมาโดยตลอด เพราะมีนักศึกษาส่วนหนึ่ง ไม่มีคอมพิวเตอร์ ไม่สนใจที่จะเขียนโปรแกรม ไม่ต้องการที่จะคิด และยอมแพ้ ทุกครั้งที่ให้เขียนโปรแกรมง่าย ๆ ทั้ง ๆ ที่มีโปรแกรมยาก ๆ รออยู่อีกมากมาย แต่นักศึกษาทำไม่ได้ จึงนึกการให้งานแบบล่าสุดออกคือ การให้ลอกโปรแกรมด้วยมือ เช่น มีโปรแกรมง่าย ๆ หรือควรรู้อยู่ 15 โปรแกรม จึงมอบหมายให้ลอกลงกระดาษ 4 รอบ และให้เสร็จใน 1 สัปดาห์ ผลที่ได้คือนักศึกษาได้อ่านหนังสือ จดจำรูปแบบภาษาได้มากขึ้น งานที่ให้ลอกไม่ได้หยุดที่ 60 โปรแกรม แต่มากขึ้น หรือน้อยลงขึ้นกับความเข้าใจ และเนื้อหาที่สอน การทำให้นักศึกษา คิดเป็น และแก้ปัญหาโจทย์ได้ เป็นอีกปัญหาหนึ่งที่ต้องสอนในห้องปฏิบัติการ ส่วนการจำรูปแบบคำสั่งไม่ได้ แก้ไขได้ด้วยการสั่งให้ลอกโปรแกรมเท่านั้น ความคาดหวังของผู้สอนว่านักศึกษาจะตั้งใจเรียน แล้วกลับไปทำคอมพิวเตอร์ที่บ้าน โดยไม่ลอกเพื่อนเพียงอย่างเดียว ผมทำมา 10 ปี แต่ไม่ได้ผลเลย |
5. ตัวอย่างโจทย์ปิรามิด คือแบบฝึกหัดที่ยาก
|
6. ตัวอย่างโปรแกรมภาษา Pascal | ||||||||
ผมจึงเขียนใหม่แบบที่ไม่ต้องใช้ function รู้สึกง่ายกว่าเดิมอีกครับ
|
7. ตัวอย่างโปรแกรมภาษา Java Script | ||||||||||||
|
8. แบ่งระดับการเขียนโปรแกรม 4 ระดับ |
|
9.แบบฝึกหัดสำหรับสอนการเขียนโปรแกรมเบื้องต้น | ||
A. จากโจทย์แต่ละข้อ ให้เขียนโปรแกรมที่ถูกต้อง และที่ผิดอย่างละโปรแกรม โดยบอกว่าที่ผิด ผิดอย่างไร B. ให้แต่ละข้อทำที่ถูกมา 1 ครั้ง และให้ทำที่ผิดมา 2 โปรแกรม โดยแยกเฉลยจุดผิดออกจากกัน C. ให้นักศึกษาสลับกัน หาจุดผิดพลาดในโปรแกรมของเพื่อน D. ตัวอย่างจุดผิดพลาดที่แนะนำนักศึกษา |
10. เปรียบเทียมหาค่ามากกว่า | ||||||||||||||||
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น