Weekly Schedule

Week 1

  • Course overview
  • Organizational matters
  • Development environment and methodology
    • Software configuration management
    • Test-driven development
  • Language considerations
  • Projects 0a and 0b

Week 2

Week 3

Week 4

Week 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 examplesJava 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

Week 7

Week 8

  • Simple imperative language (continued)

Week 9

Week 10

  • Test 2 discussion
  • implementing functions and methods
  • Project 2b announcement
  • Project 2a discussion

Week 11

    Week 12

    Week 13

    Thanksgiving Day: no class

    Remainder under construction for fall 2011

    Week 14

    Week 15

    • Test 3 discussion
    • Concurrency
    • What's next?
      • Lightweight containers and dependency injection
      • Decorators, Dynamic Proxy, Aspect-oriented programming

    Final

    Additional Material on Patterns

    Comments