Terms and Conditions:
Philip Greenspun wrote:This book is available on the Web, at no charge to readers or other universities that adopt the course, at a permanent URL: http://philip.greenspun.com/seia/ . If you don't like it, the authors will happily refund your purchase price.
This is the textbook for the MIT course Software Engineering for Internet Applications
. The most concise statement of the course goal is that "The student finishes knowing how to build amazon.com by him or herself."
The "student knows how to build amazon.com" statement, can be broken down in terms of principles and skills. The fundamental difference between server-based Internet applications and the desktop applications that students have already learned to build is that server-based applications have multiple simultaneous users. Coupled with the unreliability of networks, this gives rise to the problems of concurrency and transactions. Stateless communications protocols such as HTTP mean that the student must learn how to build a stateful user experience on top of stateless protocols. For persistence between clicks and management of concurrency and transactions, the student needs to learn how to use the relational database management system. Finally, though, this goes beyond the simple standalone amazon.com-style service, students ought to learn about object-oriented distributed computing where each object is a Web service.
This textbook teaches the students the skills to take vague and ambitious specifications and turn them into a system design that can be built and launched within a few months, with the features most important to users and easiest to develop built first and the difficult bells and whistles deferred to a second version. The students will also learn the skills to test prototypes with end-users and refine their application design once or twice within even a three-month project.
The "student knows how to build amazon.com" statement can also be recasted in terms of technologies used. By the time someone has finished reading and doing the exercises in this textbook, he or she will understand HTTP, HTML, SQL, mobile browsers on telephones, VoiceXML, data modeling, page flow and interaction design, server-side scripting, and usability analysis.
The course is intended for juniors and seniors in computer science. This textbook assumes that readers know how to write a computer program and debug it. This textbook does not assume knowledge of any particular programming languages, standards, or protocols.
Other people who might find this book useful include the following:
- professional software developers building online communities or other multi-user Internet applications
- managers who are evaluating packaged software aimed at supporting online communities -- various chapters contain criteria for judging the features of products such as Microsoft Sharepoint or Microsoft Content Management Server
- university students and faculty looking to add some structure to a "capstone" project at the end of a computer science degree
:smile: "If you build web applications, or work with people who do, I highly recommend this book."
:smile: "If you're new to building web applications and want a balanced perspective on the engineering challenges involved -- from understanding user needs to data modelling to scaling gracefully -- this book is a great place to start."