Living document...please stay tuned!
Week 1: 16 Jan
Session
- organizational matters
- introduction: instructor, TA
- course objectives
- course texts
- discussion forum (mandatory subscription)
- how to get help
- prerequisites and review topics: 170/271 313 overview
- motivation, including embedded systems
- brief overview of 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
- prerequisite assessment
- field trip to the Chicago ACM presentation on Software-Defined Radio
Reading/Podcasts
Session
- announcements
- discussion of projects 1 and 2
- course software with demo
- 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
Session
Reading/Podcasts
Session
Reading/Podcasts
Session
- announcements
- discussion of test 1
- basics of object-oriented programming
- up to subtype polymorphism
- discussion of project 3
- group activity: requirements analysis and static model for project 3
Reading/Podcasts
Session
Reading/Podcasts
Session
- test 2
- announcements
- Android framework
- modeling
- Android examples
- project 4 discussion
Reading/Podcasts
Spring Break: 6 Mar
Week 8: 13 Mar
Session
Reading/Podcasts
Session
- announcements
- Android
- relevant architectural/design patterns
- event listener/callback
- one versus multiple listeners
- State pattern
- group activity: dynamic model for project 4
- project 4 discussion
Reading/Podcasts
Session
- test 3
- detailed discussion of stopwatch example
- project 4 discussion
Session
- announcements
- faculty candidates this Fri and next Mon
- ACM tutorial next week
- project 4 recap
- project 5
- test 3 discussion
- 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
- 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
- opacity
- brief design/architecture glossary
- language construct
- library
- framework
- design idiom
- design pattern
- design principle
- domain-specific language
- software architecture
- separation of concerns
- SOLID and other basic object-oriented design principles ("SOLID + 2")
- project 5 discussion
Reading/Podcasts
Session
- announcements
- SOLID and other basic object-oriented design principles ("SOLID + 2")
- design patterns recap: separation of concerns in an object model
- structure
- arrangement -> Composite
- data -> genericity
- creation -> decoupling client from concrete structure
- behavior
- enhancements -> Decorator, Coad's role objects
- traversal -> Iterator (pull), Visitor (push)
- examples
- design patterns
- concurrency overview
- interleaving
- example
- calculating the number of possible interleavings
- nondeterminism
- race conditions
- key difference between these two examples?
- project 5 discussion
- field trip to the Chicago ACM hands-on tutorial on Agent-based Modeling (bring laptop!)
Reading/Podcasts
Session- announcements
- concurrency: system runs in parallel with its environment
- references
- overview
- physical versus logical concurrency
- CPU-bound versus I/O-bound activities
- run-to-completion versus coordination
- (conflicting) design forces:
- safety
- liveness
- performance
- project 5 discussion
Reading/PodcastsSession- announcements
- Go Bayern!!! Go Dortmund!!!
- TCE reminder: please provide detailed and candid feedback either on TCE form or by email
- book(s)
- choice and order of topics
- projects
- etc.
- GCASR 13 workshop - register by this Thu
- project 6 (optional/makeup/extra credit)
- test 4
- presentations
- concurrency
- degrees of liveness: fairness • starvation • deadlock
- concurrency control mechanisms: Java synchronization, semaphores, ...
- deadlock example
- implementation: processes, threads, reactor pattern
- Android AsyncTask (see prime number checker example below)
- progress reporting
- action upon completion
- cancelation
- can choose size of thread pool
- example
- distributed computing (mostly from a mobile + cloud perspective)
- overview
- performance: throughput, latency, jitter
- cloud
- almost unlimited computational resource (see paper linked below)
- introduces latency and other performance concerns
- usually need local caching for usability (e.g., Google Maps)
- example
- project 5 discussion
- view
- AsyncTask
- cell capacity/semaphores
- project 6 discussion
Reading/PodcastsSession- test 4
- app download (optional)
- please use your Box account to share your apk file with the class (anyone with the link), ideally before the demo session
- project presentations (max 4-5 minutes per team)
- overall app architecture
- terrain architecture
- support for traversal by actor
- support for 2d presentation
- brief demo
- need VGA port or adapter
- emulator running on your laptop
- or device connected to your or my laptop via AirDroid app
- reflection
- journey
- main insights
- main challenges
|
|