ITS325 Computer Architecture
เนื่องจากเทอมหน้าจะเปลี่ยนไปสอนวิชา 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 เพิ่มด้วยนะ แต่หวังว่าคงจะไม่ใช่คนสอนสนุกอยู่คนเดียวนะ
อาจารย์ไม่ต้องห่วงหรอกครับ รุ่นน้องผมเก่งๆทั้งนั้นเลย
อืม พวก 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 แบบสนุกๆ ได้ ว่าแล้วก็อยากลองเรียนอีกทีจัง