In the upcoming summer semester, Martin Monperrus and I will be teaching a new course on Automated Software Engineering, here at TU Darmstadt. During the course we will look at the entire development life-cycle from a tool perspective: How can automated tools support programmers during the design, implementation, testing and maintenance of a software product? We will talk about approaches to…

automated analysis & definition of requirements

computer-aided design of software

implementation with intelligent IDEs

automated testing and verification

computer-aided bug finding

aiding program understanding by mining latent specifications from existing software

advanced debugging & profiling techniques

computer-aided refactoring and documentation

The course webpage contains a rough outline of the topics that we have planned but at this point we are still open for suggestions, as long as they fit the general topic.