วิชาเลือกภาคคอม….เลือกยังไงดีหว่า ? ภาค 2


Human Computer Interface – (HCI)




    ในเมื่อโปรแกรมสองโปรแกรมทำหน้าที่เหมือนกัน แต่ทำไมมีอันหนึ่งที่ขายดีกว่าล่ะ มันเฉือนกันที่ความ Usability นั่นเอง!


    เราจะมาดูกันว่าทำไงให้โปรแกรมใช้ง่าย มีหลักการอะไรบ้าง บางอย่างที่อาจไม่เคยเอะใจมาก่อนแต่อยู่กับมันมานานแล้ว (เช่นในหน้า Save file ทำไม Microsoft ถึงจัดเรียงของต่างๆในหน้าต่างแบบนั้น) คนออกแบบ คำนึงถึงอะไรบ้างโปรแกรมจึงจะออกมาแล้วใช้ง่าย ทำยังไงให้เด็กเล็ก เด็กโต ผู้ใหญ่ คนแก่ คนต่างชาติ ใช้โปรแกรมของเราได้ดีทั้งหมด อ้อ แล้วอย่าลืมคนพิการด้วย


    ก็จะมีวิเคราะห์สไตล์การตอบโต้แบบต่างๆ อย่างแบบ Command-Line เช่นยูนิกซ์ หรือแบบจับต้องสัมผัสได้โดยตรงเช่น iPhone และอื่นๆ ว่าแต่ละแบบข้อดีข้อเสียยังไง จะทำบ้างแล้วต้องคิดเรื่องอะไรบ้าง การใช้สี การใช้เสียง การจัดตำแหน่ง และอื่นๆอีกมากมายที่ควรคิด

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


    เรียนจบแล้วจะสามารถออกแบบสิ่งต่างๆให้ “น่าใช้” ได้กว่าคนทั่วไป ชนิดที่ว่าผู้ใช้ไม่รู้หรอกว่าทำไมมันน่าใช้กว่าอีกอัน แต่มันรู้สึกดีกว่าจริงๆ

 

Management of Technology & Innovation – (MTI)



    เป็นวิชาสายการจัดการทางไอทีอีกวิชาหนึ่ง มีความคล้ายกับวิชา IT Management อยู่พอสมควรแต่ต่างกันที่วิชานี้จะเน้นไปในการจัดการเทคโนโลยีและการสร้าง นวัตกรรมขึ้นมา (มันคือวิชาสอน geek เป็น CEO ภาคสอง)

 

  • ใน รายวิชานี้จะอธิบายว่านวัตกรรมคืออะไร มี่กี่แบบ และเปลี่ยนแปลงชีวิตเรายังไง การสร้างนวัตกรรมทั้งในรูปแบบของฮาร์ดแวร์และซอร์ฟแวร์เป็นอย่างไร ขั้นตอนการทำงานยังไงบ้าง

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

  • การจัดการความรู้ในการสร้างนวัตกรรม

  • สุดท้ายเมื่อเรามีนวัตกรรมหรือความรู้ต่างๆแล้วเราจะถ่ายทอดความรู้เหล่านี้ให้กับคนรุ่นต่อไป

  • หรือเอาไปสร้างรายได้ จดสิทธิบัตร จัดการต่อ หรือมีกฏหมายที่เกี่ยวข้องอะไรบ้าง

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

 

สังเกต ว่าส่วนใหญ่จะเป็นหัวข้อที่เกี่ยวข้องกับการจัดการและหัวข้อทางธุรกิจ ซึ่งส่วนใหญ่คนที่เรียนมาทางสายคอมพิวเตอร์จะไม่ค่อยมีประสบการณ์ในด้านนี้ มากนัก ซึ่งในปัจจุบัน คนทำงานสายไอทีควรจะมีความรู้เกี่ยวกับการจัดการควบคู่กันไปเพื่อจะได้รู้ ว่า เวลาเราสร้างนวัตกรรมหรือเขียนโปรแกรมอะไรออกมา เราต้องดูตลาดยังไง ไม่งั้นเขียนให้ตายยังไงก็ขาดทุน  ไม่เข้าใจ requirement ลูกค้า หรือโดนเอาเปรียบ สุดท้ายก็ไม่รวยซักที – -

 

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

 

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

 

Numerical Computing



    ก็เป็นวิชาประมาณว่า เรียนว่า พวกวิธีการคำนวณอะไรแปลกๆ

(หรือ ไม่แปลก แต่เราไม่เคยคิดสนใจ) ในคอมอะ มันทำกันยังไง เช่น สงสัย มั้ยว่า เวลาเราถอดรากในคอมอะ มันคิดยังไง ถึงได้ตัวเลขแม่นยำขนาดนั้น แต่ว่า เนื้อหาส่วนแรกๆ มันจะค่อนข้าง

น่า เบื่อหน่อย เพราะพื้นฐานต้องแน่น ไม่งั้นเรียนไม่ได้ เราจะได้เจอ เวคเตอร์ แมทริกซ์ ขั้นเทพ พร้อมที่มาที่ไป (บางเรื่องที่เคยเรียน ใน Math I , Math II , Math III ที่ทำตามได้ แต่ไม่รู้ว่าทำเพราะอะไร

เราก็ได้รู้รายละเอียดแบบลึกๆ ในวิชานี้) แล้วท้ายๆก็มีเรียนพวก วิธีการแก้ปัญหาประเภท Optimization

ตั้งแต่แบบง่ายๆ ที่เคยเรียนในม.ปลาย อย่าง linear programming จนถึง Optimize ขั้นเทพ ที่ผมเรียนจบก็ยังไม่เข้าใจ Orz

    หลังจากที่เรียนจบแล้ว จะได้พลัง Matrix ขั้นเทพมามากมายเช่น

 

  • มีสมการโหดๆสามตัวแปรสามสมการสามารถแก้ได้โดยไม่ต้องใช้สมองเลย

  • ทำเว็บดูหนังแล้วสามารถรู้ได้ว่าคนนี้น่าจะชอบเรื่องนี้เหมือนกันนะโดยดูจากเพื่อนๆของคนคนนั้น

  • รู้ได้เลยว่าแทนอะไรลงในสมการนี้แล้วผลเป็น 0 โดยไม่ต้องใช้สมองแค่วน loop ไม่กี่ครั้งสบายแฮ

  • สามารถ แก้ชุดสมการที่ไม่มีคำตอบเป๊ะๆเช่น “x+y=5 , x+y=7 พร้อมกัน ถามว่า x และ y คืออะไร” ด้วยการหาคำตอบที่ดีที่สุดที่เป็นไปได้ **สามารถประยุกต์ไปแก้ปัญหาชีวิตคิดไม่ตกได้มากมาย**

  • สามารถแก้สมการที่คำตอบเพียบเช่น “x-y = 6 ถามว่า x และ y คืออะไร” โดยหาคำตอบที่ดีที่สุดแค่คำตอบเดียว

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

 

    แนวการเรียนเป็นแบบ ฟังเลคเชอร์สลับกับทำแลป โดยแลปเป็นการเขียนโปรแกรมด้วยไพธอน

(ใช้ภาษาอื่นก็ได้ แต่ว่า ไพธอนมันมีลูกเล่นแนวนี้เยอะ และอาจารย์มะนาวเค้าเชี่ยวไพธอน)

ปล. วิชานี้กราฟเยอะโฮกๆนะจ๊ะ จุ๊บุๆ

Programming language Translator aka. Compiler

    เป็นวิชาที่เรียนเกี่ยวกับคอมไพล์เลอร์เน้นๆ ตั้งแต่ประวัติศาสตร์ คอมไพล์เลอร์ตัวแรก

จนถึง หลักการที่ใช้ และได้เขียนคอมไพล์เลอร์ด้วย!! (โหดปะละ)

ก็ คือ อาจารย์จะสอนหลักการ ตั้งแต่ การออกแบบภาษาที่ใช้โปรแกรม (นิยามด้วย Context-free grammar ที่เรียนใน Theory of computation นั่นละ)

แล้ว ก็มาวิเคราะห์ว่า จะเขียนโปรแกรมยังไง ให้มันตีความโค้ดเราให้ถูก ตามที่อยากได้ ทุกอาทิตย์จะมีการบ้านหนึ่งครั้ง ไม่ยากมาก และ ภาษาที่ใช้เป็นหลักในการเรียนคือ C-subset เป็นภาษาที่

เป็นซับเซตของซี(ตามชื่อมันนั่นแหละ) Syntax เหมือน C แต่ทำงานได้น้อยกว่า เช่น พวกพอยน์เตอร์ไรงี้

ไม่ มี เพราะจะยากเกิน และในวิชานี้ก็จะสอนเราว่า การเขียนคอมไพล์เลอร์ ไม่จำเป็นต้องเขียนด้วยภาษาระดับต่ำ เช่นเราใช้ ภาษา C เขียนคอมไพล์เลอร์ของภาษา C ก็ได้

สงสัยใช่มั้ย ว่าทำไง ต้องลองไปเรียน ><


ปล. คาบแรกมีสอนวิธีการแฮคระดับคอมไพล์เลอร์ด้วย โดยฝังโค้ดแฮคเข้าไปในคอมไพล์เลอร์

ให้ฝัง Backdoor เข้าไปในโปรแกรมที่มันคอมไพล์ แถมเป็นโค้ดแบบที่ตรวจจับไม่ได้ด้วย โหดปะละ

Network Configuration


    สอน เกี่ยวกับความสามารถต่างๆของ Router Cisco และก็บอกวิธีคอนฟิคว่าถ้าต้องการแบบนี้ต้องทำยังไง  อารมณ์เดียวกับ Lab Network แต่ว่าจะซับซ้อนกว่ามาก จะเป็นระบบเน็ตเวิคที่มีขนาดใหญ่ขึ้น ไม่ใช่แค่ต่อตัวสองสามตัวแบบในตอนเรียน Lab Network จะเหมือนเป็นระดับองค์กรมากขึ้น แบบที่ใช้งานจริงๆในบริษัท  มีสอบ CCNA เหมือน Lab Network


คาบ สุดท้ายมีสอนคอนฟิค Router ยี่ห้ออื่นนิดหน่อย เช่น Zyxel, Huawei ตอนรุ่นพวกพี่ (CPE23/SKE07) เรียนแค่คาบเดียวเลยไม่ออกสอบ แต่อาจารย์เคยพูดว่ารุ่นต่อๆ ไป อาจจะมีสอบด้วย

(จำได้แค่นี้แฮะ ใครเรียนอีกมาช่วยเติมหน่อย – -)

Network Security



    ก็ตามชื่อวิชาเลยครัฟ เราจะเรียนว่า ใน Network หนึ่งๆเนี่ย มันมีความไม่ปลอดภัยตรงไหนบ้าง

เริ่ม เรียนตั้งแต่พื้นฐาน เช่น ความแตกต่าง http , https ว่าทำไมมันถึงปลอดภัย และวิธีการโจมตีแบบต่างๆ(เรียนทฤษฎีนะ มีได้ลองโจมตีจริงแค่ไม่กี่แบบ) จนถึงได้ลองแครกรหัส wireless

ปล.ช่วงแรกๆ วิชานี้จะเรียนเรื่องการเข้ารหัส (Cryptography) เช่น encryption , hash และเรียนนาน

จนเกือบถึงมิดเทอม เพราะงั้น ช่วงแรกๆจะน่าเบื่อหน่อย มีแต่ Math แต่ว่าหลังๆสนุกดีนะ

 

จำเนื้อหาไม่ค่อยได้ เล่าแลปให้ฟังละกัน

มีแลปที่ใช้ Cain หลอกเครื่องเพื่อนว่าเราเป็น Access point ให้เพื่อนส่งข้อมูลหาเราแทน เพื่อดักข้อมูล

 

แล้วก็มีแลปที่ให้เราสร้าง Certificate (เวลาเข้าเว็บที่เป็น HTTPS มันจะขึ้นสีเขียวๆที่ address bar

ตรงนั้นแหละ คลิกดู Cert. ของเว็บนั้นๆได้) เรียนรู้ประเภทต่างๆของ Cert. และหลักการทำงาน

 

แล้วก็มีแลปที่ใช้ nmap เพื่อหาข้อมูลเป้าหมายที่เราจะโจมตี ว่า ใช้ OS อะไร เปิด port อะไรอยู่บ้าง

 

แลปสุดท้าย ใช้เครื่องมือพวก aircrack เพื่อขโมยรหัส wireless แล้วก็ได้รู้ว่า แต่ละแบบ

(ธรรมดา , WEP , WPA , WPA-2)มันแครกยากง่ายยังไง

Data Warehouse  เปิดในชื่อ Database System Design




    จริงๆ ชื่อวิชาที่เปิดสอนจะใช้ว่า Database System Design แต่ว่าเนื้อหาที่สอนจริงๆแล้วเป็นการสร้าง BI (Business intelligence) โดยใช้ความรู้จากการทำ Data warehouse ออกมาเป็นรายงานอิเล็คทรอนิกส์ช่วยในการตัดสินใจของผู้บริหารธุรกิจต่างๆ โดยจะเป็นรายงานที่บอกได้ว่าใน 1 ปี 4 ปี หรือว่า 10 ปีที่ผ่านมา ที่สาขาไหน สินค้าตัวไหนขายดี สินค้าตัวไหนทำกำไรได้มาก ลูกค้ากลุ่มไหนที่เป็นลูกค้าหลัก เป็นต้น


    การเรียนวิชานี้แบ่งเป็นสองส่วนใหญ่ๆคือการ Design data warehouse และการ Implement จริง หลักการ Design นั้น จะแตกต่างกับ database (database จะเน้น insert update delete) แต่ว่าอันนี้จะเป็นการไปดึงข้อมูลมาจาก database หลายๆ database อีกทีหนึ่ง โดยจะเอามาสร้างเป็นตารางใหม่ที่มีข้อมูลเยอะมากๆ โดยที่มีโครงสร้างแตกต่างกับ database เนื่องจากเน้นการใช้งานต่างกัน ส่วนการ implement ก็คือต้องใช้ tools ช่วย ซึ่งจะเป็น tools ระดับ enterprise ได้ยินมาว่ารุ่นต่อไปจะสอน SAP ด้วย


    จะเรียนวิชานี้ได้ดี พื้นฐานที่ต้องมีก็คือต้อง Query เป็น และอาจจะต้อง Expert หน่อยๆด้วย เพราะว่าจะต้องเอาตารางต่างๆมา join อะไรกันเยอะๆ แต่ก็ฝึกกันได้แหละ ทวนๆ database มาก็ดี วิชานี้มีโปรเจคกลุ่มปลายเทอมด้วยนะ เรียนแล้วได้คอนเสปดี

    วิชานี้ไม่ได้เป็นวิชา Pre ของ Data mining นะ เรียนแยกกันได้ไม่ต้องใช้ความรู้ของอีกอันมากเท่าไร เรื่องของ data mining จะเป็นการเอาข้อมูลจาก data warehouse ไปทำให้ออกผลลัพธ์ที่คาดเดาไปในอนาคตอีกที เช่น data warehouse บอกผู้บริหารได้ว่า ใน 5 ปีที่ผ่านมา เรามีกลุ่มลูกค้ากลุ่มไหนบ้าง เราได้กำไรจากแต่ละกลุ่มเท่าไร แต่ว่า mining จะบอกได้ว่า ในอีก 2 ปีข้างหน้า ลูกค้ากลุ่มไหนจะเลิกเป็นลูกค้าเรา เพราะสินค้าตัวไหน ไรงี้

 

ปล.text อ่านยากมากนะจ๊ะน้องๆ แต่อ่านแล้วก็ละเอียดกว่าเรียนนะจ๊ะ ถ้าตั้งใจอ่านดีๆ มันอธิบายภาพรวมของธุรกิจแต่ละอย่างคร่าวๆ ให้เราทำความเข้าใจก่อนให้แนวคิดการออกแบบ

 

Machine Learning




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


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

 

NLP



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


    หลังๆจะสอนพวกอัลกอริทึม วิธีการทำ Information retrieval โยนเอกสารเข้าไปชิ้นนึง จะค้นหาเอกสารที่คล้าย หรือใกล้เคียงกันได้ยังไง ทำ Information Extraction ดูว่าเราต้องการข้อมูลนี้ จะค้นหาจากเอกสารที่มีอยู่ได้ยังไง แล้วก็ทำพวก Classification แบ่งประเภทข้อมูล ก็เป็นอัลกอริทึม เหมือนกัน จบเทอมทำงานชิ้นนึงส่ง (งานกลุ่ม) เรียนง่าย สบาย อาจารย์ใจดี จุ๊บๆ

Network Programming. Network Secure II



    detail here (วิชานี้ไม่เกี่ยวกะ Programming แค่ยืมชื่อวิชามาเปิด แต่ความจริงสอน secure นะ)


    วิชานี้จริงๆ คือ Hands-on Network Security คือลงมือปฏิบัติจริงๆ เสมือนเป็น LAB ตัวนึงเลย จะแบ่งเป็น 3 Part หลักๆ คือของอาจารย์สุรศักดิ์, Part ของอาจารย์อนันต์ และสุดท้ายจะเป็นการแข่งกันโจมตีกลุ่มตรงข้าม โดยในช่วงแรกจะทำการแบ่งกลุ่มกันก่อน ขึ้นอยู่กับจำนวนคนที่เรียน ว่าจะแบ่งได้กี่กลุ่ม กลุ่มละกี่คน แล้วทำการแบ่งหน้าที่ให้แต่ละคนรับผิดชอบ เช่น
1. VM and Core Router/Switch Manager

2. Firewall Manager

3. IPS manager

4. DNS/DHCP Manager

5. Web Server Manager

6. Network Monitoring Manager

7. Linux Clients Manager

8. Windows Clients Manager

9. Document Manager

10. Security Auditor

11. Security Attacker

 

เป็นต้น เมื่อได้หน้าที่แล้วก็เริ่มเข้าสู่การเรียน

    Part ของอาจารย์สุรศักดิ์ จะเป็นบรรยายเกี่ยวกับ Security การทำยังไงให้ระบบเราปลอดภัย จะมีพี่กษม (พี่ LAB ANRES) มาบรรยายด้วย ช่วงนี้อาจได้ Config พวก VMware, Router, Firewall, IPS เป็นต้น


    Part ของอาจารย์อนันต์ จะเป็นการทำ LAB CCNA Security หรือ CCNAS คือยกเนื้อหาของ CCNAS มาสอน เราจะได้ Config Router, Switch ให้มีความปลอดภัยมากยิ่งขึ้นกว่าตอนที่เรียน CCNA เช่น ตอนที่เรียน CCNA อาจจะแค่ Config ธรรมดา ยังไม่มีการ Config ด้านความปลอดภัยสักเท่าไร แต่ถ้าเป็นวิชานี้ จะมีการ Config เรื่องความปลอดภัยมากขึ้น เช่น การทำ aaa (Authentication, Authorization, Accounting) , การทำ Firewall, การทำ IPS, การยืนยันตัวผ่าน Radius, การดู Log ของ Router, Switch เป็นต้น ส่วนใหญ่ก็เนื้อหาต่อจาก CCNA


    Part สุดท้าย การแข่งโจมตีกลุ่มตรงข้าม ในส่วนนี้เราต้องใช้ความรู้ที่ได้เรียนมาทั้งหมด นำมาประยุกต์รวมกัน โดยแต่ละกลุ่มจะมี Server และ Vmware จำนวนมากให้ใช้ ให้เราจัดการระบบของเราเปรียบเสมือนเป็นบริษัทที่ให้บริการ Service อะไรสักอย่าง ทำอย่างไรให้ Service นี้ปลอดภัยจากการถูกโจมตี และสามารถให้บริการอยู่ได้ตลอด แต่ละกลุ่มต้อง Config Router, Switch, Firewall, IPS/IDS, Computer และ Policy ต่างๆ โดยออกแบบระบบเองทั้งหมด เช่น จะทำ NAT มั้ย, Server ต้องลง OS อะไร, Firewall ควรวางไว้ที่ไหน, เครื่องคอมพิวเตอร์ควรจะลงโปรแกรมอะไรบ้าง เป็นต้น ซึ่งเป็นสิ่งที่ท้าทายอย่างมาก

 

วิชานี้เหมาะสำหรับคนที่มีใจรักในสาย Network จริงๆ ><”

Data Mining



เมื่อ Database สามารถเก็บข้อมูลดิบเถื่อนแล้วเรียกดูได้ และ Data Warehouse นำข้อมูล DB มาจัดใหม่ให้สามารถสรุปรายงานแบบเจ๋งกว่าเดิมได้ รวมยอดขายจัดเรียงตามเพศ ตามอายุลูกค้า ตามอะไรก็ได้ตามที่หวัง เรายังเหลืออะไรที่ต้องการอีกล่ะ


ใช่แล้ว “อนาคต”!


เรา มีข้อมูลอยู่มากมาย เราจะล่วงรู้อนาคตได้ยังไงจากข้อมูลพวกนี้กันนะ เราก็จะใช้ Data Mining นั่นเอง! ข้อมูลในอนาคตจะมีช่องว่างที่เราไม่อาจล่วงรู้ได้อยู่ แต่คาดเดาจากข้อมูลเดิมได้ (เช่นเรามีข้อมูลว่า นาย A B C เพศนี้ เงินเดือนเท่านี้ บลาๆ แล้วซื้อสินค้าเรา พอมีนาย D ที่มีข้อมูลเพศและอื่นๆเหมือนกันแต่ยังไม่มีข้อมูลว่าเขาจะยอมซื้อสินค้าเรา มั้ย DM ก็จะทายให้เลยจากนาย A B C ที่มี)


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


ปล. ในปีของพี่ ตอนช่วงท้ายๆ อ. กฤษณะ จะหยุดสอนแล้วเริ่มให้เรียนรู้ด้วยตนเอง โดยการโยน(?) Paper คลาสสิคในสาย DM มาให้อ่าน แล้วให้แต่ละกลุ่มออกมาพรีเซ้นต์สอนกันเอง (ซึ่งต้องสอนกันดีๆด้วยเพราะมันจะกลายเป็นข้อสอบ) นอกจากนี้ยังมีการเชิญวิทยากรมากมายมาบรรยายเปเปอร์ (ไม่คลาสสิค เป็นเปเปอร์ที่วิทยากรนั้นๆได้วิจัยมาใหม่) ที่เกี่ยวกับความก้าวหน้าใหม่ๆของ DM ซึ่งก็จะกลายเป็นข้อสอบเหมือนกัน


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

 

Network Kernel Architecture and Implementation (ในชื่อของ Wireless Embedded )



วิชานี้เป็นวิชาพึ่งเปิดใหม่ โดยอาจารย์จบใหม่ไฟแรง อ.อภิรักษ์ แห่ง LAB IWING  นั่นเอง

ชื่อ วิชาจริงๆชื่อ Network Kernel Architecture and Implementation แต่เปลี่ยนชื่อวิชาไม่ทัน เลยใช้วิชาเดิมที่เคยมีอยู่และใกล้เคียงไปก่อน นั่นคือ Wireless Embedded นั่นเอง


    วิชานี้เหมาะสำหรับผู้ที่มีพื้นฐานทางด้าน Computer Network มาบ้าง และมีสกิลของการใช้ Linux Command เล็กน้อย ช่วงสัปดาห์แรกๆ จะสอนเนื้อหาเกี่ยวกับความเป็นมาของ Linux ประวัติคร่าวๆ เวอร์ชั่น ประเภท ของ Linux ให้เล่นคำสั่ง Linux พื้นฐานให้คล่อง ต่อมาจะเริ่มลงเนื้อหาเกี่ยวกับ Architecture ลอง Linux ว่ามีส่วนใดบ้าง ให้ลอง Compile Kernel เอง เป็นต้น จากนั้นจะเริ่มเข้าสู่เนื้อหาของ Device Driver ซึ่งเราอาจจะได้เขียน Driver เองเล่นๆ ทำ Makefile เอง ความรู้ตรงนี้สามารถเอาไปทำ custom kernel ของ android ได้ด้วยเช่นกัน


    เนื้อหา Part หลังๆ จะได้เล่นเกี่ยวกับพวก OpenWRT ซึ่งจะลงไปในเนื้อหาของ Embedded จะออกแนว Hardware นิดๆ ซึ่ง OpenWRT นั้น เป็น firmware ของ Access Point นั่นเองที่เราสามารถเขียนโปรแกรมเพิ่มเข้าไปให้ทำงานดั่งใจของเราได้

 

สรุป แล้ว วิชานี้น่าจะเหมาะกับคนที่ชอบเรียนทางด้าน Network, Linux, Hardware เล็กน้อย, มีเขียนโปรแกรมภาษา C ด้วย งานจะมีเกือบทุกอาทิตย์ แต่เป็นงานง่ายๆ ถ้าทำเสร็จในห้องก็แทบจะไม่มีการบ้านเลย


Parallel

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

 

  • MPI (Message-Passing Interface) เขียนโปรแกรมภาษาซีให้มองเห็นและสือสารกันระหว่างเครื่อง โยนข้อมูลไปมาระหว่างกันได้ โดยไม่ต้องยุ่งกับฮาร์ดแวร์

  • CUDA เขียนคำสั่งให้ GPU สามารถประมวลผลได้

  • สถาปัตยกรรมต่างๆ ที่เกี่ยวข้อง

  • หลักการแก้ปัญหาที่สามารถแบ่งส่วนเพื่อทำ Parallelism ได้

  • มีแถมเรื่อง Cloud Computing ด้วย

  • ฯลฯ

 

ความรู้ที่ควรมี

 

  • OS (ควรเข้าใจหลักการส่งข้อความ การจัดการหน่วยความจำ ฯลฯ)

  • Algorithm (ควรเข้าใจหลักการแก้ปัญหาด้วยอัลกอริทึมต่างๆ และมีความพร้อมที่จะเปิดมุมมองเพื่อคิดวิธีการแก้ปัญหาเมื่อมีจำนวน processor มากขึ้น)

  • System Software (ควรเข้าใจหลักการคอมไพล์โปรแกรมและใช้ไลบรารีต่างๆ)

 

OOC



งงๆ เหมือนกันช๊ะมันเกี่ยวอะไรกับ OOP จริงๆแล้วมันก็แทบจาเหมือนกับสอน OOP เลยแหละ คือสอนว่าการออกแบบโปรแกรมที่ดีมันควรจะเป็นอย่างไง public private static non-static abstract interface มันคืออะไร แล้วไอ้พวกนี้มันจะช่วยให้เราเขียนโปรแกรมเป็นระบบระเบียบมากขึ้นได้อย่างไร เคยมั้ยที่หลายๆโปรแกรมมีการทำงานที่คล้ายกันมาก แต่โค้ดเดิมมันกลับเอามาใช้ใหม่ไม่ได้เลยทันที ต้องเขียนใหม่อยู่ดี วิชานี้จะช่วยให้เราเขียนไว้ดีๆแล้วเอากลับมาใช้ใหม่ได้ง่ายขึ้น อีกส่วนนึงของวิชาก็คือสอนว่าการจะทำ Software 1 ตัวเนี่ยมันจะต้องเริ่มจากอะไรบ้าง แล้วจะไปสิ้นสุดที่ตรงไหน (มีสอนตีราคา Software ที่เราทำด้วย) วิชานี้ก็ประมาณนี้แหละ


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


    แต่ว่าวิชานี้ก็ต้องการความรู้+ประสบการณ์ในการเขียนโปรแกรมค่อนข้างเยอะ เหมือนกัน แนะนำว่าปี1-2อย่าเพิ่งเรียนจะดีกว่า ปีที่จะเรียนแล้วได้ประโยชน์สูงสุดควรจะอยู่ที่ปี 4 แต่ปี 3 ก็เรียนได้ ถ้าจะเรียนแล้ว get idea สุดๆอยากให้ลองมีประสบการณ์ที่เคยเขียนโปรแกรมตัวนึงที่มีโค้ดมากกว่า 1000 บรรทัด+ แล้วรู้สึกว่าเริ่มอ่านโค้ดไม่รู้เรื่องแล้ว ฟังก์ชั่นไหนทำอะไรจำแทบไม่ได้แล้ว แล้วก็เริ่มยากแล้วที่จะเขียนต่อเพราะมันจัดการอะไรกับโค้ดไม่ได้เลย พอมาเรียนแล้วจะรู้สึกว๊าวที่มันมีอะไรแบบนี้อยู่บนโลกด้วย แล้วสิ่งที่ได้เรียนมันจะช่วยแก้ปัญหาพวกนั้นได้จะรู้สึกตื่นเต้นไปกับการ เรียน แล้วก็อยากที่จะเรียนจริงๆ :p

Reference :

Technical Elective Document

Source from Google Docs

Exteen Blog

Comments are closed.