Software Engineering
The purpose of the software engineering theme is to equip students with solid knowledge of both the theory and practice of the conception, design, construction, evolution, and deployment of modern complex software systems. This includes principles guiding the design and evolution of software systems, as well as architectural styles and patterns to realize required quality attributes such as scalability, security, and sustainability. Furthermore, the theme investigates novel means to automate key aspects of the software development process, including the use of fuzzing for test suite generation, advanced program analysis techniques, and large language models as well as other machine learning techniques to boost software development quality and productivity.
Year 1 |
|||
Quarter 1 |
Quarter 2 |
Quarter 3 |
Quarter 4 |
Software Architecture | Core course | Responsible Computer Science | Research course |
Core course | Theme 1 | Theme 1 | Theme 1 |
Core course | Theme 2 | Theme 2 | Theme 2 |
Credits: each course in a theme is 5EC, so each theme is 15EC.
Students choose 2 themes, each of which has 3 courses in the 2nd, 3rd and 4th quarters of the 1st year. For this theme, you will take the following courses:
Q2 - Machine Learning for Software Engineering
The course will teach you to utilize advanced machine learning models such as CodeBERT and Code2Vec to handle complex input data, including code snippets and programs, with a focus on encoding, program representation, and performance evaluation. It aims to provide students with a deep understanding of a hands-on approach on how deep neural networks and NLP techniques are used to represent knowledge and solve existing Software Engineering problems in novel ways.
Q3 - Sustainable Software Engineering
Sustainable Software Engineering is an overarching discipline that addresses the long-term consequences of designing, building, and releasing a software project. By definition, sustainability covers five main perspectives: environmental, social, individual, economic, technical. This course focuses on the first, also known as Green Software Engineering. The course also covers fundamental aspects of social and individual sustainability of software projects. You will also learn how to measure other non-functional properties of trained models, including the response time, resource usage (e.g., memory) and energy footprint.
Q4 - Automated Software Testing and Reverse Engineering
Software is one of the most complex artifacts mankind has ever created, but complexity is the enemy of correctness. Modern software testing and validation tools use a multitude of techniques geared toward correct computer code, most of these are based on artificial intelligence. In this course, you will study these techniques in detail, specifically, you will gain an understanding of and implement execution monitoring and taint analysis, branch distance computation, hill-climbing and genetic algorithms, concrete and symbolic (concolic) execution, active state machine learning, and genetic programming.