Alexander Kurz

Software

Programming with AI

The advent of AI pair programming made software development much easier. In each case, the core of the projects below has been developed in less than half a day. 1 I am grateful to my former student Chris Kruki who contributed to some of the projects and taught me a lot about client-server software development.

The purpose of the projects below is the following. First, to explore research questions about the applications of LLMs to software engineering. Second, to build bespoke tools that can be used in the class room for teaching mathematics and theoretical computer science via puzzles and computer games. Third, to create seeds that can be used for teaching the development of free and open source software (FOSS) projects. Finally, my aim is to integrate all of these elements in such a way that enables the seamless transition from theory to practical software tools within a single semester’s time frame.2

As an interface to LLMs I use Aider, see here for some instructions.

Teaching Programming Languages

In my course on Programming Languages we build interpreters for small programming languages based on lambda calculus. I plan to make more links available here.


  1. Of course, it is irresistible to keep tinkering after that. Anyway, no attempt has been made to develop these projects into polished products. In fact, I did want to keep the projects small with plenty of room for future improvements and devlopments. On the other hand, as far as I know, the software is fully functional for what it was intended to do. 

  2. While it has always been known that implementing TCS is a great way to learn and understand the concepts, the time it took to actually do this had the consequence that most TCS courses have been taught, like math courses, “pen-and-paper”. In some cases, it was possible to teach a theory course based on tools such as interactive proof assistants. I believe that now teachers and students will be able to develop together bespoke tools taylored to the needs of a particular class.