Schedule

Living document...please stay tuned!

Week 1: 28 Aug

Session

  • organizational matters
  • motivation, including embedded systems
    • brief overview of batch versus event-based programming
  • requirements
    • functional: y = f(x)
    • nonfunctional: additional properties of f, e.g.
      • testability
        • most important nonfunctional requirement
        • allows testing whether functional requirements are met
        • good architecture often happens as a side-effect (APPP pp. 36-38)
      • performance
      • scalability
        • e.g. performance for large data sets: asymptotic order of complexity (big-Oh) in terms of input size n
      • reliability
      • maintainability
      • static versus dynamic NFRs
  • discussion of projects 1 and 2
  • course software with demo
  • prerequisite assessment

Reading/Podcasts

Week 2: 4 Sep

Session

  • data structures
    • linear vs. nonlinear
    • position-based vs. policy-based (see also here)
    • performance
    • tying data structure choices to requirements
  • data abstraction
    • addressing: pointers, references
    • aggregation (product types): structs, records
      • example: node in a linked list
    • variation (sum types): tagged unions, multiple implementations of an interface
    • example: mutable set abstraction
      • add element
      • remove element
      • check whether an element is present
      • check if empty
      • how many elements
    • several possible implementations
      • reasonable: binary search tree, hash table, bit vector (for small underlying domains)
      • less reasonable: array, linked list
      • see also here
  • group activity: problem 4 on prerequisite assessment

Reading/Podcasts

  • OOPUJ chapters 4, 5

Week 3: 11 Sep

Session

Reading/Podcasts

Week 4: 18 Sep

Session

Reading/Podcasts

  • same as weeks 2 and 3
  • APPP chapters 1-3

Week 5: 25 Sep

Session

Reading/Podcasts

Week 6: 2 Oct

Session

  • announcements
    • team assignments posted on Sakai and Piazza
    • team repositories: cs313s13teamN
    • project 3 expectations
  • discussion of test 1
  • dependency analysis
  • project 3 detailed discussion
  • group activity: requirements analysis and static model for project 3

Reading/Podcasts

  • same as week 5
  • Programming Android chapters 1-5

Week 7: 9 Oct

Session

Reading/Podcasts

Week 8: 16 Oct

Session

Reading/Podcasts

  • same as week 7

Week 9: 23 Oct

Session

Reading/Podcasts

Week 10: 30 Oct

Session

Reading/Podcasts

  • same as week 9

Week 11: 6 Nov

Reading/Podcasts

Week 12: 13 Nov

Reading/Podcasts

  • Programming Android chapters 6 and 8
  • APPP chapter 10-12

Week 13: 20 Nov

Reading/Podcasts

Week 14: 27 Nov, NO CLASS (Thanksgiving break)

Week 15: 4 Dec

  • announcements
    • IDEA survey reminder
    • Chicago ACM presentation 11 Dec reminder/relationship with this course
  • test 3 discussion
  • concurrency (continued)
  • example: prime number checker
    • direct execution
    • asynchronous (background) execution
    • cloud-based execution
  • project 5 and 6 discussion
    • dot example
    • ecosystem example
    • architecture: MVC
    • suggested order of steps
    • semaphores
  • guest presentation with Q&A: Dave Turner from Waitbot

Reading/Podcasts

Final Session: 11 Dec

Reading/Podcasts

    Comments