...composed of an indefinite, perhaps infinite number of hexagonal galleries...

© 1994-2017. David Sklar. All rights reserved.

Course Description for Building Web Applications

[ Course Home | Syllabus ]

In a relatively short time, interactive web applications have become indispensable tools for banking, shopping, and even online classrooms. Much new software development focuses on building these types of programs instead of traditional "standalone" applications. This class explores the technical and logistical concerns of planning, constructing, and deploying a data-driven interactive web site. Students have the opportunity to apply the principles learned in computer science classes to real-world development problems, merging theory with current practice.

In addition to weekly technical topics, this class explores two thematic areas. First, applied software engineering requires constant consideration of compromises among the constraints that shape development, such as time, space, and money. Various constraints limit what a particular computer program (and a particular computer programmer) can accomplish. Each should be resolved in the most appropriate way for a particular application. Examples discussed in the class include:

Second, web applications embody a distributed and disconnected model. A word processor running on a desktop PC focuses on a single user, a user who sits at that desktop PC. In contrast, a web application focuses on many users at once, users who interact over a network with the application from far-flung locations. Not only must a web application handle distributed users, but often must itself interact with other web applications to get its work done. For example, a web page with ads is usually assembled from bits and pieces that come from different places - the ads from one server and the main content of the page from another server. The networked nature of both the data producers and consumers in a web application affect every stage of its development.

Through readings, discussion, and coding, students examine how the necessary components of a web application are influenced by these two principles. In addition to these ongoing discussions, the class covers technical fundamentals on a week-by-week basis. These include relational databases, data modeling, form-based interactivity, overcoming statelessness with cookies, user management, application architecture, logical security, and using web services. Additionally, the course looks at larger issues in application design and deployment, such as caching, traffic analysis, interface design, usability testing, collaborative development, and physical security.

Students' progress is evaluated in several ways: six homework assignments in the first half of the semester, participation in class discussions, and a final project. For the project, each person constructs a full-featured web application that embodies the technical concepts introduced in the class. Students complete Building Web Applications with the knowledge and experience to balance theory and practical constraints in software development.