Weekly Schedule

Week 1

Week 2

Labor Day: no class

Week 3

Week 4

Week 5

  • Project 1c discussion
  • Project 2a discussion
  • Brief process discussion
    • automated regression testing
    • refactoring
    • continuous integration
  • Code smells and refactoring intro
  • Test 1

Week 6

Week 7

Fall Break: no class

Week 8

  • Project 2b discussion
  • Strategy pattern (HFDP chapter 1)
  • Observer pattern (HFDP chapter 2)
  • Decorator pattern (HFDP chapter 3)
  • Design patterns intro (HFDP chapter 1)
  • Iterator pattern (HFDP chapter 9) - brief

Week 9

  • Organizational matters: updated reading list
  • Project 2b discussion
  • Iterator pattern (HFDP chapter 9) - brief wrapup
  • Singleton pattern (HFDP chapter 5)
  • Version control with Mercurial and Bitbucket

Week 10

  • Object-oriented programming (continued)
  • Project 2b discussion
  • Test 2
Week 11
  • Test 2 discussion
  • Object-oriented programming (continued)
    • constructors (YB 4.7)
    • inheritance (YB 4.9)
Week 12
  • Inheritance
    • example: dynamic binding vs. static binding of super/base
  • Composite pattern (HFDP chapter 9)
    • shapes example
  • Visitor pattern (HFDP chapter 14 p628)
    • example from project
    • relationship with Iterator
  • Adapter pattern (HFDP chapter 7)
  • Modeling with archetypes and color (Coad)
  • Project 2c discussion
Week 13
  • Project 2c discussion
  • Modeling with archetypes and color (continued)
  • Factory pattern (HFDP chapter 4)
  • Command pattern (HFDP chapter 6)
  • Test 3

Week 14

Week 15

  • Project 2d discussion
  • Concurrency (continued)
    • producer-consumer problems, shared print queue
    • sweet spot: guarantee safety, maximize liveness
    • insufficient liveness: deadlock, starvation, livelock
    • thread synchronization: documentation discussion
    • patterns:  Lea Thiruvathukal Schmidt Goetz et al.
    • alternative approaches
      • actor model: Erlang, Scala, etc.
      • software transactional memory (STM)
    Comments