2. Course Outline¶
2.1. 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 HFDP
key idioms from EJ3e
concurrent programming (3 weeks)
events
threads
sharing
distributed programming (1 week)
overview and principles
connecting to web services
2.2. Typical structure of a weekly session¶
EJ3e or HFDP topics
project discussion and related topics
pair/group presentation or other activity
2.3. Typical assignments over a two-to-three-week period¶
reading
listening to SE Radio episodes
programming project