โครงงานทางวิศวกรรมซอฟต์แวร์

Senior Project in Software Engineering

1 บูรณาการความรู้: ให้นักศึกษาได้นำแนวคิดและหลักการทางวิศวกรรมซอฟต์แวร์ เช่น การวิเคราะห์ความต้องการ (Requirement Analysis), การออกแบบระบบ (System Design), การพัฒนา (Implementation), การทดสอบ (Testing), และการบำรุงรักษา (Maintenance) มาใช้ในสถานการณ์จริง
2 พัฒนาซอฟต์แวร์อย่างเป็นระบบ: สอนให้นักศึกษารู้จักกระบวนการพัฒนาซอฟต์แวร์ (Software Development Life Cycle - SDLC) ตั้งแต่การวางแผน การบริหารจัดการโครงการ การทำงานร่วมกับทีม ไปจนถึงการส่งมอบงาน
3 เสริมสร้างทักษะการทำงานเป็นทีม: การทำงานเป็นกลุ่มในโครงการขนาดใหญ่จะช่วยให้นักศึกษาเรียนรู้การสื่อสาร การแบ่งงาน การแก้ปัญหา และการรับผิดชอบร่วมกันในทีม
4 ฝึกฝนทักษะการแก้ปัญหา: นักศึกษาจะได้เผชิญกับปัญหาที่ซับซ้อนในระหว่างการพัฒนาโปรเจกต์ และต้องใช้ความรู้ความสามารถในการหาแนวทางแก้ไขอย่างสร้างสรรค์
5 เรียนรู้การนำเสนอและการเขียนรายงาน: นักศึกษาจะต้องจัดทำเอกสารประกอบโครงการ (Project Documentation) และนำเสนอผลงานต่อคณะกรรมการหรือผู้ที่เกี่ยวข้อง เพื่อฝึกทักษะการสื่อสารให้มีประสิทธิภาพ
 
วัตถุประสงค์ในการพัฒนาปรับปรุงรายวิชา โครงงานทางวิศวกรรมซอฟต์แวร์ (Senior Project in Software Engineering) มุ่งเน้นเพื่อให้สอดคล้องกับการเปลี่ยนแปลงของอุตสาหกรรมและเทคโนโลยี โดยมีเป้าหมายหลักเพื่อยกระดับทักษะของนักศึกษาให้เป็นที่ต้องการของตลาดแรงงาน
1. เพื่อให้สอดคล้องกับเทคโนโลยีและกระบวนการทำงานที่ทันสมัย
1.1 ปรับปรุงเครื่องมือและเทคโนโลยี: อัปเดตเครื่องมือและเทคโนโลยีที่ใช้ในการพัฒนาซอฟต์แวร์ให้ทันสมัย เช่น การใช้ระบบควบคุมเวอร์ชัน (Version Control) อย่าง Git, การใช้เฟรมเวิร์กยอดนิยม และการใช้ระบบคลาวด์ (Cloud Computing) ในการพัฒนาและเผยแพร่ซอฟต์แวร์
1.2 นำแนวทางการพัฒนาแบบ Agile มาใช้: ส่งเสริมการใช้กระบวนการพัฒนาซอฟต์แวร์แบบ Agile หรือ Scrum เพื่อให้นักศึกษาได้เรียนรู้การทำงานที่ยืดหยุ่น สามารถปรับเปลี่ยนแผนงานได้ตามสถานการณ์ และส่งมอบงานเป็นช่วงๆ (Incremental Delivery)
 
2. เพื่อเสริมสร้างทักษะที่จำเป็นในการทำงานจริง
2.1 เน้นการแก้ปัญหาที่ซับซ้อน: ให้โจทย์โครงงานที่มีความซับซ้อนและใกล้เคียงกับปัญหาในโลกธุรกิจจริง เพื่อฝึกฝนให้นักศึกษาคิดวิเคราะห์และแก้ปัญหาอย่างเป็นระบบ
2.2 ส่งเสริมทักษะการทำงานเป็นทีม: ปรับปรุงวิธีการประเมินผลให้ครอบคลุมการทำงานร่วมกันในทีม การสื่อสาร และการจัดการข้อขัดแย้ง
2.3 พัฒนาทักษะด้าน DevOps: เพิ่มเนื้อหาเกี่ยวกับการนำกระบวนการ DevOps เข้ามาใช้ในการพัฒนา เช่น การทำ Continuous Integration/Continuous Deployment (CI/CD) เพื่อให้นักศึกษาสามารถจัดการวงจรการพัฒนาซอฟต์แวร์ได้อย่างอัตโนมัติ
 
3. เพื่อส่งเสริมความสามารถในการสร้างสรรค์และนวัตกรรม
3.1 กระตุ้นการสร้างสรรค์นวัตกรรม: สนับสนุนให้นักศึกษาเลือกหัวข้อโครงงานที่มีความแปลกใหม่ หรือสามารถแก้ไขปัญหาทางสังคมหรือธุรกิจได้อย่างเป็นรูปธรรม
3.2 ส่งเสริมการทำวิจัยและพัฒนา: เพิ่มส่วนของการทำวิจัยเบื้องต้น (Research and Development) เพื่อให้นักศึกษาได้สำรวจเทคโนโลยีใหม่ๆ หรือแนวคิดทางวิชาการที่น่าสนใจเพื่อนำมาประยุกต์ใช้ในโครงงาน
 
ฝึกปฏิบัติกระบวนการซอฟต์แวร์ ศึกษาวิเคราะห์ความต้องการ ออกแบบ พัฒนาระบบซอฟต์แวร์  จัดทำปริญญานิพนธ์
Practice software process, requirement analysis and system design, software implementation and deployment, undergraduate thesis.
 
1. ให้คำปรึกษาผ่านระบบโซเชียลเนตเวิร์ค เช่น ไลน์ หรือเฟสบุค ทั้งการคุยโต้ตอบทันทีและการฝากข้อความทิ้งไว้ใน E-mail และมีการตอบภายหลัง โดยนักศึกษาสามารถขอคำปรึกษาผ่านทางระบบนี้ได้ตลอด 24 ชั่วโมง (นอกเวลาราชการฝากข้อความ) หรือใช้ช่องทางโทรศัพท์ปรึกษาระยะสั้น ใน 8 ชั่วโมงของทุกวันและเวลาราชการ
2. อาจารย์จัดเวลาให้คำปรึกษาเป็นรายบุคคล หรือรายกลุ่มตามความต้องการ 1 ชั่วโมงต่อสัปดาห์ (เฉพาะรายที่ต้องการ)
 
1 ความซื่อสัตย์สุจริต (Integrity)
2 ความรับผิดชอบ (Responsibility)
3 การทำงานเป็นทีมและเคารพผู้อื่น (Teamwork and Respect):
4 จรรยาบรรณวิชาชีพ (Professional Ethics)
 
1 การสอนแบบเน้นโครงการเป็นหลัก (Project-Based Learning - PBL): ให้นักศึกษาทำงานเป็นทีมเพื่อพัฒนาซอฟต์แวร์ตั้งแต่ต้นจนจบ โดยมีอาจารย์เป็นผู้ให้คำแนะนำและตรวจสอบความคืบหน้าเป็นระยะ
2 การสอนแบบมีที่ปรึกษา (Mentorship): จัดอาจารย์ที่ปรึกษาประจำแต่ละกลุ่ม เพื่อให้คำแนะนำทางวิชาการและช่วยแก้ไขปัญหาที่เกิดขึ้นในระหว่างการทำโครงการ
3 การนำเสนอและวิพากษ์งาน (Presentation and Peer Review): ให้นักศึกษานำเสนอความคืบหน้าของโครงการทุกสัปดาห์หรือทุกๆ สองสัปดาห์ เพื่อให้เพื่อนร่วมชั้นและอาจารย์ได้แสดงความคิดเห็นและให้
 
1 การประเมินผลจากรายงานและเอกสาร (Documentation and Report)
2 การประเมินผลจากชิ้นงานจริง (Final Product/Artifact):
3 การประเมินผลจากการนำเสนอและการตอบคำถาม (Presentation and Defense):
4 การประเมินผลจากพฤติกรรมการทำงาน (Team and Individual Contribution)
 
1 กระบวนการพัฒนาซอฟต์แวร์ (Software Development Process): เข้าใจขั้นตอนทั้งหมดของวงจรชีวิตการพัฒนาซอฟต์แวร์ (SDLC) ไม่ว่าจะเป็นแบบดั้งเดิม (Waterfall) หรือแบบที่ทันสมัย (Agile, Scrum) และสามารถนำไปประยุกต์ใช้ในโครงการจริงได้
2 การวิเคราะห์และออกแบบ (Analysis & Design): สามารถรวบรวมและวิเคราะห์ความต้องการของผู้ใช้งานได้อย่างเป็นระบบ พร้อมทั้งออกแบบสถาปัตยกรรมซอฟต์แวร์ (Software Architecture) และส่วนติดต่อผู้ใช้งาน (UI/UX)
3 การจัดการโครงการ (Project Management): วางแผนโครงการ, จัดการทรัพยากร, ประมาณการเวลาและงบประมาณ, และบริหารความเสี่ยงที่อาจเกิดขึ้นได้
4 เทคโนโลยีและเครื่องมือ (Technologies & Tools): สามารถเลือกใช้ภาษาโปรแกรม, เฟรมเวิร์ก, และเครื่องมือต่างๆ ที่เหมาะสมกับโครงการ เช่น ระบบควบคุมเวอร์ชันอย่าง Git หรือแพลตฟอร์มคลาวด์
5 การทดสอบและการประกันคุณภาพ (Testing & QA): วางแผนและดำเนินการทดสอบซอฟต์แวร์อย่างเป็นระบบ เพื่อให้มั่นใจว่าซอฟต์แวร์มีคุณภาพและทำงานได้อย่างถูกต้อง
6 การจัดทำเอกสารและนำเสนอ (Documentation & Presentation): สามารถเขียนรายงานทางวิชาการและเอกสารประกอบโครงการได้อย่างถูกต้อง พร้อมทั้งนำเสนอผลงานได้อย่างมืออาชีพ
 
1 การสอนแบบโครงงานเป็นหลัก (Project-Based Learning): ให้นักศึกษาทำงานเป็นทีมเพื่อพัฒนาซอฟต์แวร์ตามหัวข้อที่เลือกตั้งแต่เริ่มต้นจนจบ โดยมีอาจารย์เป็นผู้ให้คำปรึกษาตลอดภาคการศึกษา
2 การสอนแบบมีที่ปรึกษา (Mentorship): จัดให้อาจารย์ที่ปรึกษาประจำแต่ละกลุ่มเพื่อติดตามความคืบหน้า ให้คำแนะนำ และช่วยแก้ไขปัญหาทางเทคนิคหรือปัญหาการจัดการโครงการ
3 การนำเสนอความคืบหน้า (Progress Presentation): จัดให้นักศึกษาแต่ละกลุ่มนำเสนอความคืบหน้าของโครงการเป็นระยะ เพื่อรับฟังข้อเสนอแนะจากเพื่อนร่วมชั้นเรียนและอาจารย์
4 การใช้เครื่องมือจริง (Practical Tool Usage): ส่งเสริมให้นักศึกษาใช้เครื่องมือที่ใช้ในอุตสาหกรรมจริง เช่น Git สำหรับการจัดการโค้ด, Trello หรือ Jira สำหรับการจัดการงาน, และ Slack สำหรับการสื่อสารในทีม
 
1 การทำงานกลุ่ม (Group Work): 60%
2 การทำงานรายบุคคล (Individual Work): 40%
 
1 ทักษะการวิเคราะห์ (Analytical Thinking): ความสามารถในการแยกแยะองค์ประกอบของปัญหาที่ซับซ้อนออกเป็นส่วนย่อยๆ เพื่อทำความเข้าใจความสัมพันธ์และสาเหตุที่แท้จริง
2 ทักษะการคิดเชิงระบบ (System Thinking): ความสามารถในการมองภาพรวมของระบบซอฟต์แวร์ทั้งหมด รวมถึงความสัมพันธ์ระหว่างส่วนประกอบต่างๆ เพื่อให้การออกแบบและพัฒนาเป็นไปอย่างสอดคล้องกัน
3 ทักษะการแก้ปัญหาเชิงสร้างสรรค์ (Creative Problem-Solving): ความสามารถในการหาแนวทางแก้ไขปัญหาที่ไม่ซ้ำใคร และสร้างสรรค์สิ่งใหม่ๆ ที่ตอบโจทย์ได้อย่างมีประสิทธิภาพ
4 ทักษะการประเมินและตัดสินใจ (Evaluation and Decision-Making): ความสามารถในการประเมินทางเลือกต่างๆ โดยใช้เกณฑ์ที่เหมาะสม (เช่น ประสิทธิภาพ, ความปลอดภัย, ความคุ้มค่า) และตัดสินใจเลือกทางเลือกที่ดีที่สุด
5 ทักษะการเรียนรู้ด้วยตนเอง (Self-Learning): ความสามารถในการค้นคว้าและเรียนรู้เทคโนโลยีใหม่ๆ หรือแนวคิดทางวิชาการที่เกี่ยวข้องกับโครงการได้ด้วยตนเอง

 
1 การสอนแบบมีที่ปรึกษา (Mentorship-Based Learning): อาจารย์ที่ปรึกษาจะตั้งคำถามเชิงลึก (เช่น "ทำไมถึงเลือกใช้เทคโนโลยีนี้?", "มีวิธีแก้ไขปัญหานี้ที่ดีกว่านี้ไหม?") เพื่อกระตุ้นให้นักศึกษาคิดวิเคราะห์ด้วยตนเอง แทนที่จะบอกวิธีแก้ปัญหาโดยตรง
2 กรณีศึกษา (Case Study): นำเสนอกรณีศึกษาปัญหาที่เกิดขึ้นจริงในการพัฒนาซอฟต์แวร์ เพื่อให้นักศึกษาได้ฝึกวิเคราะห์สาเหตุและหาแนวทางการแก้ไข
3 การวิพากษ์งาน (Peer Review and Critique): จัดให้มีการนำเสนอความคืบหน้าของโครงการอย่างสม่ำเสมอ และให้เพื่อนร่วมชั้นเรียนช่วยกันวิพากษ์และให้ข้อเสนอแนะ เพื่อเปิดรับมุมมองที่หลากหลายและฝึกการประเมินผลงาน
4 การใช้เครื่องมือวางแผน (Planning Tools): ส่งเสริมให้นักศึกษาใช้เครื่องมือในการวางแผน เช่น Mind Map หรือ Diagram ต่างๆ (เช่น Use Case Diagram, Class Diagram) เพื่อช่วยจัดระเบียบความคิดและมองเห็นภาพรวมของโครงการ
 
1 การประเมินจากเอกสาร (Documentation Evaluation): ประเมินคุณภาพของเอกสารที่นักศึกษาจัดทำขึ้น เช่น Software Requirements Specification (SRS) และ Software Design Document (SDD) โดยพิจารณาจากความลึกของการวิเคราะห์ปัญหาและความสมเหตุสมผลของการออกแบบ
2 การประเมินจากการนำเสนอและการตอบคำถาม (Presentation and Defense Evaluation): ประเมินจากความสามารถในการนำเสนอแนวคิด การอธิบายวิธีการแก้ไขปัญหา และการตอบคำถามของคณะกรรมการได้อย่างมีหลักการและเหตุผล
3 การประเมินจากชิ้นงาน (Artifact Evaluation): พิจารณาจากคุณภาพของโค้ด (เช่น ความสะอาดของโค้ด), สถาปัตยกรรมของซอฟต์แวร์, และการเลือกใช้เทคโนโลยีที่เหมาะสม ซึ่งสะท้อนถึงทักษะการตัดสินใจและการคิดเชิงระบบ
4 การประเมินตนเองและเพื่อนร่วมทีม (Self and Peer Assessment): ให้นักศึกษาประเมินทักษะของตนเองและเพื่อนร่วมทีม โดยเฉพาะด้านการแก้ปัญหาและการมีส่วนร่วมในกระบวนการตัดสินใจ เพื่อให้เห็นภาพรวมของการทำงานอย่างยุติธรรม
 
1 ทักษะการทำงานเป็นทีม (Teamwork): สามารถทำงานร่วมกับผู้อื่นที่มีความรู้ความสามารถแตกต่างกันได้ เพื่อให้บรรลุเป้าหมายร่วมกันของโครงการ
2 ความรับผิดชอบ (Responsibility): มีความรับผิดชอบต่องานที่ได้รับมอบหมาย รวมถึงความรับผิดชอบต่อผลลัพธ์ของโครงการทั้งหมด
3 ภาวะผู้นำ (Leadership): สามารถเป็นผู้นำและผู้ตามที่ดีได้ สามารถกระตุ้นและสนับสนุนเพื่อนร่วมทีมให้ทำงานอย่างเต็มศักยภาพ
4 ทักษะการสื่อสาร (Communication): สามารถสื่อสารแนวคิดและปัญหาต่างๆ ได้อย่างชัดเจน ทั้งการสื่อสารในทีมและกับการนำเสนอต่ออาจารย์ที่ปรึกษาหรือคณะกรรมการ
5 การจัดการความขัดแย้ง (Conflict Management): สามารถจัดการกับความขัดแย้งที่อาจเกิดขึ้นในทีมได้อย่างสร้างสรรค์และเป็นกลาง เพื่อให้ทีมเดินหน้าต่อไปได้
 
1 การแบ่งกลุ่มทำงาน (Group Work): จัดให้นักศึกษาทำงานเป็นทีมตั้งแต่ 3-5 คน เพื่อฝึกฝนการแบ่งงาน การทำงานร่วมกัน และการตัดสินใจร่วมกัน
2 การมอบหมายบทบาท (Role Assignment): ในแต่ละทีม ควรมีการกำหนดบทบาทที่ชัดเจน เช่น หัวหน้าทีม (Team Leader), ผู้จัดการโครงการ (Project Manager), นักวิเคราะห์ระบบ (System Analyst), หรือโปรแกรมเมอร์ (Developer) เพื่อให้นักศึกษาได้เรียนรู้หน้าที่ความรับผิดชอบของแต่ละตำแหน่ง
3 การประชุมสม่ำเสมอ (Regular Meetings): ส่งเสริมให้ทีมมีการประชุมกันเป็นประจำ (เช่น การประชุมสั้นๆ แบบ Scrum) เพื่อรายงานความคืบหน้าและปัญหาที่พบ ซึ่งช่วยฝึกทักษะการสื่อสารและการแก้ไขปัญหาร่วมกัน
4 การใช้เครื่องมือบริหารจัดการ (Management Tools): ให้นักศึกษาใช้เครื่องมือบริหารจัดการโครงการ เช่น Trello, Jira หรือ Asana เพื่อฝึกการติดตามงาน การมอบหมายงาน และการเห็นภาพรวมของความรับผิดชอบแต่ละคน
 
1 การประเมินตนเองและเพื่อนร่วมทีม (Self and Peer Assessment): ให้นักศึกษาทุกคนประเมินผลงานและพฤติกรรมของตนเอง รวมถึงของเพื่อนร่วมทีมด้วย เพื่อให้ได้ภาพรวมของการทำงานและความรับผิดชอบของแต่ละคนอย่างยุติธรรม
2 การประเมินจากอาจารย์ที่ปรึกษา (Advisor's Assessment): อาจารย์ที่ปรึกษาจะสังเกตพฤติกรรมการทำงานของทีมในระหว่างการประชุมและให้คำแนะนำ โดยคะแนนส่วนนี้จะมาจากการมีส่วนร่วม, การสื่อสาร, และการแก้ไขปัญหาในทีม
3 การประเมินจากผลงานรวม (Group Project Outcome): คะแนนส่วนนี้จะมาจากการนำเสนอและการตอบคำถามของทีมทั้งหมด ซึ่งสะท้อนให้เห็นถึงความสามารถในการทำงานร่วมกันเพื่อสร้างผลงานที่มีคุณภาพ
4 การประเมินจากรายงานส่วนบุคคล (Individual Report): อาจให้นักศึกษาแต่ละคนเขียนรายงานสรุปบทบาทและสิ่งที่ได้เรียนรู้จากการทำงานในทีม เพื่อประเมินความเข้าใจและความรับผิดชอบของแต่ละบุคคล
 
1 การประมาณการ: สามารถประมาณการเวลา, ทรัพยากร, และงบประมาณของโครงการได้อย่างสมเหตุสมผล
2 การวิเคราะห์ข้อมูล: สามารถเก็บและวิเคราะห์ข้อมูลจากระบบที่พัฒนาเพื่อประเมินประสิทธิภาพหรือพฤติกรรมของผู้ใช้งานได้
3 การคำนวณความซับซ้อน: สามารถประเมินความซับซ้อนของอัลกอริทึม (Algorithmic Complexity) ที่ใช้ในโปรแกรมได้
4 การเขียน: สามารถจัดทำเอกสารทางเทคนิค, รายงาน, และคู่มือการใช้งานได้อย่างชัดเจนและเป็นระบบ
5 การพูด: สามารถนำเสนอแนวคิด, ความคืบหน้า, และผลลัพธ์ของโครงการต่อผู้อื่นได้อย่างน่าสนใจและเข้าใจง่าย
6 การรับฟัง: สามารถรับฟังข้อเสนอแนะและข้อวิจารณ์จากทีมและผู้ที่เกี่ยวข้องเพื่อนำมาปรับปรุงงานได้
7 การใช้เครื่องมือพัฒนา: สามารถใช้เครื่องมือที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์ได้อย่างคล่องแคล่ว เช่น Integrated Development Environment (IDE), ระบบควบคุมเวอร์ชัน (Version Control) อย่าง Git, และแพลตฟอร์มบริหารจัดการโครงการ (Project Management Tools)
8 การใช้เทคโนโลยีคลาวด์: สามารถใช้งานบริการคลาวด์ (Cloud Services) ในการพัฒนา, ทดสอบ, และเผยแพร่แอปพลิเคชันได้
9 การค้นคว้า: สามารถใช้แหล่งข้อมูลออนไลน์และฐานข้อมูลทางวิชาการเพื่อค้นคว้าและเรียนรู้เทคโนโลยีใหม่ๆ ได้
 
1 การฝึกประมาณการโครงการ: มอบหมายให้นักศึกษาแต่ละทีมวางแผนและประมาณการโครงการของตนเอง โดยมีคำแนะนำในการใช้เทคนิคต่างๆ เช่น Planning Poker หรือ Three-Point Estimation เพื่อให้ได้ตัวเลขที่สมเหตุสมผล
2 การนำเสนอเป็นระยะ: จัดให้มีการนำเสนอความคืบหน้าของโครงการอย่างสม่ำเสมอในรูปแบบต่างๆ เช่น การนำเสนอต่อหน้าชั้นเรียน, การสาธิต (Demo), หรือการเขียนบล็อกสรุปความคืบหน้าของทีม
3 การใช้เครื่องมือมาตรฐานอุตสาหกรรม: ส่งเสริมให้นักศึกษาใช้เครื่องมือที่ใช้กันทั่วไปในวงการซอฟต์แวร์ เช่น Jira หรือ Trello สำหรับการจัดการงาน และ GitHub สำหรับการจัดการโค้ด ซึ่งเป็นทักษะที่จำเป็นในการทำงานจริง
4 การจัดทำเอกสารและรายงาน: ให้นักศึกษาจัดทำเอกสารประกอบโครงการตามรูปแบบมาตรฐาน เช่น เอกสารข้อกำหนดความต้องการซอฟต์แวร์ (SRS) และรายงานฉบับสมบูรณ์ เพื่อฝึกทักษะการเขียนและการจัดระเบียบข้อมูล
 
1 การประเมินเชิงปริมาณ: ประเมินความถูกต้องของการประมาณการเวลาและทรัพยากรที่ใช้ไปจริงกับแผนที่วางไว้
2 การประเมินเอกสารและรายงาน: ประเมินจากความชัดเจน, ความถูกต้อง, และความเป็นระบบของเอกสารที่จัดทำขึ้น เช่น การเขียนรายงานฉบับสมบูรณ์และคู่มือการใช้งาน
3 การประเมินการนำเสนอ: ประเมินความสามารถในการสื่อสารและสาธิตผลงานต่อคณะกรรมการ โดยพิจารณาจากความเข้าใจในเนื้อหา, ความมั่นใจในการพูด, และความสามารถในการตอบคำถาม
4 การประเมินการใช้เครื่องมือ: ประเมินจากการใช้เครื่องมือพัฒนาซอฟต์แวร์ต่างๆ ได้อย่างมีประสิทธิภาพในระหว่างการทำโครงการ เช่น การใช้ Git เพื่อจัดการโค้ดร่วมกันในทีม หรือการใช้ระบบคลาวด์ในการเผยแพร่แอปพลิเคชัน .
 
1 การสร้างและบำรุงรักษาระบบซอฟต์แวร์: สามารถพัฒนาและเขียนโค้ดซอฟต์แวร์ได้ตามหลักการวิศวกรรมซอฟต์แวร์ รวมถึงการบำรุงรักษาและอัปเดตระบบในอนาคต
2 การใช้เครื่องมือพัฒนาซอฟต์แวร์: สามารถใช้เครื่องมือที่เกี่ยวข้องได้อย่างคล่องแคล่ว เช่น Integrated Development Environment (IDE), ระบบควบคุมเวอร์ชัน (Version Control) อย่าง Git และเครื่องมือสำหรับการทดสอบอัตโนมัติ (Automated Testing Tools)
3 การบริหารจัดการโครงการด้วยเครื่องมือ: สามารถใช้เครื่องมือบริหารจัดการโครงการ (Project Management Tools) เช่น Jira หรือ Trello เพื่อวางแผน ติดตามความคืบหน้า และมอบหมายงานในทีมได้อย่างมีประสิทธิภาพ
4 การติดตั้งและตั้งค่าระบบ: สามารถติดตั้ง (Deploy) และตั้งค่า (Configure) ระบบซอฟต์แวร์บนเซิร์ฟเวอร์หรือแพลตฟอร์มคลาวด์ได้จริง
 
1 การสอนแบบลงมือปฏิบัติ (Hands-on Practice): ให้นักศึกษาลงมือเขียนโค้ดและพัฒนาซอฟต์แวร์ด้วยตนเองตั้งแต่ต้นจนจบ โดยมีการกำหนดเป้าหมายที่ชัดเจนในแต่ละสัปดาห์
2 การใช้เครื่องมือจริงในอุตสาหกรรม: อาจารย์ผู้สอนควรแนะนำและส่งเสริมให้นักศึกษาใช้เครื่องมือที่ทันสมัยและเป็นมาตรฐานในอุตสาหกรรมซอฟต์แวร์ เพื่อให้นักศึกษาคุ้นเคยกับการทำงานจริง
3 การให้คำปรึกษาเชิงปฏิบัติ: อาจารย์ที่ปรึกษาควรให้คำแนะนำในเชิงปฏิบัติ เช่น การตรวจสอบโค้ด (Code Review) และการแนะนำแนวทางการแก้ไขปัญหาทางเทคนิค
4 การทำ Demo เป็นระยะ: จัดให้มีการนำเสนอการสาธิต (Demonstration) การทำงานของระบบที่พัฒนาขึ้นในแต่ละช่วง เพื่อให้นักศึกษาได้ฝึกฝนทักษะการใช้งานและนำเสนอผลงานจริง
 
1 การประเมินจากโค้ด (Code Evaluation): ประเมินจากคุณภาพของโค้ดที่เขียนขึ้น เช่น ความถูกต้อง (Correctness), ความสะอาด (Cleanliness) และการปฏิบัติตามมาตรฐานการเขียนโค้ด
2 การประเมินจากชิ้นงาน (Final Product): ประเมินจากความสมบูรณ์และประสิทธิภาพของซอฟต์แวร์ที่พัฒนาขึ้น โดยพิจารณาจากฟังก์ชันการทำงานที่ครบถ้วน
3 การประเมินจากการสาธิต (Demonstration): ประเมินจากความสามารถในการใช้งานและนำเสนอระบบได้อย่างคล่องแคล่วต่อหน้าคณะกรรมการ
4 การประเมินการใช้เครื่องมือ: ประเมินจากการใช้เครื่องมือต่างๆ เช่น Git ในการจัดการโค้ด หรือ Jira ในการจัดการงานอย่างเป็นระบบ ซึ่งสะท้อนให้เห็นถึงทักษะการปฏิบัติงานจริง
 
กิจกรรมที่ ผลการเรียนรู้ * วิธีการประเมินผลนักศึกษา สัปดาห์ที่ประเมิน สัดส่วนของการประเมินผล
ไม่มีข้อมูล
หมวดที่ 1: การจัดการโครงการ (Project Management)
หนังสือในหมวดนี้จะช่วยให้เข้าใจหลักการบริหารจัดการโครงการซอฟต์แวร์ ตั้งแต่การวางแผนไปจนถึงการส่งมอบงาน

Software Engineering: A Practitioner's Approach
ผู้เขียน: Roger S. Pressman และ Bruce R. Maxim ทำไมถึงแนะนำ: เป็นตำราคลาสสิกที่ครอบคลุมเนื้อหาทั้งหมดของวิศวกรรมซอฟต์แวร์ ตั้งแต่ขั้นตอนการเก็บความต้องการ การออกแบบ การทดสอบ ไปจนถึงการจัดการโครงการ มีตัวอย่างและกรณีศึกษาที่ช่วยให้เห็นภาพการทำงานจริงได้ชัดเจน The Mythical Man-Month: Essays on Software Engineering
ผู้เขียน: Frederick P. Brooks Jr. ทำไมถึงแนะนำ: เป็นหนังสือที่นักพัฒนาซอฟต์แวร์ทุกคนควรอ่าน แม้จะตีพิมพ์มานานแล้ว แต่หลักการและบทเรียนต่าง ๆ ยังคงใช้ได้ดีจนถึงปัจจุบัน โดยเฉพาะเรื่องการจัดการทีมและปัญหาต่าง ๆ ที่อาจเกิดขึ้นในโครงการขนาดใหญ่


 
หมวดที่ 2: การวิเคราะห์และออกแบบ (Analysis & Design)
หนังสือหมวดนี้จะเน้นไปที่การสร้างแบบจำลองและการออกแบบระบบอย่างเป็นขั้นตอน เพื่อให้ได้ซอฟต์แวร์ที่แข็งแรงและมีคุณภาพ

UML Distilled: A Brief Guide to the Standard Object Modeling Language
ผู้เขียน: Martin Fowler ทำไมถึงแนะนำ: เป็นคู่มือฉบับย่อที่เข้าใจง่ายสำหรับภาษา UML (Unified Modeling Language) ซึ่งเป็นเครื่องมือสำคัญในการออกแบบและสื่อสารแนวคิดของระบบซอฟต์แวร์ ช่วยให้สามารถวาดแผนภาพต่าง ๆ ได้อย่างถูกต้องและรวดเร็ว Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process
ผู้เขียน: Craig Larman ทำไมถึงแนะนำ: เป็นหนังสือที่สอนการนำ UML และ Design Patterns มาประยุกต์ใช้ในการวิเคราะห์และออกแบบระบบอย่างเป็นระบบ มีการยกตัวอย่างที่ชัดเจนตั้งแต่การเก็บความต้องการไปจนถึงการเขียนโค้ด


 
หมวดที่ 3: การเขียนโปรแกรมและกระบวนการพัฒนา (Implementation & Process)
หมวดนี้จะช่วยเสริมความรู้ด้านการเขียนโค้ดที่มีคุณภาพและการทำงานในทีม

Clean Code: A Handbook of Agile Software Craftsmanship
ผู้เขียน: Robert C. Martin (Uncle Bob) ทำไมถึงแนะนำ: หนังสือเล่มนี้เน้นการเขียนโค้ดที่อ่านง่าย เข้าใจง่าย และบำรุงรักษาได้ในระยะยาว ซึ่งเป็นทักษะสำคัญที่นักศึกษาต้องมีเพื่อทำงานในทีมให้มีประสิทธิภาพ Head First Design Patterns: A Brain-Friendly Guide
ผู้เขียน: Eric Freeman, Elisabeth Robson, Bert Bates, และ Kathy Sierra ทำไมถึงแนะนำ: เป็นหนังสือที่อธิบายแนวคิดเรื่อง Design Patterns ได้อย่างสนุกสนานและเข้าใจง่าย ช่วยให้นักศึกษาสามารถนำรูปแบบการแก้ปัญหาที่ใช้กันทั่วไปมาปรับใช้ในโครงการของตนเองได้


 
หมวดที่ 4: เอกสารประกอบการสอนและสื่อออนไลน์
นอกจากหนังสือแล้ว การใช้เอกสารประกอบการสอนและสื่อออนไลน์ก็เป็นสิ่งสำคัญที่ช่วยเสริมความรู้ได้

เอกสารประกอบการสอนของอาจารย์
อาจารย์ผู้สอนอาจจัดทำเอกสารที่สรุปเนื้อหาสำคัญและปรับให้เข้ากับบริบทของโครงการในชั้นเรียนได้โดยตรง แพลตฟอร์มออนไลน์ เช่น Coursera, edX, หรือ Udemy
หลักสูตรออนไลน์ เช่น Software Engineering for Software as a Service (SaaS) จาก Coursera หรือหลักสูตรเกี่ยวกับ Agile Development สามารถเป็นแหล่งข้อมูลเพิ่มเติมที่นักศึกษาใช้เรียนรู้ด้วยตนเองได้ เว็บไซต์สำหรับนักพัฒนา
เว็บไซต์อย่าง Stack Overflow, GitHub หรือบล็อกของบริษัทซอฟต์แวร์ชั้นนำต่าง ๆ เป็นแหล่งข้อมูลที่สำคัญสำหรับการแก้ไขปัญหาทางเทคนิคและเรียนรู้แนวทางปฏิบัติที่ดีที่สุด

 
1 แบบประเมินรายวิชาออนไลน์: ให้นักศึกษาทำแบบประเมินเมื่อสิ้นสุดภาคการศึกษา โดยใช้แพลตฟอร์มออนไลน์ของมหาวิทยาลัย เพื่อเก็บข้อมูลเกี่ยวกับเนื้อหา, ความเหมาะสมของอาจารย์ผู้สอน, และประโยชน์ที่ได้รับจากรายวิชา
2 การสนทนากลุ่ม (Focus Group Discussion): จัดการพูดคุยกับนักศึกษาบางส่วนหลังจากสิ้นสุดโครงการ เพื่อรับฟังความคิดเห็นเชิงลึกเกี่ยวกับปัญหาที่พบ, ความท้าทาย, และข้อเสนอแนะในการปรับปรุง
3 การสัมภาษณ์ระหว่างภาคเรียน: อาจารย์ที่ปรึกษาอาจสัมภาษณ์นักศึกษาเป็นรายกลุ่มเป็นระยะ เพื่อสอบถามความคืบหน้าและปัญหาที่พบในระหว่างการทำโครงการ
 
1 แบบประเมินการสอนจากนักศึกษา: ใช้แบบประเมินมาตรฐานที่ทางมหาวิทยาลัยกำหนด ซึ่งครอบคลุมประเด็นต่างๆ เช่น ความชัดเจนในการสื่อสาร, การให้คำปรึกษา, และการจัดการชั้นเรียน
2 การประเมินจากผู้เชี่ยวชาญภายนอก: เชิญผู้เชี่ยวชาญจากภาคอุตสาหกรรมหรืออาจารย์ท่านอื่นมาร่วมสังเกตการณ์การนำเสนอโครงงานของนักศึกษา เพื่อให้ข้อเสนอแนะเกี่ยวกับเนื้อหาและวิธีการประเมินผล
3 การบันทึกการสอน (Self-Reflection): อาจารย์อาจบันทึกการสอนหรือการให้คำปรึกษาของตนเอง เพื่อนำมาทบทวนและประเมินผลด้วยตนเอง
 
1 ปรับปรุงเนื้อหาให้ทันสมัย: นำข้อมูลจากแบบประเมินมาปรับปรุงเนื้อหาในส่วนที่ล้าสมัยหรือที่นักศึกษาเสนอแนะว่าควรเพิ่ม เช่น การเพิ่มเนื้อหาเกี่ยวกับเทคโนโลยีคลาวด์ หรือกระบวนการ DevOps
2 ปรับเปลี่ยนวิธีการให้คำปรึกษา: หากนักศึกษาส่วนใหญ่ให้ข้อเสนอแนะว่าต้องการคำแนะนำที่เจาะจงมากขึ้น อาจารย์ที่ปรึกษาอาจเพิ่มช่วงเวลาในการให้คำปรึกษาแบบตัวต่อตัวหรือแบบกลุ่มเล็ก
3 เพิ่มเครื่องมือและสื่อการสอน: พิจารณาการใช้เครื่องมือใหม่ๆ หรือสื่อการสอนเพิ่มเติมที่ช่วยให้นักศึกษาเข้าใจได้ง่ายขึ้น เช่น การใช้แพลตฟอร์มสำหรับจัดการโค้ดอย่าง GitHub หรือแพลตฟอร์มการเรียนรู้ออนไลน์
 
1 การตรวจสอบจากคณะกรรมการ: ในการนำเสนอโครงงานสุดท้าย (Final Defense) ควรมีคณะกรรมการมากกว่า 1 ท่าน (อาจารย์ประจำวิชา, อาจารย์ที่ปรึกษา, หรือผู้เชี่ยวชาญภายนอก) เพื่อร่วมกันประเมินและให้คะแนนตามเกณฑ์ที่กำหนด
2 การเปรียบเทียบผลงาน: เปรียบเทียบผลงานของนักศึกษาในแต่ละกลุ่มกับมาตรฐานของปีที่ผ่านมา หรือกับผลงานในรายวิชาเดียวกันของสถาบันอื่น เพื่อตรวจสอบคุณภาพของผลงาน
3 การตรวจสอบเอกสารและรายงาน: สุ่มตรวจสอบเอกสารประกอบโครงการและรายงานฉบับสมบูรณ์ เพื่อให้มั่นใจว่านักศึกษาได้จัดทำตามมาตรฐานที่กำหนด
 
1 จัดทำรายงานสรุปผล: จัดทำรายงานสรุปผลการประเมินจากทุกส่วนที่กล่าวมาข้างต้น และนำเสนอต่อคณะกรรมการประจำภาควิชา เพื่อรับทราบและอนุมัติแผนการปรับปรุง
2 วางแผนการปรับปรุงระยะสั้นและระยะยาว: วางแผนการปรับปรุงรายวิชาในภาคการศึกษาถัดไป (ระยะสั้น) และวางแผนการพัฒนาหลักสูตรในระยะ 3-5 ปี (ระยะยาว)
3 แจ้งผลการปรับปรุงให้นักศึกษาทราบ: แจ้งผลการปรับปรุงรายวิชาให้นักศึกษารุ่นถัดไปทราบ เพื่อให้นักศึกษาเห็นถึงความสำคัญของข้อเสนอแนะที่ให้มา และเป็นส่วนหนึ่งในการพัฒนาหลักสูตร