Announcement: Short Course on Aspect-Oriented Programming ============ ===== ====== == =============== =========== Tamas KOZSIK from Eotvos Lorand University in Budapest will visit the Software Construction group in the week of 11-15 April. He will give a self-contained series of lectures on Aspect-Oriented Programming as part of the course Software Construction (2IS20). The schedule for the lectures on Aspect-Oriented Programming is as follows. Monday 11 April 15:30 - 17:15 in Auditorium 13 Tuesday 12 April 15:30 - 17:15 in Auditorium 11 Wednesday 13 April 13:30 - 15:15 in Auditorium 14 Thursday 14 April 15:30 - 17:15 in Auditorium 15 Friday 15 April 13:30 - 15:15 in Auditorium 11 (EXTRA) The short course runs Monday - Thursday. The session on Friday 15 April is for those who want to get some hands on experience, take a more detailed look at some examples, ask questions. You need to bring your own laptop if you want to do some exercises. Faculty members are welcome. Contact person: Tom Verhoeff Lecture Contents ------- -------- Topic 1 - Problems and solutions. Why AOP? Overview. Some examples. On the first day we discuss some problems related to the structured/modular/object-oriented/etc. programming paradigms. (Tangling and scattering code, cross-cutting issues.) We show how aspects, a programming language construct supporting modularity, can help to solve these problems. We give an overview of AOP, and present some examples. Topic 2 - AspectJ: the language; some simple examples We introduce AspectJ, the most popular AOP language. We explain the concept of dynamic join points and the programming language constructs pointcut, advice, introduction and aspect. We illustrate the use of these constructs through some simple examples. Topic 3 - AspectJ: tools; more sophisticated examples We get acquainted to tools related to AspectJ, e.g. the Eclipse project. We consider more sophisticated issues of AspectJ and practise through more complex examples. Topic 4 - Other AOP languages and techniques We learn about similar languages (AspectC++, etc.), and about other (significantly different) implementations of the AOP paradigm (composition filters, domain-specific AOP languages, etc.). Topic 5 - Other generative programming techniques We summarize paradigms that are closely realted to AOP. We address generative programming in general, and generic programming, template metaprogramming, intentional programming, adaptive programming, subject-oriented programming and multi-dimensional separation of concerns specifically. Some relevant literature: 1. Aspect-Oriented Software Development. http://www.aosd.net/ 2. The Eclipse project: http://www.eclipse.org/ 3. Multi-Dimensional Separation of Concerns: Software Engineering using Hyperspaces. http://www.research.ibm.com/hyperspace/ 4. Harold Ossher, Peri Tarr. Multi-Dimensional Separation of Concerns and The Hyperspace Approach. IBM Research Report 21452, April, 1999. IBM T.J. Watson Research Center. http://www.research.ibm.com/hyperspace/Papers/tr21452.ps 5. Subject-oriented programming. http://www.research.ibm.com/sop/ 6. Demeter: Aspect-Oriented Software Development. http://www.ccs.neu.edu/research/demeter/ 7. Composition Filters. http://trese.cs.utwente.nl/composition_filters/ 8. Andrei Alexandrescu. Modern C++ Design (Generic Programming and Design Patterns Applied). Addison-Wesley (2001) 9. Gulyás László, Kozsik Tamás: The Use of Aspect-Oriented Programming in Scientific Simulations, In: Jaan Penjam ed. Software Technology, Fenno-Ugric Symposium FUSST'99 Proceedings, Technical Report CS 104/99, Tallinn, Estonia, August 19-21, 1999. pp. 17-28.