Data Structures arising in programming are conveniently modeled by universal algebras. If specifications are presented as equations or implications, a natural candidate for the intended semantics is the initial (i.e. free 0-generated algebra). This approach adds to the specifying axioms convenient rules for recursive definitions and inductive proofs.
State based and object oriented systems may be described in the same way, but this requires that the state is explicitly modeled as a sort. From the viewpoint of the programmer, however, it is intended that the state should be "hidden" with only certain features accessible through attributes and methods. The real drawback is that this way two states may be distinguished, even if to the outside this distinction can never be observed. It has recently been discovered that state based systems such as transition systems, automata, lazy data structures and objects give rise to structures dual to universal algebra, which are called co-algebras. Equality is replaced by indistinguishability and co-induction replaces induction as proof principle. However, it turns out that one has to look at universal algebra from a more general perspective (using elementary category theoretic notions) before the dual concept of co-algebra is able to capture the relevant applications.
In our course we give an introduction to this fascinating theory which
is still in an early phase of development. The (preliminary) outline of the
four lectures is: