ผมเพิ่งเรียนจบหลักสูตรปริญญาโท วิทยาศาสตรมหาบัณฑิต สาขาวิชาวิทยาการคอมพิวเตอร์ แขนงวิชาวิทยาการคอมพิวเตอร์ประยุกต์ เมื่อวันที่ 14 ส.ค. 2558 ที่ผ่านมานี้เองครับ เป็นการจบภายใน 2 ปีการศึกษาคนแรกของรุ่น และจบภายใน 2 ปีการศึกษาคนที่ 2 ของหลักสูตร
หลักสูตรที่ผมเรียนเป็นหลักสูตรที่อนุมัติเมื่อปี พ.ศ. 2553 ครับ ดังนั้น จึงยังเป็นหลักสูตรที่ทันโลกอยู่ ซึ่งการปรับปรุงหลักสูตรของมหาวิทยาลัย ก็มักจะถูกกระทำทุก ๆ 5 ปี เพื่อให้หลักสูตรมีความทันสมัยอยู่เสมอ ดังนั้น ก่อนที่ผมจะจบการศึกษา ทางสภามหาวิทยาลัยก็ได้มีการประกาศหลักสูตรใหม่ของปี พ.ศ. 2557 ออกมาเป็นที่เรียบร้อยแล้ว
หลายคนอาจจะมีความสับสนเล็ก ๆ ว่า หลักสูตรวิทยาการคอมพิวเตอร์นั้น ต่างกับหลักสูตรเทคโนโลยีสารสนเทศ หรือต่างกับหลักสูตรการจัดการระบบสารสนเทศยังไง ซึ่งสำหรับรีวิวนี้คงไม่อธิบายเปรียบเทียบให้เห็นทีล่ะตัว แต่จะเน้นอธิบายอย่างชัดเจนในหลักสูตรวิทยาการคอมพิวเตอร์ ว่าเป็นหลักสูตรที่มุ่งหวังเพื่อผลิตบุคลากรที่มีความรู้ความสามารถในทฤษฎีการคำนวณสำหรับคอมพิวเตอร์และทฤษฎีการประมวลผลสารสนเทศ ดังนั้น ผู้ที่จบในหลักสูตรนี้ จึงมีความเข้าอกเข้าใจอย่างยิ่ง ในการใช้คณิตศาสตร์เพื่อช่วยแก้ปัญหาทางคอมพิวเตอร์!!!
สำหรับรายวิชาที่ผมเรียนในหลักสูตรวิทยาการคอมพิวเตอร์ มีทั้งหมด 10 วิชาประกอบด้วย
1. Design & Analysis of Algorithm
วิชานี้ไม่ได้สอนให้ผมนั่งท่องโครงสร้างข้อมูล ท่องวิธีการจัดเรียง หรือท่องวิธีการค้นหาข้อมูล แต่เป็นวิชาที่สอนให้ผมรู้จักคำนวณประสิทธิภาพในการจัดเรียง ประสิทธิภาพในการค้นหา และประสิทธิภาพในการทำงานของอัลกอริทึมต่าง ๆ มันทำให้ผมเกิดความเข้าใจอย่างถ่องแท้ว่า ถึงแม้ว่าคอมพิวเตอร์มันจะทำงานแบบอนุกรมได้อย่างรวดเร็ว แต่หากต้องเผชิญกับปัญหาที่ต้องวนรอบการทำงานหลายชั้น มันก็มีสิทธิ์ตายห่าได้เหมือนกัน
นอกจากนี้ วิชานี้ยังสอนให้ผมรู้จักคัดเลือกเทคนิค อัลกอริทึม และขั้นตอนวิธีต่าง ๆ เพื่อให้เหมาะสมกับปัญหาที่จะต้องแก้ไข โดยมีจุดประสงค์สูงสุดคือทำให้เกิดประสิทธิภาพมากที่สุดในการทำงานของคอมพิวเตอร์
2. Computer Architecture
หลายคนอาจจะเข้าใจว่าวิชา Computer Architecture หรือเรียกเป็นภาษาไทยว่าวิชาสถาปัตยกรรมคอมพิวเตอร์ คือ วิชาที่สอนให้เราท่อง ๆ ๆ ๆ อะไรหลาย ๆ อย่างเกี่ยวกับคอมพิวเตอร์ ซึ่งผมขอบอกว่าไม่จริงครับ เพราะจริง ๆ แล้ววิชานี้สอนให้ผมรู้วิธีการคำนวณทางคณิตศาสตร์ในระดับบิตของข้อมูล สอนให้ผมได้รู้วิธีการคำนวณทางคณิตศาสตร์ในสถาปัตยกรรมคอมพิวเตอร์หลาย ๆ รูปแบบ และทำให้ผมเข้าใจว่าในโลกนี้มันมีสถาปัตยกรรมคอมพิวเตอร์มากมายหลายแบบเหลือเกิน
3. Principle of Programming
คนที่จะเรียนหลักสูตรวิทยาการคอมพิวเตอร์ได้ มีความจำเป็นอย่างที่สุดที่จะต้องเขียนโปรแกรมคอมพิวเตอร์เป็นครับ แต่ว่าวิชานี้ไม่ได้สอนให้ผมเสาะแสวงหาภาษาคอมพิวเตอร์ใหม่ ๆ มาทดลองเขียนโปรแกรมคอมพิวเตอร์ เพื่อให้ผมเป็นผู้สันทัดกรณีและมีทักษะสูงส่งในการเขียนโปรแกรมคอมพิวเตอร์ที่หลากหลายแต่ประการใด หากแต่วิชานี้กลับสอนให้ผมเข้าใจหัวใจและจิตวิญาณของการเขียนโปรแกรมคอมพิวเตอร์ และสอนให้ผมสามารถบรรยายพรรณาเหตุผลในทางไวยากรณ์และวากยสัมพันธ์ของภาษาคอมพิวเตอร์ได้
ซึ่งจุดมุ่งหมายสูงสุดของวิชานี้คือการปูพื้นฐานที่แน่นหนา เพื่อต่อยอดไปยังวิชา Compiler ซึ่งเป็นวิชาที่ศึกษาวิธีการแปลภาษาคอมพิวเตอร์ที่มนุษย์อ่านเข้าใจได้ ไปเป็นภาษาคอมพิวเตอร์ที่คอมพิวเตอร์อ่านเข้าใจได้นั่นเอง
4. Semantic Web & Ontology
ข้อมูลที่ถูกบรรยายด้วยข้อมูล อ่านแล้วไม่งงใช่มั้ย? ตอนแรกผมเองก็งงนั่นแหล่ะ และวิชานี้ก็ช่วยให้ผมหายงง เพราะวิชานี้ได้สอนให้ผมเกิดความเข้าใจว่า ข้อมูลนั้นมันสามารถถูกบรรยายด้วยข้อมูลได้ โดยวิธีการอธิบายจะต้องมีการตกลงกัน เช่น ตกลงกันในระดับหน่วยงาน ระดับชุมชน หรือ ระดับโลก จุดประสงค์ของการบรรยายและการตกลงกัน ก็เพื่อให้เกิดการแลกเปลี่ยนข้อมูลกันได้อย่างมีมาตรฐาน และทำให้คอมพิวเตอร์มันเข้าใจสิ่งที่บรรยายได้
และนอกจากจะสอนให้ผมสามารถออกแบบโมเดลการบรรยายข้อมูลได้แล้ว วิชานี้ยังสอนให้ผมออกแบบโมเดลความสัมพันธ์ให้กับข้อมูลได้ด้วย โดยมีจุดประสงค์เพื่อผลการอนุมานข้อมูลในอนาคต ยกตัวอย่างเช่น เรากำหนดว่า กรุงเทพมหานคร คือ เมืองหลวงของประเทศไทย และ บางกอก ก็คือ เมืองหลวงของประเทศไทย ดังนั้น คอมพิวเตอร์ก็จะอนุมานตามสิ่งที่บรรยายไว้ว่า ที่แท้แล้ว กรุงเทพมหานคร กับ บางกอก น่าจะเป็นสิ่งเดียวกันนั่นเอง!!!
โดยส่วนตัวแล้วผมจัดวิชานี้อยู่ในกลุ่มวิชาปัญญาประดิษฐ์ครับ และยังมีอีก 4 วิชาที่ยังอยู่ในกลุ่มนี้เช่นกัน ซึ่งผมจะได้เล่าต่อไป
5. Machine Learning
ผมได้เรียนเกี่ยวกับ Neural Network รูปแบบต่าง ๆ ทั้งแบบ Supervised Learning และ Unsupervised Learning จากวิชานี้ครับ โดยสิ่งที่ผมเรียนไม่ใช่การออกแบบ Neural Network เพราะมันธรรมดาไป แต่เป็นการเรียนวิธีการคำนวณของ Neural Network ครับ และยังเรียนวิธีการเพิ่มประสิทธิภาพในการคำนวณของ Neural Network ด้วย
นอกจากนี้ ผมยังได้เรียนเกี่ยวกับ Fuzzy Logic และ Centroid-based clustering แบบ Fuzzy C Means ซึ่งไม่ใช่การเรียนออกแบบหรือใช้งานเช่นเคยครับ แต่เป็นการเรียนวิธีการคำนวณล้วน ๆ โดยเฉพาะไอ้เจ้า Fuzzy C Means นี่ถ้าใช้วิธีคำนวณด้วยมือจะต้องทำหลายรอบมากจนปวดหัวไปหมดเลย
สำหรับวิชานี้นะครับ ก็จัดได้ว่าอยู่ในกลุ่มวิชาปัญญาประดิษฐ์เช่นกัน
6. Data Mining
วิชานี้ผมคิดว่าเป็นวิชาที่เหมาะกับยุคสมัยนี้มาก เพราะยุคสมัยนี้เป็นยุคที่ข้อมูลเยอะเท่าภูเขาเลากา ดังนั้น มันจะเป็นการดีกว่าถ้าเราสามารถสกัด “ความรู้” จาก “ข้อมูลมหาศาล” ได้
วิชานี้ใช้การคำนวณทั้งด้านพีชคณิต เมตริกซ์กับเวกเตอร์ และสถิติ หลายอย่างมาก!!!
ผมได้เรียนการคำนวณเพื่อเกลี่ยข้อมูลให้ค่ามีความใกล้เคียงกัน ได้เรียนการคำนวณ Entropy, Information Gain, Chi Square เพื่อการเลือกคุณลักษณะเด่นของข้อมูล ได้เรียนการคำนวณ Principle Component Analysis เพื่อการลดมิติของข้อมูลและสกัดคุณลักษณะเด่นของข้อมูล
ได้เรียนการคำนวณ Superivised Learning ของ Naive Bayes, Decision Tree และ Support Vector Machine และได้เรียนการคำนวณ Unsupervised Learning ของ Density-based Clustering
นอกจากนี้ผมยังได้เรียนกลไกการทำงานและวิธีการคำนวณของวิธี Association Rule Learning ด้วยเทคนิค Apriori และ FP-Growth อีกด้วย (วิชานี้มีประโยชน์มากในทางธุรกิจนะเออ)
สุดท้าย วิชานี้ยังได้สอนให้ผมรู้ว่า ทุกสิ่งที่หาคำตอบมาได้มันต้องมีการประเมินผล ดังนั้น ผมจึงได้เรียนการคำนวณเพื่อประเมินผลคำตอบด้วยตัวชี้วัดแบบต่าง ๆ ซึ่งก็มีทั้ง Precision, Recall, True Positive Rate และ False Positive Rate
สำหรับวิชานี้นะครับ ก็จัดได้ว่าอยู่ในกลุ่มวิชาปัญญาประดิษฐ์เช่นกัน
7. Bioinformatics
วิชานี้เป็นวิชาที่ใหม่มากครับ และหากใครทำวิจัยในแวดวงของวิชานี้ จะได้รับคะแนนในการวิจัยสูงมาก เนื่องจากเป็นงานวิจัยที่มีผลกระทบในวงกว้าง!!!
การเรียนวิชานี้จำเป็นที่จะต้องมีพื้นฐานความรู้ทางชีววิทยาพอสมควร เพราะวิชานี้เป็นวิชาที่รวมเอา ชีววิทยา คณิตศาสตร์ และ คอมพิวเตอร์เข้าไว้ด้วยกัน โดยจะเน้นลงไปถึงระดับของ เซล โครโมโซม ดีเอ็นเอ อาร์เอ็นเอ จีโนไทป์ ฟีโนไทป์ และ โปรตีน ครับ
ผมได้เรียนอัลกอริทึมในการจับคู่ดีเอนเอแบบต่าง ๆ จากวิชานี้ โดยอัลกอริทึมที่เรียนจะมีพื้นฐานจากอัลกอริทึม Longest Common Subsequence ได้เรียนวิธีการอนุมานดีเอนเอ โดยใช้วิธีการคำนวณ Hidden Markov Model ได้เรียนการค้นหาคำตอบแบบ Optimization ด้วย Genetic Algorithm ได้เรียนการจัดกลุ่มของจีโนไทป์และฟีโนไทป์ และได้เรียนการคำนวณเพื่อทำ Hierarchical-based Clustering ครับ
สำหรับวิชานี้นะครับ ก็จัดได้ว่าอยู่ในกลุ่มวิชาปัญญาประดิษฐ์เช่นกัน เพราะจุดมุ่งหมายของวิชานี้คือการทำให้คอมพิวเตอร์สามารถเรียนรู้และระบุความแตกต่างของดีเอ็นเอ เพื่อนำไปสู่การรักษาโรคได้นั่นเอง
8. Image Processing
ต้องบอกเลยว่าวิชานี้เป็นวิชาที่ผมต้องเรียนคำนวณมากที่สุดเลยก็ว่าได้ เพราะการขยายภาพ ย่อภาพ บิดภาพ เติมภาพ กร่อนภาพ เน้นภาพ เปลี่ยนความสว่างความมืด หาเส้นขอบของวัตถุในภาพ กำจัดสิ่งรบกวนในภาพ เติมภาพที่หายไป ฯลฯ ทั้งหลายทั้งปวง ล้วนใช้คณิตศาสตร์ด้วยกันทั้งนั้น และเป็นคณิตศาสตร์แบบยากซะด้วย ดังนั้น สำหรับคนที่อยากจะรู้ว่าโปรแกรม Photoshop มันทำงานยังไง ก็จะได้รู้กันเลยล่ะครับจากวิชานี้
วิชานี้มันถูกจัดอยู่ในกลุ่มปัญญาประดิษฐ์ก็เพราะว่า วิธีการคำนวณและอัลกอริทึมที่คิดค้นขึ้น มันเป็นตัวผลักดันให้คอมพิวเตอร์รู้จักที่จะตัดสินใจว่ามันควรจะจัดการกับภาพยังไงถึงจะเหมาะสมที่สุดครับ และที่สำคัญวิธีการคำนวณและอัลกอริทึม ต้องสามารถนำไปใช้ได้กับทุกภาพครับ ถึงจะถือว่าเลิศที่สุด จะมาบอกว่าใช้ได้กับภาพหน้าคนแต่ใช้กับภาพสิ่งของสถานที่ไม่ได้ แบบนี้ไม่ได้ครับ
9. Computer Security
ความมั่นคงทางคอมพิวเตอร์เป็นเรื่องที่กว้างมากครับ กินอาณาบริเวณครอบคลุมทั้งฮาร์ดแวร์ มิดเดิ้ลแวร์ ซอฟต์แวร์ ข้อมูล ฐานข้อมูล ผู้ใช้งาน และ เครือข่าย เป็นเรื่องของความละเอียดอ่อน ช่องโหว่ ภัยคุกคาม
ด้วยวิชานี้จึงทำให้ผมได้เกิดความเข้าใจและแยกแยะได้ว่า ช่องโหว่ของคอมพิวเตอร์มันมีอยู่ที่ตรงไหนบ้าง ภัยคุกคามของคอมพิวเตอร์มันเป็นอะไรได้บ้าง แล้วเราจะอุดช่องโหว่ได้อย่างไร จะตรวจพบช่องโหว่ได้ด้วยวิธีใด และจะรับมือกับภัยคุกคามอย่างมีประสิทธิภาพได้ยังไง
เพราะเหตุนี้ วิชานี้จึงไม่ใช่วิชาท่องจำ มันเป็นวิชาสืบสวนสอบสวน ดังนั้น การจะเรียนวิชานี้ได้จึงมีความจำเป็นจะต้องเข้าอกเข้าใจใน ฮาร์ดแวร์ มิดเดิ้ลแวร์ ซอฟต์แวร์ ข้อมูล ฐานข้อมูล ผู้ใช้งาน และ เครือข่าย ในระดับหนึ่งเลยทีเดียว และสำหรับผมแล้ว วิชานี้ถึงแม้ว่าจะไม่มีการคำนวณเข้ามาเกี่ยวข้อง แต่มันก็ยังคงต้องมีการวิเคราะห์เข้ามาเกี่ยวข้องอยู่ดี
10. Research Method
วิชานี้ถือว่าเป็นวิชาตกผลึก เพราะวิชานี้สอนให้ผมเข้าใจขั้นตอนการทำงานวิจัยอย่างถูกต้อง วิชานี้ได้สอนให้ผมรู้ว่าจุดสำคัญของงานวิจัยคืออะไร การทบทวนวรรณกรรมสำคัญไฉน (ป.ล. วรรณกรรมที่ว่าก็คืองานวิจัยนั่นแหล่ะ) จะไปหาวรรณกรรมจากที่ไหนมาทบทวนได้บ้าง และจะไปแสวงหาวิธีการแก้ปัญหาได้จากแหล่งไหนได้บ้าง
ผมได้ลองเขียนเอกสารทบทวนวรรณกรรมครั้งแรกก็เพราะวิชานี้ ซึ่งมันทำให้ผมได้เข้าใจว่า การบรรยายว่าเรารู้อะไรมาบ้างอย่างเป็นลำดับขั้นตอน มันเป็นสิ่งที่สำคัญมาก มันเหมือนกับว่าเราต้องแก้ปัญหาอะไรซักอย่างนึง เราต้องอธิบายให้ใคร ๆ เข้าใจได้ว่าปัญหามันคืออะไร มีใครเคยแก้ปัญหานี้บ้าง แล้วเขาแก้ปัญหาด้วยวิธีไหนกันบ้าง และเราจะแก้ปัญหาด้วยวิธีไหน แล้ววิธีที่เราจะแก้มันวิเศษกว่าวิธีของคนที่เคยแก้มาก่อนยังไง แล้วไอ้ทั้งหมดที่สาธยายมา คือจะต้องถูกเขียนลงไปในรูปแบบเอกสาร แทนที่จะเป็นการมาพูด ๆ ๆ เพื่ออธิบาย มันจึงไม่ง่ายเลยสำหรับคนทางคอมพิวเตอร์ ที่จะมาอธิบายอะไรแบบยืด ๆ ยาว ๆ และเป็นเชิงระบบแบบนี้
ทั้ง 10 วิชาที่ผมรีวิวไปแล้วทั้งหมด จะเห็นว่ามีถึง 5 วิชา คือ Semantic Web & Ontology, Machine Learning, Data Mining, Bioinformatics และ Image Processing ที่จัดอยู่ในกลุ่มปัญญาประดิษฐ์ ซึ่งมันสะท้อนให้เห็นว่า โดยข้อเท็จจริงแล้วหลักสูตรวิทยาการคอมพิวเตอร์ กำลังจะนำพาเราไปสู่เส้นทางที่ถูกจับตามองด้วยความวิตกกังวล มันคือเส้นทางของการทำให้เครื่องจักรมีความคิด มีจิตใจ มีวิจารณญาณ และมีจินตนาการ
มันอาจจะเป็นข้อเท็จจริงแบบนั้นจริง ๆ ก็ได้ เพราะไม่ใช่มีเพียงสาขาวิชาวิทยาการคอมพิวเตอร์เท่านั้น ที่กำลังมุ่งไปสู่เส้นทางดังกล่าว ทางสาขาวิชาวิศวกรรมไฟฟ้าและสาขาวิชาวิศวกรรมเครื่องกลเอง ก็ไม่มีความแตกต่างกัน เพราะพวกเขาก็เพียรพยายามที่จะตกผลึกสรรพวิชาในสาขาของตนเอง เพื่อจะสร้างหุ่นยนต์ที่ประสิทธิภาพสูงและหวังผลในประสิทธิผลได้
ผมว่านะ เมื่อใดก็ตามที่ถึงจุด ๆ หนึ่งที่นักวิทยาศาสตร์คอมพิวเตอร์ สามารถพัฒนาปัญญาประดิษฐ์จนกระทั่งบรรจุเป็นสมองของหุ่นยนต์ได้ และวิศวกรไฟฟ้ากับวิศวกรเครื่องกลสามารถพัฒนาสรีรวิทยาทั้งภายในและภายนอกของหุ่นยนตจนเหมือนมนุษย์ได้ เมื่อนั้นก็คงค่อยมาว่ากันอีกทีครับ ว่าเราจะจัดการกับความสำเร็จนี้ของมนุษย์กันยังไงดี
วกกลับมาเรื่องของเรานิดนึง สำหรับใครที่อยากจะเรียนหลักสูตรวิทยาการคอมพิวเตอร์นะครับ ก็จะเป็นประมาณที่ผมรีวิวนั่นแหล่ะ ผมคิดว่าทุกมหาวิทยาลัยที่มีสอนหลักสูตรวิทยาการคอมพิวเตอร์ในระดับปริญญาโท ก็คงจะจัดรายวิชาให้เรียนคล้าย ๆ แบบที่ผมเรียนเนี่ยแหล่ะ ดังนั้น ใครที่คิดจะเรียนหลักสูตรนี้ในระดับปริญญาโท ก็คงต้องขยันให้มาก ๆ นะครับ เพราะมันต้องเน้นคำนวณเยอะจริง ๆ
สุดท้าย และท้ายที่สุด ผมลืมเล่าไป ลืมได้ไง คือ หลังจากเรียนทั้ง 10 วิชาครบแล้ว ผมยังต้องทำงานวิจัยหนึ่งชิ้นเพื่อจะจบการศึกษาด้วยครับ โดยงานวิจัยที่ผมทำ คือ การวิเคราะห์ภาพสมอง จุดประสงค์เพื่อสกัดหรือเลือกคุณลักษณะเด่นจากภาพสมอง สำหรับทำนายความคิด เพื่อนำความคิดของเจ้าของสมอง ไปสั่งการคอมพิวเตอร์ต่อไปครับ
นับเบ็ดเสร็จแล้ว เพื่อจะให้จบหลักสูตรนี้ได้ ก็ต้องลงเรียน 10 วิชา และทำงานวิจัย 1 ชิ้นนั่นเองครับ!!!
ป.ล. จริง ๆ มันมีอีกนิดหน่อย คือ ต้องสอบผ่านภาษาอังกฤษ และ สอบประมวลความรู้ผ่านด้วย แต่ผมไม่นับครับ มันเป็นเรื่องปลีกย่อย
เป็นความจริงที่น่าเศร้า สำหรับความรู้เชิงวิศวกรรมคอมพิวเตอร์ ในระดับบัณฑิตศึกษา ที่จบออกมามีทางเลือกน้อย ไม่เป็นอาจารย์ในมหาวิทยาลัยก็นักวิจัยของ Nectec บริษัทใหญ่ ๆ ในไทยหาแทบไม่มีที่จะบอกว่าเรามี Lab รองรับการทำ AI หรือ Data Mining สำหรับ Big Data นะ ผมไม่รู้ว่าคุณมีความเห็นอย่างไรกับประเด็นนี้บ้าง
เห็นว่าวิศวกรคอมพิวเตอร์ สามารถร่วมมือกับวิศวกรไฟฟ้า และ วิศวกรเครื่องกล เพื่อพัฒนาหุ่นยนต์แบบต่าง ๆ ได้ครับ และตลาดในด้านนั้น จะเป็นที่ต้องการอย่างมากในอนาคตครับ
วิทยากร คอมนี่เทียบกับวิศวะคอมได้ใช่รึเปล่าครับ เพราะงานที่ผมทำอยู่ รับทั้ง วิท และ วิศ ตำแหน่งงานเดียวกันทำงานเหมือนกัน