Formella språk, ändliga automater, kontextfria grammatiker.
Tillstånd, räckvidd, livstid, statisk och dynamisk information, effekter, muterbarhet.
Grundläggande operationell semantik.
Abstraktionsmekanismer, modularisering, kontrakt.
Typer, invarianter, programekvivalens.
Verktyg för programanalys.
Exempel på avancerade finesser i programspråk.
Efter fullgjord kurs ska studenten kunna:
- beskriva programspråk och programbeteende formellt,
- resonera om tillstånd, effekter och muterbarhet i program på ett precist sätt,
- resonera om och använda mekanismer för abstraktion och modularisering,
- definiera typsystem formellt,
- bevisa sundhet hos typsystem,
- resonera om ekvivalens mellan program,
- definiera och resonera om kontrakt,
- diskutera öppna frågor om avancerade finesser i programspråk och reflektera kritiskt över dem,
- skriva program som implementerar olika formalismer, mekanismer och språkfinesser
i syfte att
- kunna föra djupare diskussioner om programspråksprinciper
- vara förberedd för kurser i kompilatorteknik.