|CPSC 329||Software Development||Fall 2008|
This course continues the study of programming by focusing on software design, development, and verification - the skills beyond fluency in a particular language which are necessary for developing large, reliable programs. Topics include object-oriented design, using APIs, and testing and verification. Techniques common in modern software development will also be studied. Specific techniques may include GUIs and event-driven programming, multi-threading, client-server networking, fault tolerant computing, stream programming, and security. This course is required for the major in computer science. It includes a required lab component.
|Course Web Page||
You are expected to regularly consult the course web page for announcements, assignments, and most handouts.
Head First Object-Oriented Analysis and Design
Required: Head First Design Patterns
Recommended: Object-Oriented Design and Patterns, 2nd ed.
We will make limited use of the third text (Horstmann). A copy is on reserve if the library if you wish to avoid purchasing it.
Additional material will be handed out or posted on the course webpage.
|Rationale & Aims||
This course completes the programming sequence begun by CPSC 124 and 225 - CPSC 124 introduces the basic ideas of programming along with the syntax and semantics of the Java programming language, CPSC 225 focuses on common data structures as the organizational building blocks of programs, and this course addresses program design, testing, and specific topics relevant to modern software.
By the end of the course, the successful student should be able to:
|Course Content Overview||
The course material can be roughly divided into three areas: object-oriented design, implementation and testing, and modern software development techniques.
Object-Oriented Design: Object-oriented design is the main theme of this course. Design is what comes before you start writing tons of code, and thinking carefully about the design is crucial for creating good software. Specific topics include:
Implementation and Testing: A good design greatly simplifies the task of implementing the program - but you still have to start somewhere, and this can be daunting in a large project. In addition, code must be thoroughly tested to ensure to that it works correctly in both expected and unexpected situations. Specific topics include:
Modern Software Development Techniques: The remainder of the course will look at several topics that come up frequently in modern software, including:
The emphasis will be on using the Java API for these tasks, though some general concepts will be considered. These topics will also serve as illustrations for some of the design patterns discussed.