6 ECTS credits
150 u studietijd

Aanbieding 1 met studiegidsnummer 4021360FNR voor alle studenten in het 2e semester met een gespecialiseerd master niveau.

Semester
2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Nederlands
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Coen De Roover (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
Inhoud

Het doel van deze cursus is het bestuderen van geautomatiseerde technieken voor het evalueren, vrijwaren, en verbeteren van de kwaliteit van softwaresystemen. 
De eerste hoorcolleges behandelen de statische en dynamische programma-analyses die de fundering vormen van deze kwaliteitswaarborgingstechnieken:

1. Symbolic execution for generating tests
- Static symbolic execution: symbolic program state, SMT solving
- Dynamic symbolic execution: exploration strategies, concolic testing 

2. Program querying and transformation for detecting and repairing bugs
- Program querying: pattern characteristics, logic-based program queries, precision and recall 
- Program transformation: template-based program transformations, strategic programming,  search-based software engineering

3. Data flow analysis and the monotone solver
- Fixed-point theory: lattices and soundness, data flow constraints, fixed-point algorithms 
- Monotone framework: forward v. backward and may v. must

4. Control flow and pointer analysis and the cubic solver 
- Cubic solver: set membership constraints, cubic algorithm
- Control flow analysis: CFA for lambda-calculus, call graph construction for OO languages
- Pointer analysis: Andersen’s and Steensgard’s, null pointer analysis 

5. Inter-procedural data flow analysis and the IFDS/IDE solver
- Inter-procedural control flow graphs: infeasible paths
- Context-sensitivity: cloning v. call string v. functional approach
- IFDS/IDE framework: exploded super-graph, graph reachability

6. Abstract interpretation of higher-order programs
- From operational, over collecting, to abstract semantics 
- Taint analysis of Scheme for detecting security leaks

In de laatste colleges bestuderen we recente publicaties om te begrijpen hoe deze technieken aan het evolueren zijn om met de complexiteit van eigentijdse software om te kunnen. Studenten bereiden hiervoor zelf een presentatie voor, en worden hierop geëvalueerd. 

Het doel van de werkcolleges is praktijkervaring op te doen in het implementeren van deze technieken. 
 

Studiemateriaal
Digitaal cursusmateriaal (Vereist) : Digitaal cursusmateriaal., Canvas
Bijkomende info

Digitaal lesmateriaal voor de hoorcolleges en werkcolleges is beschikbaar op het leerplatform. 
 

Leerresultaten

Doelstellingen

De doelstellingen van deze cursus zijn:
- Studenten krijgen inzicht in het ontwerpen van statische en dynamische programma-analyses en de toepassing daarvan voor het evalueren van softwarekwaliteit
- Studenten zijn bekend met recente evoluties van deze fundamenten
 

Leerresultaten

De corresponderende leerresultaten zijn:

m.b.t het herinneren en begrijpen van kennis: 
- De student kan de rol beschrijven van programma-analyses bij de evaluatie van softwarekwaliteit
- De student kan courante dataflow analyses herkennen als instanties van het monotone framework
- De student kan de nood motiveren aan en kan een pointer analyse beschrijven voor imperatieve programma's
- De student kan verschillende types contrasteren van context-sensitiviteit voor inter-procedurele analyses
- De student kan de nood motiveren aan en kan een control flow analyse beschrijven voor hogere-orde programma's

m.b.t. analyseren:
- De student kan varianten herkennen in de literatuur van fundamentele statische en dynamische programma-analyses 
- De student kan het bestaan motiveren van valse positieven en valse negatieven in de resultaten van een programma-analyse

m.b.t. evalueren:
- De student kan de voordelen en nadelen evalueren van dynamische en statische programma-analyses 
- De student kan evalueren of een programma-analyse geschikt is voor een bepaald probleem in softwarekwaliteit

m.b.t. creëren:
- De student kan zelfstandig logische queries implementeren om instanties van bug patterns en design patterns te detecteren
- De student kan zelfstandig een bestaande implementatie uitbreiden van concolic testing voor imperatieve programma's
- De student kan zelfstandig een specifieke dataflow analyse implementeren in een generisch framework voor dataflow analyses
- De student kan een samenvatting en vergelijking presenteren van recente publicaties uit de literatuur
 

Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Mondeling bepaalt 25% van het eindcijfer

Examen Schriftelijk bepaalt 75% van het eindcijfer

Binnen de categorie Examen Mondeling dient men volgende opdrachten af te werken:

  • examen andere met een wegingsfactor 1 en aldus 25% van het totale eindcijfer.

    Toelichting: 1 mondelinge synthese-presentatie over 2 recente publicaties binnen het domein (40%)

Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:

  • Reports on assignments met een wegingsfactor 1 en aldus 75% van het totale eindcijfer.

    Toelichting: 3 schriftelijke rapporten over opdrachten waarin studenten kwaliteitswaarborgingstechnieken toepassen op realistische software (20% each)

Aanvullende info mbt evaluatie

3 schriftelijke verslagen over opdrachten waarin studenten implementaties van bestaande kwaliteitswaarborgingstechnieken verkennen en uitbreiden (elk 25%), 1 mondelinge presentatie van een synthese van twee recente publicaties over diens fundamenten (25%).
 

Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Artificiële Intelligentie
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Multimedia
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Software Languages and Software Engineering
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Data Management en Analytics