This course is regularly offered in the summer semester, as part of the ICM track of the CS Master's program. The course number in the master module handbook is MA-INF 3207. It should be preferably attended in the second semester of your studies. The course can also be attended by diploma students.
|Time||Monday, 13:30 - 15:00 s.t.(!). For exceptions see the ROOTS-Teaching Calendar|
|Place||Room A121, on the first floor of the “Altbau”, Römerstr. 164.|
|Course number||MA-INF 3207|
|Diploma category||B (DPO 1998) / B3 (DPO 2003)|
|Exam||General information: Exam page – Dates: August 5, 6 and 9 in A107|
|Exercise groups||See calendar link on exercise page|
|Lecturer||Dr. Günter Kniesel|
|Student teaching assistant||Eva Stöwe, Jan Nonnen|
This course adresses people interested in software quality. It shows how very powerful software analysis (for assessing software quality or emerging problems) and software transformation (for automating correction of identified problems) can be built on the basis of declarative model transformation infrastructures that go beyond classical logic programming. In particular, we analyse and transform Java programs using JTransformer.
Since this is an advanced course, we will not spend too much time on logic programming foundations – just a few short sessions that should make you familiar with the used development environment, help you refresh prior knowledge and make sure that all course participants have a comparable starting level. If you have no background in logic programming you will need to invest more time in this initial phase.
The course will lay the foundations for a logic programming representation of arbitrary software systems and will introduce JTransformer as a tool that automatically generates such a representation for arbitrary Java programs. With JTransformer, we will implement various software quality analyses. These analyses will be the use cases that motivate the need for the different advanced logic programming techniques that will gradually be introduced (for instance, metaprogramming, abstract interpretation and partial evaluation).
Finally we will learn about the approach of classic Prolog systems to program transformation, analyse its risks and embrace the alternative concept of “conditional transformations” implemented in the CTC and JTransformer.
Summarizing, you will learn new things in three different areas: