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?)