สวัสดีครับ บทความนี้จะเป็นการแนะนำวิชาเรียนของหลักสูตรวิศวะกรรมซอฟต์แวร์ (Software Engineering) ปี 1 เทอม 1

เนื่องจากว่าเป็นเทอมแรก วิชาเรียนทั้งหมดจะไม่ยากมาก แต่ต้องตั้งใจให้ดี เพราะเป็นพื้นฐานที่สำคัญมากๆ และทำให้รู้ว่าเราเหมาะกับสายงานคอมพิวเตอร์หรือไม่ เพราะไม่ใช่ทุกคนที่เหมาะกับการพัฒนาซอฟต์แวร์ บางคนอาจจะชอบใช้มากกว่าชอบสร้าง ต้องคิดให้ดีก่อน

วิศวะซอฟต์แวร์ปี 1 เทอม 1 มีวิชาเรียนทั้งหมด 6 วิชา แบ่งเป็นหมวดคณิตศาสตร์ หมวดภาษา และหมวดซอฟต์แวร์ ข้อดีคือได้เรียนตรงสาย ไม่ต้องเรียนวิชาที่ไม่เกี่ยวข้องกับคอมพิวเตอร์ เช่น ฟิสิกส์ ดรออิ้ง

ในเทอมแรกจะต้องเขียนโปรแกรมทั้งหมด 2 ภาษา คือ C และ Python โดยจะมีการสอนในช่วงเรียนปรับพื้นฐาน Pre-session ดังนั้นไม่ต้องห่วงว่าไม่เคยเขียนโปรแกรมแล้วจะเรียนได้มั้ย เพราะเนื้อหาครอบคลุมถึงมิดเทอมเลย


ชื่อวิชา : Mathematics 1 (คณิตศาสตร์ 1)
ชื่อเล่น : Math (แมท) / แคล
คำอธิบาย : เนื้อหาของวิชานี้แบ่งเป็น 2 ส่วน ส่วนแรกศึกษาทฤษฎีเมทริกส์และพีชคณิตเชิงเส้นในระดับเบื้องต้น โดยครอบคลุมเนื้อหาต่อไปนี้ พีชคณิตของเมทริกซ์ ตัวกำหนด การผกผัน ระบบสมการเชิงเส้น การกำจัดแบบเกาส์ ปริภูมิเวคเตอร์ ปริภูมิย่อย การรวมเชิงเส้น ความเป็นอิสระเชิงเส้น การแปลงเชิงเส้น ค่าลักษณะเฉพาะและเวกเตอร์ลักษณะเฉพาะ ส่วนที่สองศึกษาแคลคูลัสเชิงอนุพันธ์ โดยครอบคลุมเนื้อหาต่อไปนี้ ฟังก์ชัน ลิมิต ความต่อเนื่องอนุพันธ์ กฎลูกโซ่ ฟังก์ชันแฝง ฟังก์ชันอดิศัย ฟังก์ชันผกผัน อนุพันธ์ อันดับสูงและการประยุกต์ของอนุพันธ์

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

สำหรับคนที่เรียนม.ปลายหลักสูตรไทย จะได้เรียนเมตริกซ์ตอน ม.4 อาจจะยิ้มเลย แต่ขอบอกไว้ก่อนว่าเนื้อหาเกินม.ปลายพอสมควร คือมีเรื่อง Elementary Row Operation, Gaussian Elimination, Gauss-Jordan Elimination และ Eigenvalues and Eigenvectors เพิ่มขึ้นมาอีก ถึงจะเป็นแค่การบวกลบคูณหารเลขธรรมดาก็เถอะ แต่บอกตามตรงว่าผมไม่ถนัดเลย แม้ว่าเรียนไปแล้วตอนปรับพื้นฐาน Pre-session ก็เถอะ

หลังสอบมิดเทอมจะเป็นแคลคูลัส ออกแค่ดิฟ ยังไม่มีอินทริเกต ไม่ยากมาก (อาจจะเป็นเพราะผมถนัดแคลคูลัสมากกว่าด้วย) ยิ่งถ้าใครเรียนตอน ม.6 บอกเลยว่าไม่ยากเกินความสามารถ

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


ชื่อวิชา : Introduction to Logic (ตรรกศาสตร์เบื้องต้น)
ชื่อเล่น : Logic (ลอจิก)
คำอธิบาย : วิชานี้เป็นการศึกษาธรรมชาติของตรรกศาสตร์และการคิดแบบมีเหตุมีผลทางตรรกะ อันประกอบด้วยการอ้างเหตุผล วากยสัมพันธ์และอรรถศาสตร์ของตรรกศาสตร์ประพจน์ ความสมเหตุสมผลและการสมมูลในตรรกศาสตร์ประพจน์ ตารางความจริง ทฤษฎีการพิสูจน์เบื้องต้นสำหรับตรรกศาสตร์ประพจน์ วากยสัมพันธ์และอรรถศาสตร์ของตรรกศาสตร์ระดับแรก ความสมเหตุสมผลและการสมมูลในตรรกศาสตร์ระดับแรก ทฤษฎีการพิสูจน์เบื้องต้นสำหรับตรรกศาสตร์ระดับแรก ข้อจำกัดขอตรรกศาสตร์ระดับแรก และการประยุกต์ใช้ตรรกศาสตร์ในการแก้ปัญหา

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

นอกจากจะได้เรียนตรรกศาสตร์แล้ว ยังได้เรียนวิธีการใช้เหตุผล และเทคนิคการพิสูจน์ทางคณิตศาสตร์อีกด้วย ถ้าใครไม่รู้ว่าความรู้สึกสนุกและมึนหัวในเวลาเดียวกันเป็นยังไง จะได้รู้ในวิชานี้แหละ


ชื่อวิชา : Foundation English (ภาษาอังกฤษพื้นฐาน)
ชื่อเล่น : อังกฤษ / Eng (อิ๊ง)
คำอธิบาย : วิชานี้เป็นการศึกษาและฝึกฝนทักษะการอ่าน เขียน ฟัง พูดภาษาอังกฤษที่จำเป็นในการเรียนที่วิทยาลัยนานาชาติ นักศึกษาจะได้เรียนรู้ศัพท์และสำนวนที่เป็นประโยชน์จากสื่อต่างๆ เช่น ตำราเรียน วารสาร หนังสือพิมพ์ เว็บ เป็นต้น รวมถึงศึกษาไวยากรณ์และการใช้ภาษาที่ถูกต้อง

วิชานี้เป็นวิชาที่พิเศษกว่าวิชาอื่น เพราะปกติเราจะเรียนกันแค่ 3 หน่วยกิต (3 ชม.ต่อสัปดาห์) แต่วิชานี้เราจะเรียน 6 หน่วยกิต (6 ชม. ต่อสัปดาห์) โดยจะมีการสอบแบ่งห้องในวันแรก ถ้าได้คะแนนมากกว่าค่าเฉลี่ยจะได้อยู่ห้อง Eng A แต่ถ้าต่ำกว่าค่าเฉลี่ยจะอยู่ห้อง Eng B โดยแต่ละห้องจะมีนักศึกษาไม่เกิน 20 คน และมีนักศึกษาแลกเปลี่ยนชาวต่างชาติมาเรียนด้วย อย่างกรณีของผมเป็นชาวญี่ปุ่น

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

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


ชื่อวิชา : C Programming (การเขียนโปรแกรมภาษาซี)
ชื่อเล่น : C Lecture (ซี เลคเชอร์)
คำอธิบาย : วิชานี้แนะนำแนวคิดและเทคนิคของการเขียนโปรแกรมคอมพิวเตอร์โดยใช้ภาษาซี โดยจะเน้นด้านการพัฒนาความสามารถของนักศึกษาในการออกแบบอัลกอริทึมและนำอัลกอริทึมมาเขียนเป็นโปรแกรม หัวข้อในวิชานี้ประกอบด้วย พื้นฐานการออกแบบและเขียนโปรแกรมด้วยภาษาซี ตัวแปรและชนิดของข้อมูล ประโยคสำหรับอินพุตและเอาต์พุต ประโยคสำหรับสร้างเงื่อนไข ประโยคสำหรับวนซ้ำ การแบ่งโปรแกรมออกเป็นโปรแกรมย่อย การส่งผ่านพารามิเตอร์ ตัวชี้ อาเรย์และอาเรย์ที่ซับซ้อน สตริง ชนิดข้อมูลที่กำหนดโดยผู้ใช้ การประมวลผลไฟล์ และเทคนิคการตรวจสอบและดีบักโปรแกรม

วิชานี้เป็นวิชาหลักเลยก็ว่าได้ เป็นตัวตัดสินว่าเราเหมาะกับคณะนี้หรือเปล่า เพราะชื่อคณะก็บอกอยู่ว่า Software Engineering ถ้าเขียนโปรแกรมไม่เป็นก็เสียชื่อวิศวะซอฟต์แวร์

ในช่วงก่อนมิดเทอม เนื้อหาจะง่ายมากๆ เรียนพื้นฐานโปรแกรมภาษา C เช่นพวก If-else For/While loop มีเรื่อง Function เพิ่มมา และก็ Recursive นิดๆ หน่อยๆ ถ้าใครได้เรียนปรับพื้นฐาน Pre-session ผมรับประกันเลยว่าทำได้ทุกคน

หลังมิดเทอมเนื้อหาจะยากขึ้น เริ่มเรียนลึกขึ้น เช่น Array Pointer ไปจนถึง Linked list ซึ่งมี concept ใหม่ๆ ที่เราต้องทำความเข้าใจให้ดี


ชื่อวิชา : C Programming Laboratory (ปฏิบัติการเขียนโปรแกรมภาษาซี)
ชื่อเล่น : C Lab (ซี แล็บ)
คำอธิบาย : การศึกษาเชิงปฏิบัติการที่มีเนื้อหาสัมพันธ์กับวิชา 13016235 การเขียนโปรแกรมภาษาซี

หลังจากที่เราเรียนเลคเชอร์ ก็ต้องมีการปฏิบัติ ถ้าเป็นแล็บเคมี เรายังเห็นภาพว่าน่าจะทำการทดลองผสมสารอะไรสักอย่าง แต่แล็บโปรแกรมมิ่งจะทำอะไรดีล่ะ

ในห้องแล็บ (ห้องคอมนั่นแหละ) มีเวลาให้ 3 ชม. จะมีโจทย์ให้ทำ ในช่วงแรกๆ จะง่ายมากๆ แต่หลังจากนั้นสองสามสัปดาห์ ความยากจะเพิ่มขึ้นแบบก้าวกระโดด เหมือนเปลี่ยนจาก Easy เป็น Hard มันคือข้อสอบดีๆ นี่แหละ มีโค้ดมาให้ส่วนหนึ่ง แล้วเติมโค้ดให้โปรแกรมรันได้ก็มี หรือต้องเขียนเองใหม่ทั้งหมดก็มี เมื่อทำเสร็จแล้วก็ยกมือให้อาจารย์ตรวจ บางทีพึ่งอ่านโจทย์เสร็จ คนข้างๆ ทำเสร็จแล้วซะงั้น


ชื่อวิชา : Introduction to Computers and Programming (ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และการเขียนโปรแกรม)
ชื่อเล่น : Python (ไพทอน)
คำอธิบาย : วิชานี้เป็นการทำความเข้าใจเบื้องต้นเกี่ยวกับองค์ประกอบและหลักการทำงานของคอมพิวเตอร์ มีการกล่าวถึงประวัติความเป็นมาตลอดจนวิวัฒนาการของคอมพิวเตอร์ และแนะนำภาษาคอมพิวเตอร์ หลักการเขียนโปรแกรมคอมพิวเตอร์เบื้องต้น ทั้งในแบบโครงสร้างและเชิงวัตถุรวมทั้งตัวอย่างการเขียนโปรแกรมเพื่อใช้ในงานต่างๆ

วิชานี้เป็นอีกวิชาที่เราต้องเขียนโปรแกรม โดยจะเรียนภาษา Python 3 เนื้อหาจะใกล้เคียงกับภาษา C ในช่วงแรกๆ ข้อดีของ Python คือเรียนง่ายและสนุก ตัวภาษาไม่ซับซ้อนมาก

แต่เนื่องจากว่า Python ประยุกต์ได้เยอะ ปกติแล้วโปรแกรมของเราจะพิมพ์ผ่าน Command line หน้าจอดำๆ แต่เราจะได้เรียนวิธีการทำ GUI หน้าจอสวยๆ มีปุ่มให้ user คลิกได้ นอกจากนี้ยังได้เรียน OOP (การเขียนโปรแกรมเชิงวัตถุ) เรื่อง Abstract Class, Encapsulation, Inheritance และ Polymorphism ซึ่งเป็นพื้นฐานสำคัญสำหรับการเรียนภาษา C++ ในเทอมต่อไปด้วย

วิชานี้มีแล็บนอกตาราง เนื่องจากว่า Python ง่าย ถ้าแล็บง่ายก็จะทำได้เต็มกันหมด บรรยากาศในห้องแล็บจะเหมือนกับสนามสอบดีๆ นี่แหละ โจทย์ที่ออกในแล็บจะยาก และต้องใช้ความคิดสูง บางครั้งไม่ให้ใช้ Build-in function ที่ติดมากับ Python เพราะอยากให้เราคิดเป็นขั้นตอนว่าคอมพิวเตอร์ทำยังไงถึงออกมาเป็นแบบนี้ โจทย์หลายข้อมีวิธีทำหลายแบบ บางคนใช้ 20 บรรทัด แต่อีกคนใช้ 5 บรรทัด ผลลัพธ์ออกมาเหมือนกัน ขึ้นอยู่กับอัลกอริทึมล้วนๆ


วิศวะซอฟต์แวร์จะมีโปรเจคให้ทำทุกเทอม ในปี 1 เทอม 1 จะต้องทำโปรเจค 2 ตัว คือโปรเจคภาษา C และ Python ซึ่งหลักการเหมือนกันคือใช้ความรู้ที่เรียนมาทั้งหมดเขียนโปรแกรมอะไรก็ได้ ที่ไม่ง่ายเกินไปและไม่ยากเกินความสามารถเรา

ถึงแม้ว่าอาจารย์จะสั่งตั้งแต่ต้นเทอม แต่โปรเจคต้องใช้ความรู้ตั้งแต่เรื่องแรกจนถึงเรื่องสุดท้าย ดังนั้นส่วนมากจะมาปั่นโปรเจคช่วงสัปดาห์สุดท้ายก่อน Deadline ไม่ได้หลับไม่ได้นอนกันเลยทีเดียว ซึ่งวันที่ต้องนำเสนอโปรเจค ขอบอกเลยว่าสนุกมาก เพราะเป็นวันที่ทุกคนได้มาโชว์ของ บางคนทำโปรแกรมหรือเกมอย่างอลังการ แล้วหันกลับมามองของตัวเอง… ทำไมกากจังวะ อารมณ์ประมาณนี้ บางคนตอนทดสอบไม่มีปัญหาอะไร แต่พอนำเสนอดันเกิดบัค (ข้อผิดพลาด) ขึ้นมา ฮาเลยครับ

ขอจบการรีวิวแค่นี้ ถ้าใครอยากถามอะไร สามารถถามได้ที่คอมเมนต์ด้านล่าง หรือ https://coregame-th.com/contact สำหรับหลังไมค์ครับ