CASE Tools
   Iteration 1
   Iteration 2
   Iteration 3
   Iteration 4
   Iteration 5
   Iteration 6

Object Oriented Software Engineering Syllabus

The lecture notes are linked below. Readings are listed [in brackets]. Readings will generally not be explicitly mentioned in class.
"CJ" abbreviates Core Java, "TIJ" is the on-line Thinking in Java text (Local Copy). "Sun Docs" are from the Sun documentation tree, and "Sun Tutorial" are from the Sun Tutorial tree. Other references not listed here are found on the course resources page.

There will be 26 lectures. The dateline of what will be covered when.

First day of class (in case you missed it)

(Java Background)

This course assumes experience with Java, including the following items which will not be covered in lecture. If you don't know some of these topics, review them early in the semester.
  1. Object-Oriented Programming Foundations [TIJ Ch.1-2]
  2. The Java language core [CJ I, TIJ Ch. 3-7]
  3. Streams and files [CJ I Ch. 12, TIJ Ch. 12, Sun Tutorial]
  4. Multithreading [CJ II Ch.1, TIJ Ch.13, Sun Tutorial]
  5. Exceptions [CJ I Ch.11, TIJ Ch. 9, Sun Tutorial]
  6. Packages and Interfaces [CJ I p. 153, CJ I Ch.6, from TIJ Ch. 5, from TIJ Ch.8, Sun Tutorial]
  7. Java's Inner Classes [CJ I Ch.6, from TIJ Ch8, Sun Tutorial]
  8. Java JAR files [Sun Docs, Sun Tutorial]
  9. The Java collection framework [CJ II Ch.2, Sun Docs, Sun Tutorial, TIJ Ch. 11]

Java GUI's: AWT and Swing

  1. The Abstract Window Toolkit (AWT) [CJ I Ch.7-8, CJ II Ch.7, Sun Docs]
  2. Swing components [CJ I Ch.9, CJ II Ch.6, Sun Docs, Sun Tutorial, TIJ Ch 14]

Software Development Methodology

  1. Software Development Overview[Martin 1-2, UML Distilled 1-2]
  2. The Universal Modeling Language (UML) [Martin Appendix A and B; UML Distilled Chapters 3-10]
  3. Requirements Formulation and Project Planning [Martin 3,7]
    • Domain modeling
    • Stories a.k.a. use-cases [UML Distilled Chapter 3]
    • Planning iterations and releases [Martin 3]
  4. Design
    • Discovering initial classes: CRC and other tools
    • Stories
    • Class design
    • Software Architecture design: Packages, components, deployment [Packages: Martin 20]
    • Design Examples [Weather: Martin 27; Payroll: Martin p.147-150 and Ch. 17-18; Break Planner: Handout]
    • Design Patterns and other design principles [Martin all over the book---see p.xxii for a listing; (Design Patterns book); Martin's Design Principles, SRP/OCP/LSP/DIP/ISP: Martin 8-12]
  5. Testing [Martin 4]
  6. Implementation
    • Advanced Java Coding [Effective Java book]
    • Refactoring [Martin 5 (6), Fowler's Refactoring book]
    • CASE Tools [OOSE CASE tools resources page]
      This is a self-study topic. There will be review sections covering the various tools.

Advanced Java Features

  1. Dynamic Class Loading [CJ II pp. 702-713, Sun Docs, Sun Tutorial]
  2. The Reflection library [Sun Docs, Sun Tutorial]
  3. Object Serialization [CJ II p. 664, Sun Docs] and Remote Method Invocation (RMI) [CJ II Ch.5, Sun Docs, Sun Tutorial]
  4. The Java Security Architecture [CJ II Ch.9, Sun Docs, Sun Tutorial, Securing Java]
  5. Web services in Java
  6. Under the hood of the JVM

Last modified: Fri Sep 23 12:24:04 EDT 2005