Aspect-Oriented Software Development week 1: Historical background separation of concerns scattering and tangling Basic ingredients of an aspect-oriented language Basics of AspectJ Two join point models: static and dynamic Focus first on static join point model Hw 1: write AspectJ program: for non-production aspect: debugging aspect. week 2: AspectJ: dynamic join point model structure-shy programming in AspectJ Hw 2: write AspectJ program for production aspect. Visitor design pattern, use "all subclasses" operator. Library example: error handling aspect for book checkout week 3: Aspectual Collaborations Programming with respect to a class graph Aspectual methods Adapting collaborations Personalities: Single class collaborations Hw 3: Implement special case of single class collaborations with AspectJ. week 4: Aspectual Collaborations: continued Mapping aspectual collaborations to abstract AspectJ aspects. Hw 4: simulate aspectual collaborations in AspectJ. Use AC implementation. week 5: Concern-specific aspect languages COOL, RIDL, traversals How can AspectJ be improved: integration of traversals and AspectJ Project starts week 6: HyperJ, composition filters simulate composition filters and HyperJ examples with AspectJ week 7 - 10: Selected papers from AOSD 1 http://trese.cs.utwente.nl/aosd2002.htm Project reports