Seminar in Advanced Topics in Software Construction

Seminar "Programming Styles" 2014, B-IT

Prof. Dr. Armin B. Cremers, Daniel Speicher

Campus Entry

How do you construct your software? Our lecture “Object-Oriented Software Construction” teaches how to build software as a system of “software objects” interacting with each other just like “things in reality” interact with each other. But there are other styles (procedural, functional, relational, callback-based, restful, …) that all have their specific advantages and disadvantages. Additionally, they are independent of the programming language at hand. Knowing a variety of styles gives you more options to build your system. Furthermore, the styles prove as well useful on the higher level of system design as principles for structuring your system.

But how is it possible to get familiar with such a variety of styles? The recently published book "Exercises in Programming Style" by Cristina Videira Lopes offers a simple and unprecedented approach. It presents 33 different programs solving the simple problem of presenting the 25 most frequent words in a given text. Each of the short programs (1-2 pages) exhibits the characteristics of another style. As each program solves the same task, the differences in style become evident.

In the seminar you will approach two to four styles starting from the book, discussing the advantages and disadvantages of the style, revisiting classical sources for the styles and presenting a few current academic publications on the topic. The presentations from your fellow students will familiarize you with the remaining styles.

Course format: Block seminar for the final presentations plus introductory sessions, written seminar paper.

Contact: Daniel Speicher (, Please send a short application1) email till 31.07.14.

More information about the book

More examples of “one content - many styles”

Further literature

1) Application = Just let us know that you want to participate. You might mention your programming knowledge. It is enough to be determined to understand the different versions of the program. An accessible style might be the pipeline style or our plain implementation in Java.
Last modified: 2017/08/29 23:56