Die Studierenden sollen einen Chatbot implementieren, der interaktiv Programming-By-Example Aufgaben löst. Programming-By-Example ist eine Methode, bei der man ein Programm nur durch das Angeben von Eingabe- und Ausgabebeispielen generiert. Der Chatbot soll wie folgt funktionieren: Man gibt für ein gewünschtes Programm Beispielpaare von einer Eingabe und der gewollten Ausgabe an. Der Chatbot antwortet mit einem Programm, das den Beispielen genügt. Es transformiert also jede gegebene Eingabe in die zugehörige Ausgabe. Ist man mit dem Programm zufrieden, so endet der Prozess. Wenn nicht, kann man weitere Beispielpaare angeben und der Prozess wiederholt sich.
Die Programme, die der Chatbot generiert, müssen aus einer gegebenen kontextfreien Grammatik stammen. Die Grammatiken dürfen Programmkonstrukte aus der SMT-LIB verwenden. Diese umfasst Operationen auf Booleans, Bitvektoren, Integern und Strings.
Die Ansprechpartner für das Softwareentwicklungspraktikum sind Eren Keskin und Jakob Tepe.
Wir empfehlen, als Programmiersprache C++ zu verwenden. Wir können euch Boilerplate-Code und einen Parser, generiert durch ANTLR, zur Verfügung stellen.
R. Alur et al., "Search-Based Program Synthesis", 2018, Commun. ACM, doi:10.1145/3208071.
A. Udapa et al., "TRANSIT: Specifying Protocols with Concolic Snippets" , 2013, PLDI, doi:10.1145/2499370.2462174