CR: Stack II Topics Outline
Title
Learning Objectives
- learn basics of modern web applications?
- basics of dynamic languages
- first class functions
- functional programming concepts (non-mutability)
- basics of databases
- data representation
- query languages
- basics of distributed applications
- latency vs. bandwidth
- reliability concerns
- state vs. stateless
Weekly Topics
- Modern web architecture
- HTML, CSS: markup languages
- client-server, stateless vs. stateful servers, HTTP (cookies & other state)
- Server-side scripting: PHP
- Database schemas
- Database query languages & semantics (logic)
- Dynamic memory management (garbage collection)
- lexical and dynamic scoping
- functions as first-class objects, functions that generate other functions
- eval, JSON
- domain-specific languages: SQL
- embedded interpreters
- scalability for data: NoSQL approaches, database caches
- mapreduce
Assignments
- PHP/HTML introduction (dynamic generation of web pages)
- PHP & Databases: simple SQL
- RPC: REST, SOAP, legacy
- runtime generation of client code: PHP->JavaScript (AJAX) + DB
- first-class functions for dynamic code generation (JavaScript) + DB
- closures, scoping + DB
- JavaScript interpreter in Java (Rhino?)
- scalable database? (BigTable-like?)