%\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{COM 1205}
\author{}

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

%\input common
%\centerline{\bf COM 1205}
\centerline{Software Design and Development
%\section{Adaptive Object-Oriented Software Development:
--- Syllabus Winter 2001}

\centerline{Professor Karl. J. Lieberherr}

The syllabus is subject to change based on class reaction.

\begin{verbatim}
http://www.ccs.neu.edu/research/demeter/course/topics-covered/topics-covered
\end{verbatim} 
contains a good overview of computer science topics covered in this course.
Six of nine important areas are touched. Three fundamental
computer science processes are touched: theory, abstraction and design.
And 5 of 12 recurring computer science concepts are touched.

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; instead you can print selected chapters
on your home printer and other chapters you can just browse on-line.

This course provides state-of-the-art techniques 
and concepts
for
object-oriented software design and development with a focus
on aspect-oriented techniques
\begin{verbatim} 
http://www.ccs.neu.edu/home/lieber/AOP.html.
\end{verbatim} 
You learn the Demeter Method for object-oriented
software development which will hopefully make you at least 4 times as
productive as a Java software developer compared to software development
without the method. In the first few weeks
you learn the method which you apply in the remaining weeks to 
your project. The project will be done in groups.

Assume that you could do your project in 200 hours of
Java programming without using a good method. Instead 
of working hard, we will work smart. We will spend 50
hours on learning the Demeter Method and then you spend 50 hours
on doing your project in Java using the Demeter Method.
Since you will be at least 4 times
as productive, you will still finish your 200 hour project in
50 hours only. Instead of spending 200 hours on the course, which
would be excessive, you can accomplish the same in a total of
100 hours AND learn very useful object-oriented technology.

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 Java.

This course does not have Java as a prerequisite, however you
are expected to learn a small subset of Java from the recommended text book
or from another good Java book of your choice.

The WWW page for the course is:

http://www.ccs.neu.edu/home/lieber/com1205/w01

This file is in:

admin/syllabus/

Viewgraphs for the lectures are in:

lectures/

The lectures gradually introduce you to programming adaptively.
First we program adaptively in pure Java using the DJ library.
Hw 1 and hw 2 exercise this knowledge.
In later homeworks and the project we use a small extension
to Java to write our adaptive programs as
behavior files.
Structure will be defined by class dictionaries similar to XML schemas.
Behavior files allow us in many cases to keep information about
one concern in one file. The code will be spread automatically
into multiple Java classes.

\begin{enumerate}
\item
Week: %1
Introduction to adaptive software development.
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.

%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.
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

\item
Week: %3

Strategy graphs.
Decoupling classes: Law of Demeter
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

%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.

\item
Week: %5
Traversal strategies in detail.
The Demeter Method for AP.
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.

\item
Week: %6
Midterm. 
Testing of adaptive, 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
Class dictionary design and class dictionary transformations.
The 11 kinds of class dictionaries.
Project program design and implementation.

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

\item
Week: %8
Project program design and implementation.
%Transportation patterns.

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

\item
Week: %9
Project program design and implementation.
Collaborations and adapters.
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 object-oriented software development methodologies.

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


\end{document}

