Home / Teaching / 04834580 Software Engineering (Honor Track)

March 2026–June 2026

Monday, class 10–11·Thursday, class 3–4·一教303

Teaching assistants: Yihan Dai, Dimitris Bouras

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, expose students to contemporary software engineering research.

March 2026
2
Mon
lecture
  • Course Overview
  • Introduction to Software Engineering
  • UNIX Shell
  • Assessment Tasks & Marking Criteria
  • Individual Report Template

Form groups of three and select presentation slots by March 10

5
Thu
lecture
  • Software Development Lifecycle
  • Agile Methods
9
Mon
lecture
  • Git
  • DevOps

Access coursework repository, discuss branching model and merge policy with your teammates.

12
Thu
lecture Q&A session
  • Docker

Optionally, setup GitHub actions.

16
Mon
lecture student presentations
  • Modeling

Experiment with Mermaid diagrams to model important parts of your project.

19
Thu
lecture Q&A session
  • Design Principles

Restructure your code according to studied design principles.

23
Mon
lecture student presentations
  • Abstraction Mechanisms

Identify relevant abstraction mechanisms in your language of choice to support design principles.

26
Thu
lecture Q&A session
  • Visitor Design Pattern

Apply Visitor design pattern to your project.

30
Mon
lecture student presentations
  • Creational & Structural Patterns

Apply appropriate creational and structural patterns to your code.

April 2026
2
Thu
lecture Q&A session
  • Behavioral Patterns

Apply appropriate behavioral patterns to your code.

6
Mon
lecture student presentations
  • Parsing
  • Example: Java + ANTRL
  • Example: Python + Lark
  • Example: Recursive Descent
  • Example: Parser Combinators

Implement a parser of your choice.

9
Thu
lecture Q&A session
  • Functional Programming Patterns

Optionally, apply functional programming patterns in your code.

13
Mon
lecture student presentations
  • Testing
  • xUnit

Write unit tests for your project.

16
Thu
lecture Q&A session
  • Property-Based Testing
  • Symbolic Execution

Optionally, apply property-based testing and symbolic execution to test your project.

20
Mon
lecture student presentations
  • Dynamic Analysis & Fuzzing

Optionally, apply fuzzing to your project.

23
Thu
lecture Q&A session
  • Debugging
  • Error Handling

Design robust error handling for your project.

27
Mon
lecture student presentations
  • Mutation Testing
  • Metamorphic Testing

Optionally, apply mutation and metamorphic testing to your project.

30
Thu
lecture Q&A session
  • Code Smells & Anti-Patterns

Analyze your code for the presence of smells and anti-patterns.

May 2026
4
Mon
No class
7
Thu
lecture Q&A session
  • Code Style & Documentation

Maintain coding style compliance and write system documentation where necessary.

11
Mon
lecture student presentations
  • UNIX Environment
14
Thu
lecture Q&A session
  • Software Security
18
Mon
lecture student presentations
  • LLMs for Code
21
Thu
lecture Q&A session
  • Coding Agents
25
Mon
lecture student presentations
  • Program Analysis
  • Abstract Interpretation
28
Thu
lecture Q&A session
  • Formal Verification
June 2026
1
Mon
lecture student presentations
  • Data Flow Analysis
4
Thu
lecture Q&A session
  • Program Analysis With Datalog
8
Mon
lecture student presentations
  • AI for Code Research Overview
11
Thu
lecture Q&A session
  • Software Engineering Research Overview