This course will examine the techniques and tools used in the development of large software systems. The student will be introduced to methods for the organization and construction of modular systems, the manipulation of files, user interface (textual and graphical) design and implementation and fundamental database concepts. Lectures focus on issues of coding style, pragmatic approaches to the construction of software, and the application and appropriate use of the wealth of software tools available for system development. The assignments complement this material by permitting the student to explore these concepts through a large scale cumulative implementation.