Overview

This class will focus on design and development of large pieces of software. By the end of the course, you should be able to execute the following tasks:

    • take a set of general requirements for an application;
    • design an implementation to meet the requirements;
    • identify and learn any tools necessary to complete the implementation;
    • produce a well-tested and bug-free application.

What are the applications or services you use daily?

Some of these applications are standalone pieces of software that you download or install from a CD and some of them are applications that are provided by a remote server and are accessed over the Internet. In this class, we will focus on developing web-based applications. You will iteratively build a Google-like search engine that allows a user to enter a query and returns a set of pages that satisfy the query.

This class will blend practical and conceptual material. We will talk a lot about technologies and how they work in the first few weeks of the semester. We will also talk about some of the fundamental concepts, such as concurrency, that underlie good software design. Finally, we will talk about methodologies and approaches to designing, developing, and testing software.