AMERICA’S GOT TALENT

But Not Enough Is Going Into CS เกิดอะไรขึ้นในอเมริกา เมื่อนักศึกษาปีหนึ่งในสาขาวิทยาการคอมพิวเตอร์ (computer science) ลดลงเรื่อยๆ โดยเฉพาะในทศวรรษที่ผ่านมา อีกไม่กี่ปีข้างหน้า อเมริกาจะต้องการแรงงานด้านคอมพิวเตอร์เพิ่มอย่างมากมายในหลายๆ อุตสาหกรรม แต่มหาวิทยาลัยผลิตนักศึกษาได้เพียงหนึ่งในสามเท่านั้น จากการวิจัยพบว่า สาเหตุสำคัญคือ โรงเรียนมัธยมในอเมริกา ไม่สามารถพัฒนาความรู้และทักษะพื้นฐานได้เพียงพอสำหรับการศึกษาด้านวิทยาการคอมพิวเตอร์ในระดับมหาวิทยาลัย วิชาคอมพิวเตอร์ในระดับมัธยม ถูกมองเป็นเพียงวิชาเสริม หรือโปรแกรมพิเศษ และสอนเพียงให้เขียนโปรแกรมได้ ไม่เน้นหลักการคิดเชิงคำนวณ (computational thinking) หรือคิดเป็นระบบ (system thinking) เพื่อใช้ในการแก้ไขปัญหา เพื่ออุดช่องโหว่นี้  จึงมีความเคลื่อนไหวในอเมริกา เพื่อปรับปรุงหลักสูตรวิชาคอมพิวเตอร์ในระดับมัธยม โดยมีชื่อเรียกว่า CS Principles หลักสูตรนี้จะมีการทดลองใช้ในปี 2011 และมุ่งหวังให้มีการใช้หลักสูตรที่พัฒนาขึ้นใหม่นี้อย่างแพร่หลายภายในปี 2015 อ่านต่อ ที่นี่ การเปลี่ยนแปลงที่อเมริกา ส่งแรงสะเทือนมาถึงเมืองไทยแล้วหรือยัง ?

Python ในห้องเรียน

การเขียนโปรแกรมคอมพิวเตอร์เปิดโอกาสให้กับนักเรียนในการประยุกต์ใช้สิ่งที่เรียนมาในห้องเรียน คิดเป็นระบบ คิดเชิงคำนวณ โดยเฉพาะโจทย์เลข ทำให้เห็นเหตุผลที่จับต้องได้ในการใช้ตัวแปรแทนที่จะใช้ตัวเลขอย่างเดียวในโจทย์คณิตศาสตร์ Python เป็นภาษาที่ใช้ง่ายสำหรับมือใหม่ แต่มีศักยภาพในการเขียนโปรแกรมระดับสูงด้วย Python จึงเหมาะสำหรับใช้ในห้องเรียน ซึ่งมี 2 แบบในการใช้งาน interpreter และ editor แบบแรก interpreter คล้ายกับเครื่องคิดเลขที่ใช้คำนวณโจทย์เลข แล้ว Python จะคำนวณหาคำตอบให้ แบบที่สอง editor ใช้เขียนโปรแกรมของเราเอง คล้ายกับการเพิ่มสูตรเข้าไปในเครื่องคิดเลขเพื่อใช้เฉพาะงาน คำแนะนำสำหรับครูในการใช้ Python ในห้องเรียนมีดังนี้ ให้โจทย์(เลข) และโปรแกรมที่สมบรูณ์แล้วกับนักเรียน จากนั้นให้นักเรียนวิเคราะห์การทำงานของโปรแกรม เขียนโปรแกรมให้แสดงคำตอบในแต่ละขั้นตอน จากนั้นรันโปรแกรมนี้ให้นักเรียนดู เพื่อให้นักเรียนเห็นและเข้าใจการทำงานเป็นขั้นตอน ทดลองเพิ่มหรือลดตัวแปร เปลี่ยนสูตร ใส่ตัวเลขใหม่เข้าไปในโปรแกรมเพื่อแสดงการเปลี่ยนแปลงในการทำงานของโปรแกรม หรือดูว่าค่าใหม่มีผลกระทบกับคำตอบอย่างไร ให้นักเรียนทำงานเดี่ยว หรือช่วยกันทำเป็นคู่ ในการปรับเปลี่ยนโปรแกรมที่ยังไม่สมบรูณ์ให้เสร็จ เมื่อนักเรียนคุ้นเคยกับ Python แล้ว ให้เขียนโปรแกรมด้วยตัวเองตั้งแต่ต้น เพื่อหาคำตอบของคำถามใน(ทุก)หัวข้อที่เรียนในห้องเรียน อ่านเพิ่มที่นี่

Why Programming? เขียนโปรแกรมได้อะไร

อาจพูดได้ว่าเด็กๆสมัยนี้เป็นเด็กยุคดิจิตอล มันเป็นเรื่องง่ายๆสำหรับพวกเขาที่จะส่งข้อความถึงกัน เล่นเกมออนไลน์ หรือเล่นเน็ต แต่สิ่งเหล่านั้นทำให้พวกเขาเข้าใจและใช้เทคโนโลยีใหม่ๆได้อย่างคล่องแคล้วแล้วหรือ ถึงแม้เด็กสมัยนี้จะใช้สื่อดิจิตอลตลอดเวลาแต่น้อยคนที่จะสามารถสร้างเกม แอนิเมชั่น หรือการจำลองทางคอมพิวเตอร์ได้ด้วยตนเอง มันเหมือนกับว่าพวกเขาอ่านได้แต่เขียนไม่เป็น คงเห็นแล้วว่าความคล่องแคล้วในการใช้เทคโนโลยีดิจิตอลไม่เพียงแค่มีความสามารถในการแชทหรือเล่นเน็ตแต่ยังต้องการความสามารถในการออกแบบสร้างหรือประดิษฐ์สื่อใหม่ๆด้วย ซึ่งจะทำอย่างนั้นได้คุณต้องเรียนรู้การเขียนโปรแกรมไว้บ้าง ความสามารถในการโปรแกรมจะเป็นประโยชน์อย่างมาก เช่นทำให้คุณสร้างอะไรได้มากขึ้น เรียนรู้ไปกับมันมากขึ้น และแสดงความนึกคิดออกมาได้ด้วยคอมพิวเตอร์ โดยเฉพาะการเขียนโปรแกรมนั้นยังสนับสนุนการคิดเชิงคำนวณ (computational thinking) ช่วยให้คุณเรียนรู้สิ่งสำคัญในการแก้ไขปัญหาและการวางแผนออกแบบ เช่นการเขียนโปรแกรมเป็นส่วนๆเพื่อแก้ไขปัญหาใหญ่ และ การออกแบบการทำงานแบบซ้ำๆ ซึ่งสามารถนำไปประยุกต์ใช้กับด้านอื่นๆที่ไม่เกี่ยวกับการเขียนโปรแกรม เนื่องจากการเขียนโปรแกรมนั้นเกี่ยวข้องกับการสร้างและการแสดงออกจากเรื่องภายนอก ที่อยู่ในกระบวนการแก้ปัญหาของคุณ การเขียนโปรแกรมยังช่วยให้คุณมีโอกาสที่จะสะท้อนความคิดของคุณเองกับปัญหานั้นๆ แม้แต่คิดเกี่ยวกับกระบวนการคิดเอง (การแก้ปัญหานั้นทำได้หลายวิธี) ที่มา: Mitchel Resnick, John Maloney, Andrés Monroy-Hernández, Natalie Rusk, Evely n Eastmond, Karen Brennan, Amon Millner, Eric Rosenbaum, Jay Silver, Brian Silverman, and Yasmin Kafai,  "Scratch: Programming for All" communications of the acm, vol. …

เกมทดสอบความคิดในการแก้ปัญหา

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

Project Euler

การฝึกเขียนโปรแกรมนั้นช่วยส่งเสริมการคิดคำนวณอย่างเป็นระบบ (Computational Thinking) สำหรับมือใหม่หรือมือโปร ที่ต้องการความท้าทายในการเขียนโปรแกรม ผมแนะนำโปรเจกหนึ่งที่น่าสนใจนั้นก็คือ Project Euler โปรเจกนี้จะมีคำถามทางคณิตศาสตร์ให้แก้ผ่านการเขียนโปรแกรมด้วยภาษาอะไรก็ได้ ลองเข้าไปดูนะครับ