Title: Towards a Better Organization of Programs Speaker: Karl Lieberherr A common problem in software is that programs are a tangled artifact of several design concerns. This makes them hard to understand and maintain. In this talk we will present an approach to programming in the Java programming language that allows many (not all) concerns to be expressed loosely coupled rather than tangled together with other concerns. This leads to programs that are less tangled and that are easier to understand and maintain. We show an important separation of structure from behavior that is based on the Inventor's Paradox. The Inventor's Paradox is about problem solutions becoming easier when we solve more general problems. We apply this idea to programming and show that programming becomes easier if we write the programs for generalized object structures rather than specific object structures. We will demonstrate how to keep an important family of design concerns separate in Java programs that are written with the DJ Package. http://www.ccs.neu.edu/research/demeter/DJ/