Old schedule with more links to additional external resources Week 1- organizational matters
- prerequisite
- texts and resources
- discussion group
- ground rules
- subscribe to site changes
- project 0
- join discussion group
- form teams of size three
- required software
- cloud computing
- SaaS
- PaaS
- Amazon AWS, Google AppEngine, Azure
- A/PaaS: Heroku, Cloud Foundry
- IaaS
- software development process (light-weight Fowler version)
- finish at 18:15 -> ACM presentation upstairs
Week 2- organizational matters
- teams
- Bitbucket
- reading materials
- what to work on
- architectural overview of the web: book TOC
- 10-minute break
- Scala crash course
Week 4- Scala crash course (cont.)
- domain-driven development
- 10-minute break (at some point)
- software build management
- phases
- dependencies
- examples: Make, Ant, Maven, Ivy, sbt
- examples
- discussion of project requirements and roadmap
Week 5- domain-driven development
- web application concerns (see also articles on Blackboard)
- views
- presentation
- visual styles
- layout
- navigation
- i18n
- controllers
- validation
- authentication
- dynamic behavior/interaction/state
- models
- persistence
- database technologies
- mapping domain object to persistent storage
- testing
- unit testing
- integration testing
- system testing
- acceptance testing
- performance testing
- discussion of project phase 2a
- discussion of project phase 2b
- finish at 18:15 -> ACM presentation upstairs
- project 2b status
- web application architecture and concerns recap
- MVC
- dynamic content generation
- state management in web applications; scopes:
- view
- request
- thread-per-request -> no concurrency issues
- session
- set of related requests -> concurrency issues
- application
- like an umbrella for all sessions
- resource
- concurrency issues pushed into persistence layer
- 10-minute break at 17:20
- Test 1
- test 1 discussion
- more on server-side state management
- sessions
- tradeoff between stateful and stateless sessions, use cases
- guest presentation
SPRING BREAK: No class on Wed 7 MarchWeek 9Week 10- discussion of project phase 3b
- intro to the web presentation layer
- architectural considerations in the web layer
- web application architectures and frameworks overview: MVC versus component-based
- MVC examples: Struts, Stripes, JSF, Spring MVC, Lift, Play
- component-based examples: Tapestry, Wicket
- layout and decoration frameworks
- examples: Tiles, SiteMesh, Play/Twirl
Week 11- Play framework
- Resource-oriented thinking
- Test 2
Week 12- Test 2 discussion
- Play framework
- authentication
- in-depth examples
- client: AuthJAASMaven
- provider: AuthDbSpringMaven
- LinearRegressionStripesMaven (authentication aspects)
- finish at 18:15 -> ACM presentation upstairs
Week 13- Phase 3c discussion
- integration with DDD from phase 3a
- Play examples
- Guest lecture on persistence by Lucas Ward, CTO of Fundspire
- persistence concerns
- Mapping
- orders, users, order entries
- Identity/equality
- Collections/ordering
- list versus set
- relational tables usually unordered
- Associations
- Inheritance
- Transactions
- Validation
- Concurrency
Week 14- Guest lecture on Haskell server-side stack by George Vasels, Loyola
- persistence technologies
- relational databases, JDBC
- object/relational mappers (ORM), e.g., Hibernate
- object databases, e.g., db4o
- NoSQL databases, e.g., CouchDB, MongoDB
- integration with Play and Heroku (need suitable add-on)
- persistence patterns
- Data Source Architectural Patterns
- Object-Relational Behavioral Patterns
- Object-Relational Structural Patterns
- Object-Relational Metadata Mapping Patterns
- examples
- AuthDb*
- LinearRegressionStripesMaven (persistence aspects)
Final- Test 3
- Project presentations
|
|