Overordnede kursusmål
De studerende vil kunne anvende basale programanalyse formalismer
og vil kunne konstruere og anvende analyse værktøjer og teknikker
der understøttes af disse formalismer.
Læringsmål
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
- forklare de basale begreber introduceret i kurset;
- forklare konkrete analyser og deres anvendelse på simple
programmer;
- forklare målet med analyse frameworks og deres instanser;
- formulere nye analyser som varianter af eksisterende analyser
og kategorisere dem i de relevante analyse frameworks;
- forklare semantiske såvel som algoritmiske aspekter relateret
til konkrete analyser;
- designe og konstruere et generisk software værktøj der
understøtter analyser baseret på analyse frameworks;
- designe og motivere en sekvens af eksperimenter som benytter
det konstruerede værktøj og kunne fortolke de opnåede
resultater;
- opnå ovennævnte resultater som del af et gruppe arbejde men på
en sådan måde at de individuelle bidrag kan identificeres;
- kommunikere de opnåede resultater på en klar og præcis måde i
en standard form for teknisk rapport; og
- demonstrere evnen til at benytte relevante digital learning
systems på
FormalMethods.dk
Kursusindhold
Kurset dækker teknikker til programanalyse formuleret som monotone
frameworks. Dette involverer det teoretiske fundament såvel som
forskellige algoritmiske tilgangsvinker til løsning af constraint
systemer. Der stiftes bekendtskab med anvendelser på sikkerhed og
andre måder at beskrive programanalyser på.
De studerende vil skulle anvende en række klassiske program
analyser til at udvikle et mindre analysesystem.
Litteraturhenvisninger
Kurset er baseret på "Program Analysis - an Appetizer" af
F. Nielson, H. Riis Nielson (arXiv:2012.10086, 2020) og til dels på
materiale fra "Principles of Program Analysis" af F.
Nielson, H. Riis Nielson og C. Hankin (Springer, 2005, ISBN
3-540-65410-0).
Yderligere materiale vil blive gjort tilgængelig på DTU's
intranet ligesom systemerne på
FormalMethods.dk
vil blive benyttet.
Sidst opdateret
07. juni, 2022