Lund University →
Faculty of Engineering →
Department of Computer Science
Skills
This page lists all technical skills of relevance to this class, as a
study guide. If you find that you possess all the skills listed here,
you can consider yourself to have mastered the class.
- [0.0] Programming in Java (Prerequisite)
- [0.1] Dynamic Dispatch (Prerequisite)
- [0.2] Side Effects and "pure" functions (functions without externally observable side effects) (Prerequisite)
- [0.3] Reading Context-Free Grammars in Backus-Naur Form and understanding the difference between Terminal and Nonterminal symbols
- [0.4] Abstract Syntax Trees
- [0.5] Static Program Semantics
- [0.6] Dynamic Program Semantics
- [0.7] Intermediate Program Representations
-
- [2.0] Programming with JastAdd
- [2.1] Reading Abstract Syntax definitions for JastAdd and understanding the structure of the generated Java objects
- [2.2] Inter-Type Declarations in JastAdd
- [2.3] Using JastAdd's "Aspect Weaving" process to add methods and fields to AST classes
- [2.4] Examining JastAdd ASTs, given a JastAdd grammar
- [2.5] Reference Attribute Grammars (RAGs) and how to use them for program analysis
- [2.6] Intrinsic Attributes
- [2.7] Synthesised Attributes
- [2.8] Inherited Attributes
- [2.9] Broadcasting Attributes
- [2.10] Well-Formedness of JastAdd Grammars
- [2.11] Well-Definedness of JastAdd Grammars
- [2.12] Debugging Attribute Evaluation in JastAdd
- [2.13] Reference Attributes
- [2.14] Parametrised Attributes
- [2.15] Collection Attributes
- [2.16] Non-Terminal Attributes (NTAs)
- [2.17] Circular Attribute Evaluation
- [5.0] Control Flow Graphs
- [5.1] Given a program and its semantics, compute the Control Flow Graph
- [7.0] Points-To Analysis
- [7.1] The Aliasing Relation
- [7.2] Concrete Heap Graphs
- [7.3] Abstract Heap Graphs
- [7.4] Utilise the results of an Alias Analysis to improve a Data Flow Analysis
- [7.5] Store-less and Store-based Pointer Analyses
- [7.6] Access Paths
- [7.7] Allocation Site Based Summaries
- [7.8] Summary Heap Nodes
- [7.9] The Points-To Relation and Points-To Sets
- [7.10] Null Pointer Representation Strategies: Unique Null, Many Nulls, Nullness Flags
- [7.11] Steensgaard's Analysis
- [7.12] Andersen's Analysis with its Inclusion Edges
- [7.13] Strong and Weak Updates
- [8.0] Call Graphs
- [8.1] Class Hierarchy Analysis
- [8.2] Rapid Type Analysis
- [8.3] How programming language features such as dynamic dispatch or dynamic loading may impair static analysis
- [8.4] Soundiness
- [8.5] Loose and Tight Analysis Composition
- [9.0] Dynamic Analysis via Instrumentation
- [9.1] Dynamic Events and their Characteristics
- [9.2] Samples
- [9.3] Counting vs. Sampling as measurement strategies
- [9.4] Read and explain Box Plots
- [9.5] Perturbation in Dynamic Analysis
- [9.6] Warm-Up Effects
- [9.7] Statement Test Coverage Analysis
- [9.8] Given a Dynamic Program Analysis, identify potential causes of Perturbation
- [9.9] Given a Sample of Performance Characteristics, give Limits to Generality of the Characteristics
Concepts
For each concept in the above (capitalised or marked as acronyms), you should be able to do the following:
- Give matching examples
- Example: What is an example of a True Positive in program analysis?
- Distinguish it from other concepts
- Example: What is the difference between a May Analysis and a Must Analysis?
- Explain its relationship to any other concepts (is-part-of, is-alternative-to, is-generalisation-of etc.)
- Example: What is the connection between static program analysis, type inference, and dataflow analysis?
- Explain the purpose or utility of the concept
- Example: In type inference, why would I want to use a type varaiable?
- Where applicable: apply the concept to a concrete problem that the concept is suitable for
- Example: Given some specific set of typing rules that you are shown, what is the type of some specific expression?
Advanced questions will go beyond this scope. These questions may:
- Ask you to critically reflect on specific concepts in a specific application scenario (e.g., "To solve this specific analysis challenge, what program analysis approach would you consider?")
- Ask you to examine interactions between concepts beyond the scope of what we discussed in clss (e.g., "Consider some analysis A. We are using A to address some specific analysis challenge. If we give A access to some specific server analysis B, how might this improve the quality of the analysis results from A?")
- This list is not exhaustive.