AT 70.12 Web Application Engineering Semester: August Rationale: The World Wide Web has already revolutionized the way we work, learn, and publish. The Web not only dramatically increases the size of the potential audience for our content, but also makes it possible to bring physically disparate people together into more tightly-knit communities than hitherto possible. In this highly distributed and collaborative environment, Web application developers face the triple challenge of 1) system complexity, 2) massive concurrency, and 3) a fickle user base always ready to abandon one site for the next. In this course, students will learn to cope with these challenges by using appropriate technology and a user-centered approach to the design and construction of large-scale Web applications. AT 70.12 is a project-oriented course in which student teams will be paired with client organizations needing online community collaborative learning and information sharing systems. Using a Web server, programming language, and relational database of their own choice, students will take the system from an initial concept through the stages of requirements specification, design, implementation, and usability testing. Along the way, focused laboratory sessions will give students experience with specific technologies and techniques useful across many applications, and lectures will introduce students to the most recent developments in enterprise application frameworks, middleware, and thick clients. Students successfully completing AT 70.12 will be competent database-backed Web application developers capable of designing, deploying, and maintaining large-scale services such as amazon.com. Catalog description: Engineering of large-scale Web-based applications. Credits: 3(2-3) Prerequisite: Experience programming in a high-level programming language, e.g. C or Java. Course outline: 1. Introduction 2. Basic technology for web applications 1. Relational database connectivity 2. Server-side scripting languages 3. XML 3. Service planning 1. Information architecture design 2. Software architecture design 4. User management 1. Secure user authentication 2. Access control 3. Content ownership 5. Content management 1. Document management 2. Comment/discussion management 6. Usability testing 7. Legacy applications 8. Voice and mobile access 9. Search engines 1. Indexing for full-text search 2. Controlling how public search engines index a site 10. XML-based Web services 11. Enterprise application architecture 12. Thick client frameworks Laboratory sessions: Configuring Linux, Apache, PHP, and PostgreSQL. Database-backed Web application programming. XML in Web applications. Templates and style sheets. Secure client authentication. Content management. Discussion forums. Mobile access to Web applications. Full-text search. Web services. Service Oriented Architectures. AJAX. Java EE and Enterprise Java Beans. Ruby on Rails. Textbook: Software Engineering for Internet Applications, by Eve Andersson, Philip Greenspun, and Andrew Grumet, MIT Press, 2006. Available online: http://philip.greenspun.com/seia/ Reference Materials: Online manuals for open-source web technology tools. The Design of Everyday Things, by Don Norman, Basic Books, 2002. Designing Web Usability: The Practice of Simplicity, by Jakob Nielsen, New Riders Press, 1999. Web Design in a Nutshell, 2nd ed., by Jennifer Niederst. O'Reilly, 2001. Building Scalable Web Sites, by Cal Henderson, O'Reilly, 2006. Web Engineering: Managing Diversity and Complexity of Web Application Development, Murugesan & Deshpande, eds., Springer, 2001. Dos and Don'ts of Client Authentication on the Web, by Kevin Fu, Emil Sit, Kendra Smith, and Nick Feamster, Proceedings of the 10th USENIX Security Symposium, 2001. Patterns for Web Applications, by Michael Weiss, Patterns Languages of Programming (PLoP), 2003. Information Architecture for the World Wide Web: Designing Large-Scale Web Sites, by Louis Rosenfeld and Peter Morville, O'Reilly, 2002. SQL for Web Nerds, by Philip Greenspun. Available online: http://philip.greenspun.com/sql/ Web Services Essentials: Distributed Applications with XML-RPC, SOAP, UDDI & WSDL, by Ethan Cerami. O'Reilly, 2002. Programming Web Services with XML-RPC, by Simon St. Laurent, Joe Johnston, and Edd Dumbill. O'Reilly, 2001. XML in a Nutshell, 3rd ed., by Elliotte Rusty Harold and W. Scott Means. O'Reilly, 2004. Agile Web Development with Rails, by Dave Thomas and David H. Hansson, Pragmatic Programmers, 2006. Grading System: Project and lab work 60%, Midterm exam 20%, Final exam 20% Instructor: Dr. Matthew N. Dailey