June 19, 2022

Review วิศวะ คอม จุฬาฯ ปี 2

สวัสดีครับ ในที่สุดตอนนี้ผมก็ได้รอด(?)ชีวิตจาก ปี 2 เสียทีในช่วงเวลาไม่กี่วันก่อน จึงอยากมาทำการทบทวนวิชาต่างๆที่ได้ศึกษามาในปีนี้ว่าเป็นอย่างไรบ้าง

ปีนี้เรียนอะไรบ้าง

เทอม 1

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

  1. Intro to Data Structure
  2. Discrete Struct Com
  3. Digital Logic
  4. Digital Logic Lab
  5. Stat Physics Science
  6. (GEN_ED - หมวดวิทย์) Photo Sci
  7. (GEN_ED - หมวดมนุษย์) History of Western Philosophy

*โดยหากคุณมาจากภาครวมละก็คุณจะต้องเรียน Prog Meth ในเทอมนี้ควบคู่ไปด้วย(เนื่องจากรอบรับตรงเรียนวิชานี้ไปแล้วตอนปี 1 เทอม 2)

INTRO DATA STRUCT

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

ใช้โปรแกรมอะไรเขียน C++

โดยในวิชานี้จะใช้ภาษา C++ ในการเรียน และอาจารย์จะแนะนำให้ใช้ C++ IDE เป็น Code::Block

(แต่จะใช้ตัวอื่นก็ได้นะขอแค่มัน complie และ run ได้ถือว่าโอเค และเนื่องจาก IDE ตัวนี้เลิก support mac ไปนานแล้วจึงไม่สามารถใช้ได้อยู่แล้ว โดยส่วนตัวผมใช้ VS Code กับ mac m1 ซึ่งมีปัญหาหลายอย่างจากการที่ Apple ใช้สถาปัตยกรรมที่ต่างจากชาวบ้านขนาดนี้ 555+ เลยทำตาม set-up ตามลิ้งนี้ https://www.geeksforgeeks.org/c-installation-on-macbook-m1-for-vs-code/ แล้วจะใช้งานได้)

เนื้อหาที่เรียน

มีการเรียนการสร้าง Data Structure แบบต่างๆ (pair,vector,map,stack,queue,priority_queue,Binary Heap,Tree,Link List,AVL Tree,hash_table etc.) โดยรู้ถึงว่าในหลังบ้านนั้นมีการทำงานอย่างไร และสร้างอย่างไร

(หมายเหตุ เราทำการเรียนและสร้างโดยใช้ namespace ใหม่ในชื่อ CP ซึ่งอาจไม่เหมือนใน std ที่ใช้กันทั่วไป)

Grading

อาจารย์แจ้งว่าจะตัดโดยอิงตาม mean และความเหมาะสม (แบบนี้เค้าเรียกอิงกลุ่มไหมนะ -.-) โดยแบ่งคะแนนสัดส่วนคะแนนต่อไปนี้

รายงาน

ในปีของผมนั้นจะแจกหัวข้อรายงานหลังการสอบ Final โดยอาจารย์จะมีหัวข้อให้ประมาณ 100 กว่าหัวข้อเกี่ยวกับ Data Structure ที่ไม่มีในห้องเรียน โดยสามารถเลือกได้หัวข้อละ 2 คน (เพื่อป้องกันการลอกกันมั้ง) แล้วไปทำรายงานมาว่าตัวที่เลือกมานั้นมีการทำงานและประโยชน์อย่างไร (จุดประสงค์ของรายงานน่าจะเป็นการให้เราหัดอ่านและสังเคราะห์ข้อมูลจาก doc ให้เป็น เพราะข้อมูลส่วนใหญ่นั้นเป็นภาษาอังกฤษ)

Fun fact

โดยวิชาแสนสนุกนี้มีอาจารย์ผู้สอนหลัก NNN (ชื่อย่อของอาจารย์) และอาจารย์อีก 2 ท่าน เจ้าของตำนาน “มันคงไม่ง่ายเลยที่ NNN จะออกโจทย์แล้วไม่ bug” เนื่องจากการออกข้อสอบแค่ไม่กี่(วัน|ชั่วโมง)ก่อนสอบ

NNN_meme

Discrete Struct Com

ชื่อเต็ม Discrete Structures and Computability เอาจริงๆแล้วมันคือ วิชาคณิตศาสตร์ นั้นแหละ โดยเราจะแบ่งเป็นเรื่องๆดังนี้

  1. Logic & Set, Relations and Functions & Method of Proofs - เรียนลึกกว่าตอน ม.ปลาย นิดหน่อย(จิงๆนะ5555)นะ
  2. Counting Techniques
  3. Graphs and Trees
  4. Number Theory
  5. Computational Theory (Automata Theory, Turing Machine)

โดยในแต่เรื่องจะมีคะแนนเท่าๆกัน โดยจะมี Group Work และ Quiz หรือ Video Presentation ถ้าถามว่า Group Work คืออะไรนะหรอ มันคือการแบ่งกลุ่มเพื่อให้ช่วยกัน(?) ทำแบบฝึกหัดและส่งภายในคาบนั้นแหละ โดยการแบ่งกลุ่มจะสุ่มให้ แต่ในครั้งหลังๆเหมือนอาจารย์จะให้จัดกลุ่มเองได้ ส่วน Quiz ค่อนข้างที่จะยากตั้งแต่หัวข้อที่สองลงมาเลย (หรือมันไม่ยากแต่เราโง่เองกันแน่นะ~~~) และมี Video Presentation สั้นๆ ตามหัวข้อที่เราได้เลือก ส่วนตัวรู้สึกว่าวิชานี้ รูปแบบการสอนค่อนข้างจะมั่วๆ ปรับเปลี่ยนได้ตลอดเวลาให้เราได้ลุ้นกัน555

Digital Logic

วิชา Hardware ตัวแรกของคอร์ส เนื้อหาไม่ยากมากและเก็บคะแนนได้ค่อนข้างง่าย

สังเกตได้ว่าคะแนนส่วนใหญ่อยู่ที่ Homework ฉะนั้นตั้งใจการบ้านดีๆละ แล้ว Midterm จะทำได้เอง(?) สิ่งที่จำได้เลยคือ ตอน Final คนส่วนใหญ่เทวิชานี้แล้วไปทุ่มให้วิชาอื่นหมด เพราะส่วนใหญ่ได้คะแนนเกือบ 80(A) กันหมดแล้ว

Digital Logic Lab

วิชา Lab ตัวแรกของคอร์สเหมือนกัน ถึงจะบอกว่าเป็นแลปแต่ก็ไม่ต้องนึกไปถึงผสมสารเคมีอะไรหรอกนะ แต่เป็นการลองใช้ Logic gate และสิ่งที่ได้เรียนมา(?)จากวิชาทฤษฎีในการจำลองการทำงานของ Digital Logic ในโปรแกรมชื่อ LogicWorks และวิชานี้ไม่มีชั่วโมง Lecture นะครับมีแค่การ assign และส่งงานเท่านั้น โดย assignment แต่ละชิ้นจะมีเวลา 1 สัปดาห์ ให้คุณได้หัวระเบิดกัน เพราะบางทีก็มีเนื้อหาที่เค้าไม่ได้สอนหรือดูไม่ได้เกี่ยวกับที่เรียนเลย???

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

DISCLIAMER: เนื้อหาต่อไปนี้ถูกเขียนตอนจบปี 3 เทอม 1 แล้วทำให้อาจจำรายละเอียดได้ไม่หมดหรือไม่ถูกต้อง

Stat Physics Science

วิชา stat ที่จำได้ว่าเรียนลึกกว่าตอน ม.ปลาย ขึ้นมาหน่อย และให้อาจารย์นอกคณะเป็นคนสอน ไม่ค่อยมีการบ้านมากนักและเก็บคะแนนจากการสอบแบบ open book(or everything but except friends) เป็นหลัก

Photo Sci

Gen-ed หมวดวิทย์สุดฮิต แต่น่าเสียดายเล็กน้อยที่ผมลงในเทอมที่เรียนออนไลน์ ทำให้ไม่ค่อยได้ไปฝึกถ่ายรูปจริง วิชาจะเรียนทฤษฎีวิทยาศาสตร์การถ่ายภาพฟิล์มตั้งแต่ยุคแรกเริ่ม (ไม่ต้องกลัวว่าจะเรียนไม่รู้เรื่องนะครับ ไม่ได้วิทย์จ๋าขนาดนั้น สายศิลป์เรียนได้สบาย) และมีงานการถ่ายรูปตามหัวข้อที่กำหนดตามเทคนิคที่ีเรียน

และอาจารย์ใจดีมากๆ อาจารย์มีความชื่นชอบและความตั้งใจในการสอนในด้านการถ่ายรูปจริงๆ เรื่องนี้ผมยืนยันได้5555

note1: ถ้าจะเรียนวิชานี้ควรจะมีกล้อง Mirrorless หรือ DLSR เป็นของตัวเองนะครับ

note2: อย่าสับสนแบบผมละ ถ้าอยากเรียนกล้องดิจิตอลให้ลงเป็น Digital Photo นะครับ สอนโดยอาจารย์ท่านเดียวกัน

History of Western Philosophy

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

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

และเท่าที่ผมลองค้นหาข้อมูลเพิ่มเติม ผมพบว่าวิชานี้เป็นวิชาบังคับของภาควิชาปรัชญาปี 2 ทำให้ต้องเรียนพร้อมกับคนเรียนมาตรงสาย อ้าาา ทำให้เวลามีคนถามในห้องส่วนใหญ่จะเป็นคนที่มีพื้นฐานปรัชญาอยู่(ซึ่งผมไม่มีอ่ะ) แล้ว reference ที่อาจารย์แนะนำค่อนข้างหนามากต่อสัปดาห์(เหมือนเป็นวิชาหลักวิชานึงเลยล่ะ) ทำให้ผมตัดสินใจถอนก่อนที่ W จะกลายเป็น F 5555555555555

note1: วิชานี้มีงาน 4 ชิ้น ชิ้นละ 25% (yes, no exam bro)

note2: อาจารย์ที่สอนปีผมบอกว่า อาจารย์จะสอนเป็นปีสุดท้ายแล้ว

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

เทอม 2

  1. Computer Engineer Mathematics
  2. Programming Language Principle
  3. Algorithm Design
  4. Embedded System
  5. Embedded System Lab I
  6. Communication Presentation Skill
  7. (GEN_ED - หมวดมนุษย์) Urban Life

ตารางเรียนปี 2 เทอม 2 (สามารถสร้างได้จาก https://cugetreg.com)

Computer Engineer Mathematics

หรือ คณิตศาสตร์สำหรับคอมพิวเตอร์นั้นเอง

โดยเราจะเรียนเนื้อหา Linear algebra ที่มีความสำคัญในการทำความเข้าใจพวก computer graphics / supercomputer อะไรพวกนี้ และมีการใช้เนื้อหาบางส่วน(เล็กน้อย) มาจากการเรียน discrete math ด้วย รวมไปถึง Matrix และ Vector ที่เคยเรียนกันตอน ม.ปลาย

การเก็บคะแนนวิชานี้จะเน้นไปที่คะแนนสอบเป็นหลัก

Exercises จะเป็นแบ่งกลุ่มช่วยกันทำตามกลุ่มที่อาจารย์สุ่มให้ ฉะนั้น… ทำบุญเยอะๆละ5555 แต่ส่วนใหญ่แล้วทุกคนจะได้คะแนนส่วนนี้ 19 up กันหมด

Presentation จะให้ทำวิดีโอเกี่ยว Application ของ Linear algebra ตามที่ได้เรียนมา โดยอาจารย์จะมีหัวข้อให้

Final จำได้ว่าค่อนข้างยาก และคนแตกกันเยอะ(รวมถึงผมด้วย TT)

Programming Language Principle

วิชานี้จะมี 3 ส่วน Programming Language Concepts ,Alternative Programming Model ,Compiler

Programming Language Concepts

จะเรียนด้วยกันทุก sec โดยจะมีเนื้อหาเกี่ยวกับ name, scopes, bindings, control flow, data types

Alternative Programming Model

แบ่งเป็น 2 sec sec นึงจะเรียนอันนี้ก่อนแล้วค่อยเรียน Compiler ส่วนอีก sec ก็จะเป็นในตรงกันข้าม

เรียน functional programming ด้วยภาษา Scala ส่วนตัวมองว่า part นี้ค่อนข้างง่าย เพียงแค่อาจต้องปรับมุมมองการเขียนโปรแกรมสักหน่อย แล้วจะผ่านไปได้ไม่ยากนัก

Compiler

ชื่อฟังดูน่าเรียนนะ5555 โดยจะเรียนภาพรวมของ Compiler และจะเน้นลงลึกแค่ส่วนของ Parser

สรุป

ทุกส่วนจะมีทั้ง homework,quiz และ final โดยรวมๆแล้ววิชานี้ไม่ยากมากนักหากเทียบกับ Algorithm design…

Algorithm design

วิชาการออกแบบ Algorithm วิชาที่อาจารย์หลายท่านในภาคบอกว่าวิชานี้ยากที่สุดแล้วในการเรียน 4 ปี ในเรื่องของความยากของเนื้อหาอะนะ

โดยวิชานี้จะเรียนอัลกอริทึมต่างๆที่ใช้ในศาสตร์นี้ตั้งแต่ Brute force, dynamic programming, divide and conquer, greedy และ state space search หากคุณเคยเข้าค่าย สอวน หรือ เคยเล่น(?) competitve programming มาก่อนก็น่าจะคุ้นเคยกับเนื้อวิชานี้ดี (แต่ไม่ได้รับประกันว่าจะง่ายนะจ๊ะ)

วิชานี้เน้น Grader Quiz + Paper Exam ล้วนๆๆ ฉะนั้นแล้ว โชคดีนะครับ5555

ขอแค่ทำ grader ข้อ ex ครบ ก็น่าจะทำ quiz ได้บ้างแล้ว(มั้ง) ถ้าทำได้ทุกข้อเลยก็จะดีมาก แต่มันเป็นไปไม่ค่อยได้หรอกนะ ถ้าเรียนพร้อมกับวิชา Embedded System Lab นะ ฮึฮึ

note1: วิชานี้มีคะแนนเช็คชื่อถึง 20% ดังนั้นเข้าเรียนเถอะครับ ขอร้อง (ตัด F ~50% ดังนั้นขาดอีกแค่ 30% เองนะเฮ้ย)

Embedded System (Lecture)

(หยิบมาจาก course syllabus สะเยอะ เพราะกลับมาเขียนหลังจบปี 4 ก็ลืม topic ที่เรียนหมดแล้ว TT)

Embedded System Lab I

วิชานี้ให้บอร์ด STM32 มา (เป็น microcontroller คล้าย ๆ Arduino) แล้วทำ lab ตาม assignment รายอาทิตย์ และสอบย่อย เป็นวิชาที่ค่อนข้างยาก เพราะ ตัวอย่างจริง ๆ ในอินเตอร์เน็ตไม่ค่อยเยอะ และหน้าตาโปรแกรมที่ใช้ในการเขียนไม่เป็นมิตรเท่าไหร่

Project ประจำวิชา

เป็นงานกลุ่ม (กี่คนจำไม่ได้ แต่กลุ่มผมมี 4 คน) ให้ทำ IoT ในหัวข้อ “Contactless” (ปี Covid จ้า) โดยมีเงื่อนไขให้ใช้ STM32 อ่านหรือเขียนข้อมูลจาก sensor และใช้ NodeMCU เพื่อต่อกับ cloud และต้องมีโปรแกรมในส่วนของ frontend ด้วย

กลุ่มผมทำประตู(ปลอม) และเช็คว่าในห้องมีคนเกินที่กำหนดหรือยัง รวมไปถึงการวัดอุณหภูมิร่างกายว่าปกติหรือไม่ โดยเชื่อมต่อกับ Realtime database Firebase และเขียน web frontend อย่างง่ายขึ้นมา

วงจรวัดอุณหภูมิร่างกาย

Fun fact

อาจารย์เคยบอกว่าที่ไม่ใช้ Arduino เพราะเดี๋ยวมันจะง่ายไปครับ :sad:

Communication Presentation Skill

หรือชื่อย่อคือ COM PRESS SKILL หรือภาษาอังกฤษเพื่อการสื่อสาร เช่น การสัมภาษณ์งาน ,การอภิปราย discussion ,การนำเสนอ (มีให้สอบ present)

Urban Life

วิชา Gen-ed หมวดมนุษย์ของคณะสถาปัตย์สาขาผังเมือง ซึ่งผมตัดสินใจลงแทน History of Western Philosophy ที่ถอนไปแล้ว เป็นวิชาที่เรียนเกี่ยวกับวิถีชีวิตของคนในเมือง ตั้งแต่ประวัติศาสตร์ของการก่อตั้งเมือง ทำไมถึงเลือก location นี้ ทำไมคนถึงต้องออกจากพื้นที่ชนบทมาทำงานในเมือง เหตุผลของการ design สิ่งต่างๆรอบตัวในเมืองใหญ่ ทำไมเราแก้ปัญหารถติดในกรุงเทพไม่ได้สักทีและศึกษาการแก้ปัญหาของต่างประเทศ ทำไมการมีรถสาธารณะอาจไม่ได้ช่วยแก้ปัญหาได้แบบหมดจด อาหารการกินและปัญหาด้านสุขภาพของคนในเมืองที่เกิดจากกิจวัตรประจำวันอันแสนเร่งรีบ(?)

เป็นวิชาที่คุ้มค่าแก่การเรียนที่สุดในบรรดา Gen-ed ทั้งหมดที่เรียน ไม่ผิดหวังที่ได้เรียนวิชานี้เลย แต่น่าเสียดายเหมือนว่าวิชานี้จะปิดไปแล้ว