1. 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.
  2. To encourage self study and develop skills of oral presentation and technical writing, in a simulated conference setting.



Other References

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.