Go to:
Logótipo
You are here: Start > M.EIC044

Advanced Software Construction Techniques

Code: M.EIC044     Acronym: TACS

Keywords
Classification Keyword
OFICIAL Software Engineering

Instance: 2021/2022 - 1S

Active? Yes
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Master in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
M.EIC 24 Syllabus 2 - 6 39 162

Teaching language

English

Objectives

Students are expected to be able to identify and apply advanced techniques for specifying, synthesizing, and manipulating executable artifacts (code) at different stages of the software development lifecycle, in order to enhance certain quality attributes, such as reliability, flexibility, testability and performance. In particular, it is of interest to teach how to minimize the time spent in "programming", by automating the various facets of this activity.

Learning outcomes and competences


  • Identify problems that are adequate to be solved using metaprogramming and automatic programming techniques;

  • Design domain-specific models / meta-models

  • Process instances of textual specifications with parsing combinators, alongside with execution mechanisms;

  • Apply code/behavior generation/derivation techniques from high level specifications

  • Apply Machine Learning Techniques to code generation

  • Debug complex programs by incrementally specifying properties

  • Employ techniques for automatic program repair;

  • Other advanced development techniques.

Working method

À distância

Program


  • Metaprogramming and Model-Driven Engineering


    • Models, Metamodels and Meta-metamodels


      • Domain Specific Languages

      • Internal

      • External

      • Visual vs Text-Based

      • Parser Combinators


    • Interpreters and Self-Interpreters

    • Source-code generation and Transpilers

    • Reflection and Runtime Metaprogramming


  • Automatic Programming


    • High-Level Specifications

    • Program Synthesis and Program Derivation

    • Program Search Techniques

    • Formal Derivation

    • Mutation

    • ML-supported


  • Advanced Debugging Techniques


    • Property Based Testing and Fuzzing

    • Automatic Program Repair

    • Fault Localization


Mandatory literature

Volter, M. ; Model-Driven Software Development: Technology, Engineering, Management, Wiley Software Patterns Series, 2006
Fowler, M. ; Domain Specific Languages, Addison-Wesley Signature Series, 2010

Teaching methods and learning activities

Theoretical-practical classes of exposition and discussion of the program topics. Firstly, students will develop a guided project that will incrementally result in a metamodel-based system with a domain-specific executable language, initially with simple interpretation techniques and finally via code transpilation. They will subsequently develop an integrated project to apply the remaining set of exposed techniques.

Evaluation Type

Distributed evaluation without final exam

Assessment Components

Designation Weight (%)
Participação presencial 5,00
Teste 15,00
Trabalho prático ou de projeto 80,00
Total: 100,00

Amount of time allocated to each course unit

Designation Time (hours)
Elaboração de projeto 162,00
Frequência das aulas 39,00
Total: 201,00

Eligibility for exams

All components have a minimum rating of 40%. 

Calculation formula of final grade

N = 0.05 * P + 0.15 * T + 0.80 * P

Special assessment (TE, DA, ...)

Equal to normal evaluation, minus the participation component.

Classification improvement

Through specific improvements in the project, as long as it doesn't surpass 4 points (out of 20) the theoretical test.
Recommend this page Top
Copyright 1996-2025 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2025-06-16 at 06:13:25 | Acceptable Use Policy | Data Protection Policy | Complaint Portal