This course offers an introduction to software engineering, spanning a broad array of topics and employing a problem-based learning approach. Central to the course is a practical group project, where students apply modern software development principles and tools. The course discusses the software development lifecycle, with an exploration of Agile methodologies and DevOps practices. Students will gain a foundation in software design principles, such as abstraction mechanisms and design patterns, and how they are realized in procedural, object-oriented and functional programming paradigms. A strong emphasis is placed on quality assurance, equipping students with robust techniques for software testing, debugging, and maintaining high code reliability. The course examines program analysis and verification through both static and dynamic analysis methods. Advanced topics, such as AI-driven development tools and automated program repair, expose students to contemporary software engineering research.
Date | Materials | Assignment |
---|---|---|
February 17, 2025 | Form groups of three by February 24 | |
February 20, 2025 | Development Lifecycle, Agile (tentative) | |
February 24, 2025 | Git (tentative), Q&A | |
February 27, 2025 | GitHub, Continuous Integration (tentative) | |
March 3, 2025 | Docker (tentative), Q&A | |
March 6, 2025 | Modelling (tentative) | |
March 10, 2025 | Design Principles (tentative), Q&A | |
March 13, 2025 | Abstraction Mechanisms (tentative) | |
March 17, 2025 | Design Patterns (tentative), Q&A | |
March 20, 2025 | Design Patterns Continued (tentative) | |
March 24, 2025 | Parsing (tentative), Q&A | |
March 27, 2025 | Functional Patterns (tentative) | |
March 31, 2025 | Testing (tentative), Q&A | |
April 3, 2025 | xUnit (tentative) | |
April 7, 2025 | Property-based Testing, Mutation Testing (tentative), Q&A | |
April 10, 2025 | Symbolic Execution (tentative) | |
April 14, 2025 | Fuzzing (tentative), Q&A | |
April 17, 2025 | Debugging (tentative) | |
April 21, 2025 | Error Handling (tentative), Q&A | |
April 24, 2025 | Code Smells, Anti-Patterns (tentative) | |
April 28, 2025 | Code Style, Documentation (tentative), Q&A | |
May 1, 2025 | - | |
May 5, 2025 | - | |
May 8, 2025 | LLM in Software Engineering (tentative) | |
May 12, 2025 | Invited Lecture (tentative), Q&A | |
May 15, 2025 | Automated Program Repair (tentative) | |
May 19, 2025 | LLM Agents (tentative), Q&A | |
May 22, 2025 | Static Program Analysis (tentative) | |
May 26, 2025 | Static Program Analysis Continued (tentative), Q&A | |
May 29, 2025 | Dynamic Program Analysis (tentative) | |
June 2, 2025 | Verification (tentative), Q&A | |
June 6, 2025 | Software Engineering Research (tentative) |