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