Course Outline

Overall Outline of Topics (subject to revision)

  • organization, motivation, introduction (1 week)
    • what makes software good?
    • requirements: functional vs. nonfunctional
    • the importance of testing
  • basics of object-oriented programming (2 weeks)
    • semantics: reference vs. value, equality vs. identity
    • types and classes: relationships, polymorphism
    • code organization: member access, packages/namespaces
  • agile development process (1 week)
    • overview
    • testing
    • refactoring
    • continuous integration and delivery
  • object-oriented design principles (2 weeks)
    • overview
    • SOLID
    • designing with interfaces
  • agile object-oriented modeling (2 weeks)
    • main UML diagrams: class, state machine, sequence
    • archetypes and colors
  • software design patterns (2 weeks)
    • key patterns from APPP and HFDP
  • concurrent programming (3 weeks)
    • events
    • threads
    • sharing
  • distributed programming (1 week)
    • overview and principles
    • connecting to web services

Typical structure of a weekly session

  • OOPUJ or APPP topics
  • project discussion and related topics
  • pair/group presentation or other activity

Typical assignments over a two-to-three-week period

  • reading
  • listening to SE Radio episodes
  • programming project
Comments