We will begin by trying to understand the architecture of the Web -- what it got right and, occasionally, what it got wrong, but most importantly why it is the way it is. We will continue by considering what it means to build a program on top of the Web -- how to write software that both fairly serves its immediate users as well as the developers who want to build on top of it. Too often, an API is bolted on top of an existing application, as an afterthought or a completely separate piece. But, as we'll see, when a web application is designed properly, APIs naturally grow out of it and require little effort to maintain. Then we'll look into what it means for your application to be not just another tool for people and software to use, but part of the ecology -- a section of the programmable web. This means exposing your data to be queried and copied and integrated, even without explicit permission, into the larger software ecosystem, while protecting users' freedom. Finally, we'll close with a discussion of that much-maligned phrase, 'the Semantic Web,' and try to understand what it would really mean and then go on to the Concept Web.