MFP

Logo

Formal Methods in Software Engineering
Information Systems by Calculation
Cyber-Physical Programming
Formal Verification
Formal Methods Project
Past editions
Calendar
Alumni

Formal Programming Methods

Master in Informatics Engineering

Welcome to the 2026/27 edition of the Formal Programming Methods (MFP) specialization profile, which expands on the subjects covered on the Formal Methods in Software Engineering (MFES) course from the common trunk.

The slides presenting the 2026/27 edition can be found here.

This specialization profile of the MEI is taught by faculty members of the Logic and Formal Methods Group, a group with a long tradition in research and teaching of formal methods applied to software development. The members of this group are also part of the HASLab (High-Assurance Software Laboratory) research center at the University of Minho and INESC TEC.

The teaching of Formal Methods at the University of Minho has a long history of more than 40 years (since 1984).

Courses

The courses that currently make up the MFP profile are the following:

1ºS MFES CSI
2ºS VF PCF P-MFP

Together, these courses teach the main skills required for the design of reliable applications at an industrial scale. In their theoretical component, the vision is to address software problems from a genuine engineering perspective, which allows - through models on which it is possible to reason and calculate - to predict the behavior of programs before they are executed. Once this models are formalized, MFP teaches how to perform their verification, an essential ingredient for software quality.

The MFP profile was created in 2007/08, following the guidelines of the Bologna Process. It was then called MFES. Its entire history can be consulted in the previous years.

ACM Classification

The 20 ECTSs of this profile and of the MFES course are distributed across the following knowledge areas, according to the IEEE/ACM Curriculum Guidelines for Software Engineering:

Events

Members of the Logic and Formal Methods Group have been actively involved in the organization of several international events on formal methods, including:

FM'19

Quotes

In my career in software, I’ve seen many good languages, tools and methods adopted. But none had the impact we’d hoped for. I came to realize that there’s one thing that makes for great software: conceptual clarity in the design.

Daniel Jackson about his new book The Essence of Software

In late 1967 the Study Group recommended the holding of a working conference on Software Engineering. The phrase “software engineering” was deliberately chosen as being provocative, in implying the need for software manufacture to be based on the types of theoretical foundations and practical disciplines, that are traditional in the established branches of engineering.

Garmisch NATO conference report, 1968

There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.

Tony Hoare

It is easier to write an incorrect program than understand a correct one.

Alan Perlis

Program testing can be used to show the presence of bugs, but never to show their absence!

Edsger Dijkstra

Simplicity does not precede complexity, but follows it.

Alan Perlis

Humor

Cartoon

Software Development: A Rigorous Approach by C.B. Jones