\documentclass[11pt]{article}

%\documentstyle{article}
%\documentstyle[12pt]{article}


\makeatletter
\def\section{\@startsection {section}{1}{\z@}{-1.5ex plus -1ex minus -.2ex}{1.5ex plus .2ex}{\large\bf}}
\def\subsection{\@startsection{subsection}{2}{\z@}{-1.25ex plus -1ex minus -.2ex}{1.5ex plus .2ex}{\large\bf}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.25ex plus -1ex minus -.2ex}{1.5ex plus .2ex}{\large\bf}}
\oddsidemargin 0cm
%\textwidth 17cm
%\textwidth 20cm
%\addtolength{\topmargin}{-2.5cm}
\raggedbottom
%\textheight 22cm
%\textheight 27cm
\parskip 8pt plus 1pt minus 1pt
\parindent 0pt

\title{CSG 260}
\author{}

\begin{document}
\bibliographystyle{alpha}
\maketitle

%\input common
%\centerline{\bf COM 3360}
\centerline{Advanced Software Development
%\section{Adaptive Object-Oriented Software Development:
--- Syllabus Fall 2003}

\centerline{Professor Karl. J. Lieberherr}
\centerline{Course home page:}
\centerline{http://www.ccs.neu.edu/home/lieber/courses/csg260/f03/f03.html}

The syllabus is subject to change based on class reaction and projects selected
by the students. 

The Generative Programming book (GP book) is required (see course home page).

The AP book is the recommended text book: "Adaptive Object-Oriented
Software: The Demeter Method" which you can browse at:

\begin{verbatim}
http://www.ccs.neu.edu/research/demeter/biblio/dem-book.html.
\end{verbatim}


You don't have to buy the book.

This course provides state-of-the-art techniques and concepts for
advanced software development.

In this incarnation of the course "advanced" means "aspect-oriented".
\begin{verbatim} 
aosd.net
and
http://www.ccs.neu.edu/home/lieber/AOP.html.
\end{verbatim} 
You learn the foundations of aspect-oriented software development (AOSD)
in a practical context.
You learn about generative programming in general and 
aspect-oriented and adaptive programming in particular.

In the first few weeks you learn AOSD (using AspectJ and DJ) and
the Demeter method which you apply in the remaining weeks to 
your project. The project will be done in groups.

Designing and programming will be done in a structure-shy, grammar-based,
object-oriented style. All assignments and the project will
be written directly or indirectly in AspectJ, a small extension to Java.

This course does not have Java or AspectJ as a prerequisite, however you
are expected to learn a small subset of Java and
AspectJ from resources on the web or from a 
good AspectJ book of your choice.

The WWW directory for the course is:

http://www.ccs.neu.edu/home/lieber/courses/csg260/f03/

This file is in:

admin/

\begin{enumerate}
\item
Week: %1
Introduction to Generative Programming, 
Aspect-Oriented and Adaptive Programming.
The basics of AspectJ and adaptive software development.
Static and dynamic join point model.
The bus simulation example.

\begin{itemize}
\item
Pattern: Structure-shy Traversal.

http://www.ccs.neu.edu/research/demeter/adaptive-patterns/pattern-lang-conv
file: Structure-Shy-Traversal.html

\item
Pattern: Selective Visitor.

http://www.ccs.neu.edu/research/demeter/adaptive-patterns/pattern-lang-conv
file: Selective-Visitor.html

\item
Pattern: Class Graph
(Class dictionaries and Unified Modeling Notation.)

http://www.ccs.neu.edu/research/demeter/adaptive-patterns/pattern-lang-conv
file: Class-Graph.html

\item
Overview of pattern language, see:
http://www.ccs.neu.edu/research/demeter/adaptive-patterns/pattern-lang-conv
file: pattern-language-for-AP.html
\end{itemize}


AP book chapters: selections from 1-4.
% UML Distilled: chapter 1: Introduction, and class diagram chapter 4: The essentials.
GP book: Chapter 1,
Chapter 2: Analysis and Design Methods and Techniques

%Hw 1: Define classes for an application of your choice.
%Debug the class definitions with the Demeter system.
%Construct and draw objects.

\item
Week: %2
\begin{itemize}
\item
Pattern: Structure-Shy Object

http://www.ccs.neu.edu/research/demeter/adaptive-patterns/pattern-lang-conv
file: Structure-Shy-Object.html

\item
Pattern: Growth Plan

http://www.ccs.neu.edu/research/demeter/adaptive-patterns/pattern-lang-conv
file: Growth-Plan.html
\end{itemize}

Writing simple adaptive programs using traversals and visitors.
Introduction to DJ and connection to AspectJ.
Class dictionary design.

%Hw 2 Define class dictionary which provides
%readable objects. Debug class dictionary with Demeter system.
%Read in and print or draw some objects.

AP book chapters: selections from 5-8.
%UML Distilled: class diagram chapter 5: Advanced Concepts
GP book: Chapter 3: Domain Engineering and Object-Oriented Analysis and Design
and Chapter 4: Feature Modeling

\item
Week: %3

Strategy graphs.
Decoupling classes: Law of Demeter. Expressing Law of Demeter
in AspectJ.
Relationship to adaptive software.
DJ continued.
The class dictionary notation (graphical and textual).
Design rule checking of class dictionaries.
Class dictionaries as customizers for adaptive programs.

AP book chapters:  selections from 8-11.
%UML Distilled: chapter 6: Interaction Diagrams
GP book: Chapter 5: The Process of Generative Programming
and Chapter 6: Generic Programming

%Hw 3:
%Develop a class library for computing the total salary
%paid by a conglomerate of companies,
%program maintenance.

\item
Week: %4

Visitor pattern. Adaptive Programming.
Traversal strategies overview.
More complex uses of visitors: multiple visitors and nested
visitors.
Improving the reusability of software designs. 
Parameterized class definitions.

AP book chapters:  selections from 10-12.
%UML Distilled: chapter 9: Activity Diagrams.
%Hw 4:  Writing simple propagation patterns by abstracting them from
%object-oriented programs.
GP book: Chapter 8: Aspect-Oriented Programming and
Chapter 9: Generators

\item
Week: %5
Traversal strategies in detail.
The Demeter Method.
Design notations for behavior.
Growth Plan pattern.
Developing a growth plan for implementation and testing.
Design with maintenance in mind.

AP book chapters: 13.
%UML Distilled: chapter 2: An Outline Development Process
%Hw 5:
%Writing simple propagation patterns.
GP book: Chapter 13: Bank Account

\item
Week: %6
XAspects.
The coordination aspect.
Exception handling design.

Introduction to Eclipse.
Testing of object-oriented software.
%UML Distilled: chapter 11: UML and Programming

%6
%Hw:
%Abstracting class dictionaries from object descriptions,
%writing your own class dictionaries.

\item
Week: %7
Midterm. 
Advanced features of AspectJ. 

%Hw: Abstracting transportation patterns from object-oriented
%programs.
%Work with two class libraries simultaneously.

\item
Week: %8
Aspect-Oriented Design.
Eclipse continued.
%Transportation patterns.

%Hw:
%Write adaptive programs with transportation patterns.
%Evolution of C++ class libraries.

\item
Week: %9
Aspectual Collaborations.
Personalities.
Further design patterns for adaptive object-oriented software development.

http://www.ccs.neu.edu/research/demeter/adaptive-patterns/

\item
Week:
%10
A comparison of aspect-oriented software development methodologies.

\item
Week:
%11
Caesar compared to AspectJ: How to map use cases to aspects.

\item
Week:
%12
Aspectual domain-specific languages, Genvoca

\item
Week:
%13
Domain Engineering,
Model-Driven Architecture

\item
Week:
%14
Feature Modeling,
Model-Driven Architecture



\item
Exam week:
Final.
\end{enumerate}


\end{document}
