VCSS 561 (undergraduate)
|
Catalog Description:
|
|
The goal of this course is to introduce the student to a programming paradigm and an appropriate programming language chosen from those that are currently important in industry or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class. The instructor will post specifics prior to registration. With the approval of the program coordinator the course can be taken for credit more than once, provided each instance deals with a different paradigm and language. |
This course will investigate the notion of software development with aspect orientation (AO). Students will discover advantages and disadvantages to inclusion of AO in software development.
Aspect-oriented programming is a possible next technological step to help us create more modular software through better separation of concerns. AOP builds on existing technologies of functions, procedures, data structures, and objects by allowing additional modules called aspects to be introduced in a crosscutting way with respect to existing modules.
The tendency in traditional object-oriented design is to look for commonalities and push them up into an inheritance hierarchy. AOP research attempts to allow one to treat scattered, non-hierarchically organized concerns as first-class elements, pushing them horizontally through any existing design structure, object-oriented or not.
The concepts of AO will be approached through an initial exploration
of some well-known and relevant OO design patterns. Through this we
will see shortcomings, which in some ways can be aided by AO techniques.
After this, the concepts of AO will be illustrated and the programming
language AspectJ will be introduced as one possible vehicle for
realizing those concepts.
Once familiarity with the AspectJ language is achieved, the students will assess other approaches through readings, comparative programming assignments, and finally graduate student presentations.
A small amount of the material in this course overlaps with Software
Engineering 2, Design of
Software Subsystems.
Graduate students must have satisfied any bridge course requirements they may have had. Again, PLC, although not usually required is recommended.
Students are expected to have a working knowledge of Java. They must
also be able to pick up new programming languages as they are used in
the course, both in lecture and for laboratory assignments and projects.
A student who has taken the Aspect-Oriented offering Programming Skills in a previous term will not be allowed to take it again.
This is a Masters/Bachelors co-listed course. Slightly different
grading criteria apply to each group.
The performance of students registered for the graduate course will
be evaluated in five areas:
Undergraduate students' performance will be evaluated in four areas:
Other readings will be assigned. In particular, articles are from
sources such as the October 2001 issue of the CACM and the proceedings
of the Aspect-Oriented Software Development
Conference.
Students enrolled in the graduate course will also be expected to acquire additional information through library research.
Classes begin Monday, 12 March 2012.
The chart below has some open slots in the Topic column. These are the times
for graduate student project presentations. Other notes and even
possible assignment changes will appear throughout the quarter.
| Week # |
Topic |
Assignments |
Notes, Links |
|---|---|---|---|
| 1 |
Background |
Review course description |
|
| Design pattern concepts |
1. Java - Warmup - sorts
comparison |
G.O.F. + Interceptor |
|
| 2 |
Introduction to aspect
orientation |
lab 1 due | |
| AspectJ |
2. AspectJ: AO decorator for
sorts comparison |
||
| 3 |
AspectJ |
|
|
| @AspectJ |
|||
| 4 |
Static features of AspectJ |
3. AspectJ: Object caching |
lab 2 due |
| Example application: thread pool |
|||
| 5 |
Example application: state
sequence checking |
|
lab 3 due |
| AO in Python |
|||
| Dynamic AspectJ |
|||
| 6 |
Hyper/J |
4. Python: decorators -
privilege levels |
|
| Spring |
|||
| 7 |
Aspect-Oriented Design (2
articles) |
|
lab 4 due |
| DemeterJ (1 article) |
|||
| 8 |
|
5. (undergrads only) Business
Rules/Workflow |
|
| |
|
||
| 9 |
|
lab 5 due | |
| 10 |
|||
| finals |
The final exam will take place on the 11th week at the usual class time in the usual class room. Whether it will happen on Monday or Wednesday depends on whether the graduate student presentations are completed in week 10.
Do not make plans to leave town before Thursday, May 17th.