AUTOMATED SOFTWARE ENGINEERING
Goals
-
To give an overview of current techniques in automated software engineering,
which is among others about how to (semi-)automatically generate correct
(and efficient) programs from formal specifications. The focus is on the
synthesis of logic programs, mostly relational (Prolog, ...) ones, but
also functional (LISP, ...) ones.
-
To encourage self study and develop skills of oral presentation and technical
writing, in a simulated conference setting.
Topics
Introduction to Automated Software Engineering
Introduction to Deductive Synthesis
+ Transformational Synthesis
+ Proofs-as-Programs Synthesis
+ Schema-guided Synthesis
Introduction to Inductive/Abductive Synthesis
+ Trace-based Synthesis
+ Model-based Synthesis
Conclusions on Automated Software Engineering
Textbook
Pierre Flener.
Logic Program Synthesis from Incomplete Information.
Kluwer Academic Publishers, 1995.
Other References
About eight papers to read (depending on the class size) (to be announced)
Grading Modalities
I teach the introductory chapters and moderate the discussion rounds at
the end of each presentation by student(s), as well as at the end of the
entire course. Each student orally presents one or two particular
system(s) (a deductive one and/or an inductive/abductive one) to the class
(35% total), and writes a term paper on a system s/he presented
(35%). Students are strongly encouraged to experiment with the systems,
where available. Depending on the class size, presentations and papers
may be prepared by teams of maximum two students. Every student is expected
to ask questions during the presentations, as well as during my teaching
sessions (30% for overall participation). The papers to be read
will be assigned to the students / teams by a lottery after the add / drop
session, and may then be swapped (but not their scheduled presentation
dates). There is no final exam.