Week 1- Course overview
- Organizational matters
- Development environment and methodology
- Software configuration management
- Test-driven development
- Language considerations
- Projects 0a and 0b
Week 2Week 3Week 4Week 5- Test 1 discussion
- Project 1b discussion
- Compilation toolchain phases overview
- source code (string stored in file)
- lexical analysis
- sequence of tokens
- parsing
- abstract syntax tree
- optimization
- transformed abstract syntax tree
- code generation
- machine code or byte code
Week 6- Project 1b discussion: rotation
- Parsing
- Regular languages
- Scala regex extractors (26.7)
- Context-free languages
- Scala parser combinators (33)
- Expressions examples: Java and Scala
- Domain model design choices
- composite/algebraic types where nodes are responsible for attributes and linking
- flat domain records with general-purpose collections for linking
- Expressions examples: Java and Scala
- Related design patterns
- Simple imperative language
- structure: assignment, repetition, and sequence of statements
- behavior: validity checking, evaluation, etc.
- Java example
- Scala example
- Simple imperative language (continued)
Week 9Week 10
- Test 2 discussion
- implementing functions and methods
- Project 2b announcement
- Project 2a discussion
Week 11
Week 12- Project 2b discussion
- Concurrency
Week 13Thanksgiving Day: no class Remainder under construction for fall 2011Week 14Week 15- Test 3 discussion
- Concurrency
- What's next?
- Lightweight containers and dependency injection
- Decorators, Dynamic Proxy, Aspect-oriented programming
FinalAdditional Material on Patterns- Pattern catalogs
- Refactoring to patterns
- Antipatterns
|
|