COS 225 - Introduction to Object-Oriented Programming and Design     

Larry Latour
Spring, 2008
Course Description:
Introduces the student to the fundamental principles of object-oriented design and programming using a high-level object-oriented language. Focuses on the specification, design, and implementation of classes and the interactions between classes. Covers more advanced object-oriented concepts such as inheritance, abstract classes, and polymorphism
Place and Time:
Tuesday/Thursday, 9:30am-10:45am, Room 310 Boardman
Instructor:
Larry Latour, Assoc. Prof., Dept. of Computer Science
Office: 222 Neville Hall
Tel: 581-3523
Email: Firstclass (Larry Latour) or larry_latour@umit.maine.edu
Office Hours: Tuesday/Thursday 11:00am-12:00noon
Textbook:
An Introduction to Programming and Object Oriented Design Using Java 5.0(TM), Second Edition, Jaime Nino and Frederick A. Hosch, John Wiley & Sons, Inc., 2005. (Note: There currently is a third edition that is just now available. We are using the second edition, available in the UMaine bookstore. If you get an online copy, be sure to specify the second edition!)

Course Outline:

The course outline draws from the required text
1. Introduction to Object-Oriented Software Design and Data Abstraction, Chapters 0 and 1
Object oriented software systems, objects, values, classes, introduction to Java
2. Simple Class Design, Chapter 2
Clients and Servers, design diagrams, examples, Java: arithmetic expressions, organizational structure, packages, import statements.
3. Designing Interacting Classes, Chapter 3
Examples, testing, Java local variables, static and final features.
4. Conditions, Chapter 4
Preconditions, postcondtions, invariants, conditional expressions, reference vs. object equality.
5. Lists: An Introduction to the Java Library, Chapter 12
Containers, Interfaces, and Implementations, the specification of list as a type of container, list algorithms, element equality.
6. Arrays: Implementing Lists with Array Implementations, Chapter 13
Arrays and array indexes, array variables, array creation, and array components, array algorithms, array instances.
7. Programming for Change, Chapter 7
Server/Client independence, likelihood of change, structure of user interface, iteration, I/O.
8. System Design, Chapter 8
The software lifecycle, functional system specification, class structure as overall system design, algorithm design as implementation
9. Programming by Contract and Interface Details, Chapters 5 and 9
Contracts, assert statements, and defensive programming, the role of abstraction in specification, types and subtypes, contractual requirments, design and implementation strategies.
10. Inheritance, Chapter 10
Generalizing classes, extension, inheritance, and subtyping, method overloading, overriding, and polymorphism, class extension and composition, public, private, protected, and package private features, Javas scoping.
11. Modeling with Abstraction, Chapter 11
The role of interfaces, abstract classes, and concrete classes, subclasses and protected, the proper use of class extension and composition.
12. Testing, Chapter 6
Functional vs. Unit Testing, implementation driven testing vs. test driven implementation, test plans.
13. Failures and Exceptions, Chapter 15
Program and method failure, throwing and catching Java exceptions, try-catch blocks, system integration.
14. Swing - Graphical User Interface Construction, Chapter 17
Event driven interface, Swing component and container structure, layout managers, event handling.

Grading:

Grades will be based on the following work:

Students need to complete all exams, the 5 programming projects, the three person group project and all lab assignments in order to be eligible for a passing grade of D or better. No makeup exams are given unless the circumstances warrant. Work will only be accepted if reasonable care and effort on the part of the student is evident.

Important: All programming project work (1) must be complete, (2) must be type-written, (3) must have a cover page containing the student's name, class, programming project number, and (4) must be stapled in the upper left-hand corner. No hand-written work (except hard to generate diagrams) or fancy covers are accepted.


Last updated: 1/11/08