Formal Methods for Software Engineering
A
AY24/25 S1
Utter garbage. Nothing much to comment about the teaching style, as I didn't come for them past the first lecture. But the content itself was awful. In a nutshell, the mod is about defining the behaviour of a system, rather than designing the system itself. We do this using 3 new languages:
Z language looks most like math, and it focusses on defining invariants, transitions, object types, domains, and schemas. This language is actually pretty good, and I wish we got more of this, but alas, there are 2 more.
The second language is Communicating Sequential Processes (CSP), which talks about states, events, and processes. It introduces us to Linear Temporal Logic (LTL), which are assertions about the system that must hold through, such as 'After event A happens, then condition B must hold indefinitely'.
The final language is RTS (can't even find it online), which is like CSP but now we include time, such as waits, timeouts, etc.
In terms of workload, it can be very fast, but to get all correct, you need a lot of time discussing with others. 3 homeworks on Canvas, for each of the languages. One finals. One project. Let's talk about them separately.
Finals was undoubtedly the best part among the three. MCQ in person on Canvas. 100% based on what's taught in the mod, and the question wording was pretty clear. It's quite a fair exam.
But all that falls flat for the rest of the mod. See, apparently, NUS created something called Process Analysis Toolkit (PAT), which is a software that supposedly checks whether your model is valid. But,
1: it only runs on Windows, so a Mac user such as myself found it excruciating to partition your Mac to run Ubuntu and eventually Windows. Absolutely pain to do this process. And some more it's needed to complete your assignment and project.
2: PAT may claim to be used widely in the industry. But who??? There's little support online for debugging PAT, only a single documentation site that's honestly not very good.
3: And for what?? Learn how to use PAT just for this mod? That ain't right.
4: It's absolutely easier to code up these systems than using PAT to model them.
Fk the project honestly.
Loading comments...