Developing interactive Web programs poses unique problems. Due to the limitations of server protocols, interactive Web programs
(conceptually) consists of numerous “scripts” that communicate with each other through Web forms and other external storage.
For simplistic applications, one can think of such scripts as plain functions that consume a Web page (form) and produce a
Web page in response. For complex applications, this view leads to subtle, and costly, mistakes. These lecture notes explain
how to overcome many of these problems with a mostly functional programming style that composes scripts via (hidden) first-class
continuations.