Topics

Here are some topics we may cover as the semester progresses. Please note that there may be assigned readings from web sources or handouts in addition to the textbook.

  1. Introduction
  2. Design criteria
  3. Design principles
    • Information hiding
    • Low coupling and the Law of Demeter
  4. Design notations: UML
  5. Object-oriented design patterns
    • Goals
    • Patterns: Visitor, Observer, etc.
  6. Refactoring
    • Goals
    • Patterns: Pull-up Method, etc.
    • Identifying Refactoring Candidates
  7. Architecture Patterns
    • Goals of Software Architecture
    • Architectures: Model/View/Controller, etc.
  8. Java
    • Java generics, defining generic classes, using bounded polymorphism
    • Advanced Java language features
  9. Concurrency
    • Threads, synchronization
    • Concurrency design patterns
    • concurrency utilities and abstractions
  10. Distributed computing
  11. Security

Web Accessibility