Wednesday, 11 December 2019

การเรียนการสอนด้านคอมพิวเตอร์ของสถาบันอุดมศึกษาต้องเปลี่ยนแปลง

10 Jan 2015
910

ผมเคยสอนหนังสือสาขาวิศวกรรมคอมพิวเตอร์มาสิบกว่าปี และเคยมีส่วนร่วมในการพิจารณาหลักสูตรทั้งทางด้านวิศวกรรมคอมพิวเตอร์ วิทยาการคอมพิวเตอร์ และเทคโนโลยีสารสนเทศ หลายๆมหาวิทยาลัย ส่วนใหญ่ก็จะพบว่าหลักสูตรยังคล้ายๆกันและเหมือนเดิม โดยไม่ได้แตกต่างกับที่ผมเคยสอนเมื่อสิบกว่าปีก่อนมากนัก หลายๆครั้งก็มักจะได้ยินอาจารย์บอกว่าสถาบันการศึกษามีหน้าที่สอนพื้นฐานความรู้ให้กับนักศึกษา แต่ถ้าเป็นเรื่องของเทคโนโลยีใหม่ๆที่อาจผูกติดกับ Vendor ก็ต้องไปเรียนรู้เมื่อเข้าไปทำงาน บ่อยครั้งก็บอกว่าหลักสูตรเราก็เป็นไปตามหลักสากล เป็นไปตามมาตรฐานของ ACM

COCOON JS


แต่ขณะเดียวกันเราเห็นการเปลี่ยนแปลงของเทคโนโลยีด้านไอทีอย่างมากในช่วง 4-5 ปีที่ผ่านมา ไอทีกำลังเปลี่ยนยุคจากยุคของอินเตอร์เน็ตมาสู่ยุคของ Cloud, Internet of Things และ Big Data คำถามที่เกิดขึ้นว่าแล้วพื้นฐานทางด้านไอทีเหมือนเดิมไหม เช่นวิชาด้านการพัฒนาซอฟต์แวร์ วิชาด้าน Data Comunication/Network วิชาด้าน Database หรือด้านอื่นๆยังเหมือนเดิมหรือไม่ ถ้ายังเหมือนเดิมจริงแล้วทำไมเรามักจะเจอเสียงสะท้อนจากภาคอุตสาหกรรมเสมอว่า เด็กที่จบออกมาพื้นฐานไม่ดีและไม่ตรงกับความต้องการของอุตสาหกรรม นอกจากนี้ผมก็ยังเห็นในมหาวิทยาลันต่างประเทศเอาเทคโนโลยีใหม่ๆมาสอนเสมอ

ComputerScienceCloud-1024x418

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

1) ด้านการพัฒนาซอฟต์แวร์ ผมคิดว่าบัณฑิตที่จบทางด้านไอทีทุกคนควรจะต้องเขียนโปรแกรมภาษาใดภาษาหนึ่งเป็น มหาวิทยาลัยอาจจะเลือกที่จะสอนภาษาใดภาษาหนึ่งก็พอแล้ว ซึ่งจะต้องภาษาด้าน OOP ที่อาจจะเป็น Python, Java หรือ C# การสอนเราต้องเน้นหลักวิธีคิดในการพัฒนาโปรแกรม ไม่ใช่สอนให้นักศึกษาจำคำสั่ง Syntax ในการเขียนโปรแกรม และ อย่าต้องให้นักศึกษาต้องมาเรียนการเขียนโปรแกรมหลายภาษา แต่สิ่งสำคัญที่นักศึกษาจะต้องทำได้คือมีตรรกะในการเขียนโปรแกรม บัณฑิตที่จบออกมาต้องเขียนโปรแกรมได้มากกว่าแค่โปรแกรม HelloWorld และต้องพร้อมที่จะเรียนรู้การพัฒนาโปรแกรมภาษาอื่นบน Platform อื่นๆ รวมถึง Mobile Application

2) การพัฒนาซอฟต์แวร์ Enterprise Application ในวันนี้โลกของการพัฒนาซอฟต์แวร์มีความซับซ้อนกว่าเดิม พื้นฐานที่นักศึกษาควรจะมีขั้นพื้นฐานก็คือการพัฒนา Web Application ซึ่งไม่ใช่แค่การเขียนเว็บเพจโดยใช้ HTML หรือ Scripting Languange แต่นักศึกษาควรจะต้องเรียนการเขียนโปรแกรมเชื่อต่อกับฐานข้อมูล การพัฒนาและเรียกใช้ Web Services รู้จักการเขียนโปรแกรมเพื่อจะใช้ APIs ต่างๆอาทิเช่น Facebook หรือ Google APIs รวมถึงการพัฒนาซอฟต์แวร์บน Cloud โดยใช้ Platform as a Service (PaaS)

3) Cloud Computing นักศึกษาที่ต้องเรียนวิชาทางด้าน System Administration ควรที่จะต้องเข้าใจเรื่องของ Infrastructure as a Service เรียนรู้เรื่องของ Virtualization การ config ระบบ Cloud ต่างๆ ถ้าเป็นไปได้ควรให้นักศึกษาได้เรียนรู้การออกแบบ Large IT Architecture ผ่านระบบ Cloud ที่อาจใช้ IaaS ของบาง Vendor เช่น Amazon Web Services

4) Software Development Methodology กระบวนการพัฒนาซอฟต์แวร์เป็นเรื่องสำคัญ ซึ่งอาจเป็นเรื่องยากที่จะสอนนักศึกษาที่ยังไม่มีประสบการณ์การพัฒนาซอฟต์แวร์มามากนักให้เข้าใจ แต่เราจำเป็นจะต้องสอนให้พวกเขาเข้าใจพื้นฐานการพัฒนาซอฟต์แวร์แบบใหม่ไม่ใช่แค่พูดถึง Waterfall Model แต่ควรรวมถึงหลักการของ Agile Software Development และควรจะปูพื้นฐานเรื่อง Software Testing

4) Database เรื่องของ Big Data กำลังเข้ามา บัณฑิตที่จบออกไปในวันนี้ควรจะมีความรู้เรื่องฐานข้อมูลมากกว่า RDBMS หรือการใช้คำสั่ง SQL แต่พวกเขาควรจะต้องเข้าใจเทคโนโลยีใหม่ๆอย่าง NoSQL หรือ Hadoop ด้วย เพื่อที่จะสามารถออกแบบ Information Infrastructure ในอนาคตได้

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

บทความ โดย อ.ธนชาติ นุ่มนนท์






Google+

View My Stats