Text: Object-Oriented Software Engineering, Lethbridge and Laganiere
Recommended: Big Java, Horstmann
Core
Java, v.1, Horstmann
Design Patterns, Gamma, Helm, Johnson, Vlissides
Class: MW 2:45-4:00 312 McGregory
Lab: Mon 4:00-6:00 pm 310 McGregory
Office Hours: By appointment 303 McGregory
The goal of this course is to learn about the process of developing large software systems, from the client's initial need to delivery of a tested and working system. This process includes analysis of the client's needs, development of precise specifications, design of the system, detailed design, development of tests for different stages of development, implementation (coding and integration), testing, and deployment. This is not a course on coding large programs; it is a course on the whole process, of which coding is a small part.
We will work with object-oriented design and programming, so we will need to develop an understanding of the essential ideas of object-oriented methods for design and coding. We will use Java as the target language. We will use UML (Unified Modeling Language) to describe our models and designs. We will use the tool Poseidon to develop UML diagrams. The last part of the course will be the development of a moderate size design, with the class working as a team. There will be programming labs during the course, but the final project will have as its objective a complete specification and design for a project, not an implementation!
Work Journal - a journal of all work that you do for this course, including time spent, and evaluation of co-workers (15%)
Labs - there will be several labs early in the course designed to learn about the tools to be used (30%)
Quizzes and Homework - there will be regular online quizzes (using Blackboard) and homework on the reading (25%)
Project work - the class will work together as a software development team on a major project (30%)