next up previous contents
Next: Software Architecture Design Up: Course outlines Previous: Course outlines   Contents

Web Application Engineering

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



Matthew Dailey 2006-11-20