Software Engineering Practice I (อ.โสภณ)
ภาพรวมของคลาส
Software Engineering Practice I วิชาที่เรียนเนื้อหา Front-end developer
- Basic HTML & CSS — การเขียน HTML(hypertext markup language) และ CSS(cascading style sheet) พื้นฐาน
- Algorithm — มีโจทย์ฟังก์ชันที่ฝึกการแก้ปัญหา
- Javascript — ภาษาที่เป็นสมองในการเขียนเว็บไซต์
- React js — Web framwork ที่ทันสมัยที่สุด ณ ตอนนี้
- Supabase & Firebase — Database บน cloud
- Git — การใช้ Version control ในการอัพเดตงานที่เราทำ
จะได้เรียนรู้อะไร?
วิชานี้เป็นวิชาที่จะสอนเกี่ยวกับการเป็น Developer เบื้องต้นจนถึงระดับกลาง โดยคาบแรกๆจะมีการจัดกลุ่ม 3 คน หรือมากกว่านั้นตามจำนวนคนในคลาส และมีการสอนการเขียน HTML CSS และ Javascript ขั้นพื้นฐาน แต่ก่อนจะเขียน จะมีการทดสอบเป็นการเขียนโค้ดในกระดาษ เช่น สร้างฟังก์ชันที่เป็นการสร้างบ้าน home() โดยสามารถใช้ภาษาอะไรก็ได้ (พี่ใช้ python)
ตัวอย่างโค้ด
def home():
roof()
wall()
floor()
if __name__ == "__main__":
home()
และก็จะมีการพัฒนาจากโค้ดเก่าไปเรื่อยๆเช่น ให้เพิ่มฟีเจอร์ที่ทำให้สามารถกรอก argument ในฟังก์ชัน home() แล้วทำให้บ้านขยายขนาดขึ้นได้ เป็นต้น
จะมีการทดสอบแบบนี้เรื่อยๆ เมื่อเขียนในกระดาษเสร็จแล้วก็เอามาเขียนในคอมต่อแล้วอาจารย์ก็จะเดินดูผลลัพธ์ว่าถูกต้องไหม และที่สำคัญคือ ห้ามใช้ AI
หลังจากนั้นก็จะเป็นการสอน html css Javascript และมีโปรเจ็คเข้ามาเช่นกัน พอผ่านไปซักพักก็จะขึ้นเป็น Framework อย่าง react และมีโปรเจ็คใหญ่ที่จะทำ ตั้งแต่ต้นจนจบ term นั้นก็คือเกม XO มีการใช้ html canvas เพื่อมาใช้ในการวาดรูป (คล้ายๆกับการเขียน Processing) และจะมีการเพิ่มฟีเจอร์มาเรื่อยๆ เช่นฟังก์ชันเช็คเงื่อนไขการชนะ(มีสอบเขียนในกระดาษ) หรือการเล่นเกมนี้แบบ Online โดยใช้ PaaS อย่าง supabase, firebase เลือกได้แค่อย่างเดียว โดยตัวโปรเจ็ค Git และตัวอย่างสไลด์ จะทิ้งไว้ใน Resource discription
ฟังก์ชันท้ายสุดที่อาจารย์ให้ทำคือการนำโค้ดปัจจุบันของเราทำเป็น OOP

วิชานี้เหมาะกับใคร?
- รักในการเขียนโค้ดจริงๆ เพราะไม่งั้นสามารถอ้วกได้
- คนที่สามารถทำงานที่เข้ามาเยอะมากๆๆ ได้ทุกครั้งที่จบคาบ และส่งภายในคาบหน้า
- คนที่สามารถทำงานเป็นกลุ่มได้ และต้องการมีความสามารถในการนำเสนอเพิ่มขึ้น
- คนที่ต้องการจะไปในสายงาน Developer
- คนที่ต้องการได้ความรู้จริงๆ (ถ้าตัังใจ)
Study Tips & Techniques
- พื้นฐานภาษา python ควรแน่น — ถ้าเราฝึกเขียน python ไปในคาบแรกการทดสอบหรือการเรียนรู้ภาษาใหม่ๆจะง่ายมาก
- เรียนรู้ให้มากๆ — อาจารย์จะให้หัวข้อเรามาแค่นั้นและแหล่งที่ต้องศึกษา หน้าที่เราคือต้องหาความรู้มาให้ได้มากที่สุด
- ลองเขียนโค้ดโดยไม่ใช้ AI — ตอนสอบหรือตอนทดสอบ อาจารย์จะไม่ให้ใช้ AI แต่จะสามารถเปิดไฟล์เก่าๆดูได้
- ฝึกการนำเสนอและการทำ presentation — เป็นวิชาที่นำเสนอเยอะมากๆแทบจะทุกคาบ ควรฝึกฝนไว้ถ้ายังไม่เก่ง
- เขียนโค้ดให้บ่อยๆ — ทั้ง Django, TDD test หรืออะไรก็ตามถ้าเราทำมันบ่อยๆ เราจะจำ Pattern ของมันได้ทำให้สามารถตอบคำถาม หรือ ทำข้อสอบอาจารย์ได้
- กลุ่มต้องมีหัวหน้า — การทำงานเป็นกลุ่มควรมีหัวหน้าหนึ่งคนที่ทำการกระจายงานหรือจดบรรทึกงานที่อาจารย์สั่ง ถ้าไม่มีตุยแน่ๆ
Recommended Resources
| Resource | Type | Notes |
|---|---|---|
| HTML & CSS | Website | อ่านเนื้อหาเบื้องต้นของ html และ css |
| Javascript | Website | เนื้อหาของ Javascript |
| Python practice | Website | เว็บที่พี่ฝึกทำโจทย์ Python |
| ตัวอย่าง Slide 1 | Presentation | ตัวอย่างสไลด์ supabase |
| ตัวอย่าง Slide 2 | Presentation | ตัวอย่างสไลด์ html canvas |
| ตัวอย่าง Slide 3 | Presentation | ตัวอย่างสไลด์ component |
| XO project | Github | ลิ้งโปรเจ็ค XO ของกลุ่มพี่ |
เกณฑ์คะแนน
- ไม่มีบอกเกณฑ์คะแนน แต่ถ้าส่งงานตรงเวลา ทำข้อสอบได้ นำเสนอดี ก็มีโอกาสได้เกรดดีแล้ว
คะแนนรวมของผมตอนจบ: B
Summary
ถ้าตั้งใจจะเป็น dev และต้องการเรียนรู้จริง ลงมือทำจริง และรับได้ที่งานล้น ลงอาจารย์ SPN เลยครัช