Teaching Staff

Instructor

Phillip J. Windley, Ph.D.
phil@windley.org
AIM: PJWindley
2226 TMCB
801.422.6465
Office Hours: 3:30-4:20pm, MW on a 90% availability basis

Feel free to contact me on AIM at anytime. If I can't talk for some reason, I'll let you know.

Teaching Assistants

Sam Curren
2204 TMCB
ICQ: 231636
AIM: samcurren
Office Hours: This Week

Prerequisites

  • HTML and web basics
  • Operating systems (CS345), programming languages (CS330)

Objective

Give students the basic knowledge required to architect and build large-scale Internet applications. Students will learn what requirements are placed on an large-scale Internet application, how they are structured, what components come into play, and implement, as a class project, an large-scale Internet application. Implementing an large-scale Internet application is an exercise much larger than programming and skills other than programming come into play. This course will emphasize the exposition and development of those skills.

Extended Course Description

The World Wide Web (WWW) has exploded in recent years and consequently so has the need for computer scientists who understand how to design and build large web-based applications. Thus, this class will emphasize web-based systems and the functionality usually associated with a web-based system, although the techniques are more general that simply building large web applications.

This course emphasizes two things above all else:

  1. Distributed computation as a method for achieving system requirements
  2. Large-scale computing

These points differentiate this class from a course in concurrent or parallel programming where the emphasis is on the how processes communicate and coordinate their efforts to arrive at some solution to a problem, usually in less time than an single sequential process could. This course is not about programming per se, but rather about architecting systems. The goal of distributing the computation is not just better performance (although that is always at the heart of any problem) but to build systems that are highly

  • Flexible,
  • Reliable,
  • Scalable,
  • Secure, and
  • Available

By their very nature, designing and building large-scale Internet applications requires skills and knowledge not generally associated with smaller scale or non-distributed applications. These include knowledge of how networks operate, how computer systems work and are structured, security, how database can be exploited effectively, etc.