Living document...please stay tuned!
Week 1: 28 AugSession- 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/PodcastsSession- 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/PodcastsSessionReading/PodcastsSessionReading/Podcasts- same as weeks 2 and 3
- APPP chapters 1-3
SessionReading/PodcastsSession- 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
SessionReading/PodcastsSession- announcements
- modeling
- Android framework
- Android examples
Reading/PodcastsSession- test 2
- announcements
- organization for next week: online test and lecture
- Android
- Detailed discussion of testing in clickcounter example
Reading/PodcastsSession- announcements
- test 2 discussion
- relevant architectural/design patterns
- State pattern (APPP chapter 36)
- event listener/callback
- UI architectural patterns
- detailed discussion of stopwatch example
- project 4 discussion
- announcements
- detailed discussion of stopwatch example
- project 4 discussion
- group activity: dynamic model for project 4
- announcements
- agile development principles and process/practices
- refactoring
- introduction: code smells and refactoring
- real-world significance
- most projects legacy/evolve over time
- new members join existing teams
- smells arise
- economy of scope (requirements) versus economy of scale (standardization) (see also this presentation)
- agile design: process, not event: presentation
- design smells: usually subjective, sometimes objective
- rigidity: difficult to change
- fragility: easy to break
- immobility: difficult to reuse
- viscosity (of software, of environment): it is difficult to do the right thing
- accidental complexity: e.g., overdesign
- needless repetition (DRY)
- opacity
- overview of SOLID design principles
- concurrency overview
- project 4 discussion
Reading/Podcasts- Programming Android chapters 6 and 8
- APPP chapter 10-12
- test 3
- announcements
- SOLID and other basic object-oriented design principles ("SOLID + 2"): presentation
- concurrency
- project 5 discussion
Reading/PodcastsWeek 14: 27 Nov, NO CLASS (Thanksgiving break)
- announcements
- IDEA survey reminder
- Chicago ACM presentation 11 Dec reminder/relationship with this course
- test 3 discussion
- concurrency (continued)
- references
- overview
- physical versus logical concurrency
- CPU-bound versus I/O-bound activities
- run-to-completion versus coordination
- (conflicting) design forces:
- safety
- liveness
- performance
- 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- announcements
- rest coming soon
|
|