เนื่องจากเทอมหน้าจะเปลี่ยนไปสอนวิชา Computer Architecture วิชาเทอมต้นนี่เปลี่ยนมาหลายวิชาแล้ว ทำงานมาสามปี ไม่เคยสอนซ้ำกันซักปี ปีแรกสอนภาษาซีครึ่งหนึ่ง อีกครึ่งสอนวิชา Foundation of Information Systems วิชาที่หายไปจากหลักสูตรแล้ว ปีที่สองก็ไปสอน DBMS ครึ่งหนึ่ง กับ Intelligent Systems อีกครึ่งหนึ่ง วิชาหลังนี่แปลงกายมาเป็น Artificial Intelligence ในหลักสูตรใหม่ แถมย้ายไปอยู่เทอมหลัง ปีที่แล้วกลับไปสอนภาษาซีอีกครั้งหนึ่งแต่คราวนี้สอนเต็มตัวเลย ปีหน้าด้วยเหตุการณ์หลายๆ อย่าง เลยทำให้ได้ไปสอน Computer Architecture แทน ก็เลยต้องเตรียมตัวกันพอสมควร
Computer Architecture มีเป้าหมายให้นักศึกษาเข้าใจหลักการทำงานพื้นฐานภายในระบบคอมพิวเตอร์ ผมยังเชื่อว่าวิชานี้เป็นความรู้พื้นฐานที่สำคัญสำหรับนักศึกษาที่เรียนทางด้านนี้ แม้ว่าปัจจุบันระบบซอฟท์แวร์จะทำสิ่งต่างๆ ซ้อนไว้หลายชั้น จนเราแทบจะไม่จำเป็นต้องสนใจหรือเข้าใจว่าระบบทำงานยังไง เราก็สามารถสร้างซอฟท์แวร์หรือแอพพลิเคชันได้ แต่สุดท้ายถ้าอยากทำซอฟท์แวร์ที่ใช้ประสิทธิภาพสูงสุดของระบบจริงๆ ก็จำเป็นที่จะต้องเข้าใจสิ่งต่างๆ เหล่านี้
ปัญหาของการเรียนวิชานี้ก็คือ ส่วนใหญ่จะเน้นไปที่ทฤษฎี หรือวิธีการต่างๆ จนบางครั้ง นักศึกษาคิดว่าเป็นวิชาท่องจำ หรือบางครั้งก็เน้นไปที่การออกแบบฮาร์ดแวร์ ซึ่งอาจจะไม่เหมาะกับนักศึกษาที่เพิ่งเริ่มเรียนปีที่สองในมหาวิทยาลัย และยังเป็นเทอมแรกที่เรียนวิชาเฉพาะสาขาด้วย นอกจากนี้นักศึกษาที่จะสอนก็เป็นนักศึกษาสาขาวิทยาการคอมพิวเตอร์ กับเทคโนโลยีสารสนเทศ ที่จะเรียน Digital Circuits ในเทอมเดียวกัน แถมเป้าหมายของหลักสูตรก็อยากจะให้นักศึกษาเหล่านี้จบไปทำงานในสาขาทางด้านซอฟท์แวร์ หรือไปทางในเชิงทฤษฎี
สุดท้ายก็ไปเจอหนังสือ Computer Systems: A Programmer’s Perspective ที่พัฒนาโดยอาจารย์จาก CMU ที่เจอปัญหาคล้ายๆ กัน เลยเปลี่ยนวิธีการสอนใหม่ เป็นการเรียนรู้สถาปัตยกรรม หรือการทำงานของคอมพิวเตอร์ ผ่านทางการเขียนโปรแกรม และการทดลองด้วยภาษาซี เพื่อทำให้ผู้เรียนกลายเป็นโปรแกรมเมอร์ที่เข้าใจการทำงานของระบบคอมพิวเตอร์ และสามารถเขียนโปรแกรมที่ดึงความสามารถของระบบออกมาได้เต็มที่ จริงๆ แล้ว Matt ก็เคยใช้หนังสือเล่มนี้สอนเมื่อสามปีก่อนเหมือนกัน ได้เวลาเริ่มทำสไลด์ประกอบการสอนแล้ว คงจะได้สนุกกับวิชานี้อีกเทอมหนึ่งล่ะ ถ้ามีเวลาอยากสอนเขียนโปรแกรมที่ใช้พวก SSE หรือ MMX เพิ่มด้วยนะ แต่หวังว่าคงจะไม่ใช่คนสอนสนุกอยู่คนเดียวนะ
Tags: computer architecture, teaching
อาจารย์ไม่ต้องห่วงหรอกครับ รุ่นน้องผมเก่งๆทั้งนั้นเลย
อืม พวก SSE, MMX นี่ ถ้าไม่ได้เขียน ไม่ได้เทียบกับแบบปกติ ก็จะไม่รู้ว่า มันประหยัด instructions ไปได้แค่ไหน ทำไมถึงเป็นพัฒนาการที่สำคัญ สำหรับยุคข้อมูลมัลติมีเดีย
ขนาดคนเขียน Java, .NET สุดท้ายก็ยังต้องไปดู bytecode อยู่ดี เวลาทำ optimization
อาจารย์เคยเห็นบล็อกนี้ป่าวครับ
http://www.growlichat.com/
มีหลายเรื่องสนุกดี น่าเอามาเป็นตัวอย่างได้ด้วย อย่างอันนี้
http://www.growlichat.com/blog/2008/04/01/int-comparison-vs-double-comparison/
Thanks เดี๋ยวจะลองเข้าไปดูครับ
ตอนลองเขียนโปรแกรมที่ใช้พวก SSE, MMX ครั้งแรก ก็รู้สึกเลย ว่าเราไปตกยุคอยู่ที่ไหนตั้งนาน แต่สุดท้ายก็ไม่ค่อยได้ใช้อยู่ดี
อย่าโหดมากนะครับอาจารย์
น่าสนุกจังเลยครับพี่ฝน
ตอนทำงานที่ญี่ปุ่นจะหาข้อมูลพวกเขียนโปรแกรมที่เรียกใช้ DSP ของ SH series ก็ไม่สำเร็จ
รู้สึกตั้งแต่ครั้งแรกที่เห็นรุ่นน้องใช้หนังสือเล่มนี้ว่า Computer Architecture ก็สอนเชิง Programming แบบสนุกๆ ได้ ว่าแล้วก็อยากลองเรียนอีกทีจัง
[...] ITS325 ไปแล้ว [...]