Program Analysis & Software Testing
Course type | Seminar |
---|---|
Instructors | Alexander Nutz (contact person for organisational matters), Prof. Dr. Andreas Podelski, Dr. Daniel Dietsch, Dr. Matthias Heizmann, Dr. Jochen Hoenicke, Marius Greitschus, Vincent Langenfeld, Christian Schilling, Tanja Schindler |
Kick-off meeting |
Tue, October 17, 13:00 s.t., building 052, room 00-016 |
Presentation language |
English |
Credits |
4 |
Course Catalog | Program Analysis and Software Testing |
Talk dates: |
18.01.2017, 25.01.2017, 01.02.2017, 08.02.2017, each at 14:00-16:00 s.t. |
Room for the talks: |
building 051, room SR 00-034 |
News and announcements
- (18.01.2017) Cancelled one more talk (Program Repair).
- (15.11.2017) Cancelled another talk (Property Directed Reachability), edited reviewer assignments (affected students have been informed).
- (08.11.2017) Cancelled one more talk (Abstract Interpretation), edited reviewer assignments.
- (07.11.2017) Cancelled one talk (Horn clause solving), edited groups once more to fill the open slot in group B.
- (06.11.2017) Assigned reviews. Groups should be final.
- (03.11.2017) Added the schedule containing all deadlines. Groups/topics will be assigned soon (plan: tomorrow, Saturday). EDIT: tentative group and topic assignment is online, group assignment may change slightly in the coming few days, reviewers to be assigned
- We updated the list of topics. As the next step, you should send an email to Alexander in which you choose at least three topics (possibly with priorities), until Monday, 30.10.'17, in the morning.
- Please participate in this Doodle poll to find the appointment for the weekly seminar talks at the end of the lecture period (ignore the exact dates - we are only interested in the weekday and time).
- We added some of the available topics (scroll down). EDIT (23.10.'17): The list was updated, it should be fix from now on.
- We fixed the kick-off meeting appointment (see above).
Process of the seminar
- You participate in the kick-off meeting, where we present the available topics. Feel free to hand in your favorite topic in advance.
- You contact the instructors to obtain a topic. You may suggest a topic by yourself, pick one of the suggested topics, or find a topic suitable for you in a discussion with your supervisor.
- You have a meeting with your supervisor in which we discuss relevant literature and develop a very coarse sketch of your talk (deadline: four weeks before your talk).
- You write a proposal in which you explain what you are going to present in your talk, together with an abstract of your talk. You submit your abstract and your proposal via email to your supervisor (deadline: three weeks before your talk).
- Your proposal is reviewed by your supervisor and two other participants.
- You write two reviews about other participants' proposals and send them via email to the supervisor (deadline: one week after you received the proposal).
- You receive reviews for your proposal (deadline: two weeks before your talk).
- You submit your slides via email to your supervisor (deadline: one week before your talk).
- You have a meeting with your supervisor in which you get feedback for your slides.
- You give a talk of 30 minutes.
- You attend the talks of all other participants.
Proposals of the talk
The proposal should consist of around five pages in which you explain what you are going to present in your talk. The proposal may contain for instance:
- short overview for the reviewers (the reviewers will probably not know your topic)
- structure of your talk
- aspects of the topic that you present (why?) and ignore (why?)
- examples occurring in the talk (why these examples? Is there a running example that can be used for demonstration?)
- which definitions are presented formally? (why?), which definitions are just mentioned informally? (why?)
- which notation is used? (why?)
- which theorems are presented, which of them will be proven (why?), which proofs will be omitted (why?), will you use motivating examples in the proof?
Abstract of the talk
- one paragraph that summarizes what you present in the talk
- We will send an invitation for the seminar to all students and members of our chair. This invitation contains the abstracts of all talks.
The talk
- The goal of your talk is that the audience (master students, familiar with computer science in general, probably no experts in the topic) has the possibility to learn something new about an interesting topic. How well you achieved this goal will determine the grade of your talk.
- In a seminar you have to show that you are able to present some topic to other people. You do not have to show how well you understood the topic for yourself. How well you understood the topic has no direct influence on your grade, but only how well you presented the topic to the audience.
- You may use and copy any source of information (but do not forget to cite it). If you think your talk is just a "remix" of existing talks tailored to your audience, you might have done a great job. But do not let yourself be fooled by well-structured and fancy talks found in the web, each talk was tailored to a specific audience.
- If you agree we put your slides on this website. Keep in mind that if you have copied images in your slides this might not be possible anymore (copyright restrictions). Of course, it will not have any effect on your grade whether we may publish your slides or not.
Review of the proposal
- Give a short summary of the talk based on the proposal (to detect misunderstandings right at the start).
- Be generous with your criticism. It is very unlikely that a student will get a bad grade because you revealed some problems in his/her proposal. However, it is very likely that a student will get a better grade if he/she was able to resolve a problem in his/her talk, thanks to your review.
- Give reasons for your criticism (e.g., "It is not possible to understand Lemma 2 because term foo was not explained."). You are also allowed to give your personal opinions, if you do so mark them as such (e.g., "Theorem 1 is very difficult to understand, in my opinion you should give an example first.").
- The following questions might be helpful to write your review
Is the proposal sufficiently well written to be readable?
Is the appearance and structure of the proposal appropriate?
Is the comprehensibility of the talk supported by relevant examples and figures?
Is the proposed structure of the talk sensible and balanced?
Are all propositions made by the author correct?
Is the line of reasoning concerning the presentation complete and accurate?
Has the author argued his/her case effectively?
Does the author use the common notation and terminology? Where would you suggest something different?
Is the schedule of the author sensible? Do you think the talk will fit into the 30 min time slot?
Grade
Your overall grade will be composed according to the following proportion.
- 10% grade of your proposal
- 20% grade of your reviews
- 70% grade of your talk
Topics
There is not a one-to-one correspondence between seminar talks and topics. Several students may give talks on the same topic, but present different aspects. The suggested literature should give you a first impression of the topics. We assign the exact literature in cooperation with you after you stated your preferences for the topic. More literature does not mean more reading, just more options. The order of appearance is arbitrary.
If requested, some topics may also be presented in groups of two.
Some of the papers are only available via the network of our university (e.g., via vpn). If you have some problem accessing the papers, please ask us.
Abstract Interpretation (Introduction)
Group: A
Talk: cancelled
Reviews: -
Literature: www.cs.tau.ac.il/~msagiv/courses/asv/absint-1.pdf, https://courses.cs.washington.edu/courses/cse503/10wi/readings/p238-cousot.pdf
Supervisor: Marius
Abstract Interpretation vs SMT
An abstract interpretation derives all invariants of a program within a some fragment of predicate logic. SMT checks satisfiability of formulas within some fragment of predicate logic. Can we use SMT for abstract interpretation?
Group: A
Talk: Mariana
Reviews: Ben, Elisabeth
Literature: CADE'07
Supervisor: Daniel
Property Directed Reachability
Finding inductive invariants by refining a candidate set.
Group: A
Talk: cancelled
Reviews: -
Literature: VMCAI 2011 FMCAD 2011
Supervisor: Tanja
MCSAT
Let DPLL manage a first-order model instead of a propositional one.
Group: B
Talk: Elisabeth
Reviews: Ben, Enid
Literature: VMCAI'13, VMCAI '13, FMCAD '13
Supervisor: Tanja
SMT-solving of quantified formulas
An algorithm that unifies the approaches of E-Matching, Model based quantifier instantiation, and Conflict based quantifier instantiation.
Group: B
Talk: Ben
Reviews: Enid, Mariana
Literature: TACAS '17
Supervisor: Alexander
Memory Model
Most programs allocate memory dynamically. Program analyses have to maintain a model of that memory in a generic (in order to capture all possible behaviours) and efficient (so the analysis terminates) fashion.
Group: B
Talk: Enid
Reviews: Mariana, Elisabeth
Literature: SAS'17
Supervisor: Jochen
Fault localization
Say you have a very long witness for a bug, i.e., a path through the program that leads to an error. How to point the user to the important parts?
Group: C
Talk: Bhavana
Reviews: Nico, Saskia
Literature: ASE '09, Softw. Test., Verif. Reliab. '15
Supervisor: Christian
Abstraction for falsification
Invariants are often used to show the absence of an error (e.g. in Hoare logic). Can we also find invariants that show the presence of an error?
Group: C
Talk: Nico
Reviews: Bhavana, Saskia
Literature: CAV '05
Supervisor: Daniel
Program transformation
Programs with arrays are hard to verify. Therefore convert programs with arrays into a program without arrays.
Group: C
Talk: Saskia
Reviews: Bhavana, Nico
Literature: SAS '15
Supervisor: Matthias
ICE reinforcement learning
This approach finds invariants with a learner-teacher framework. The learner proposes a candidate; the teacher checks the candidate and gives a counterexample.
Group: D
Talk: Francine
Reviews: Victor
Literature: CAV '14, POPL '16, TACAS '16
Supervisor: Christian
Path invariants
Decompose a program into finitely many path programs and verify them instead.
Group: D
Talk: Victor
Reviews: Francine
Literature: PLDI '07
Supervisor: Matthias
Program repair
Given a program with a bug, can we automatically generate a bugfix?
Group: D
Talk: cancelled
Reviews: -
Literature: FESCA/arXiv '15
Supervisor: Vincent
Schedule
Each topic/talk will have a slot letter (A, B, C, D) assigned.
Each seminar student has to write reviews for two other students as assigned above (not done yet, but soon).
The following table contains the deadlines for the groups. Please note that "Review" stands for the review deadline for the specific group's proposals. For example if you are reviewing someone in group B, you should receive the proposal on Dec 21 and send back your review on Jan 11 (at the latest, the earlier the better for your reviewee) -- regardless of which group your own topic is in.
Date | Proposal | Review | Slides | Talk |
---|---|---|---|---|
Thu, Dec 14 |
A | |||
Thu, Dec 21 |
B | A | ||
Thu, Jan 11 |
C | B | A | |
Thu, Jan 18 |
D |
C |
B |
A |
Thu, Jan 25 |
D |
C |
B |
|
Thu, Feb 1 |
D |
C |
||
Thu, Feb 8 |
D |
Additional Material
Here you find the introductory talk from a past semester. [slides] [video]