COS 225 - Introduction to Object-Oriented Programming and Design     

Larry Latour
Spring, 2006
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 105 Donald P. Corbett Hall (Business Building)
Instructor:
Larry Latour, Assoc. Prof., Dept. of Computer Science
Office: 222 Neville Hall
Lab: 224 East Annex
Tel: 581-2260
Email: Firstclass (Larry Latour) or larry_latour@umit.maine.edu
Office Hours: Tuesday/Thursday 11:00am-12:15pm
Textbook:
An Introduction to Programming and Object Oriented Design Using Java 5.0(TM), Jaime Nino and Frederick A. Hosch, John Wiley & Sons, Inc., 2005.

Course Outline:

The course outline draws liberally 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. Programming by Contract, Chapters 5
Contracts, assert statements, and defensive programming.
6. Testing, Chapter 6
Functional vs. Unit Testing, implementation driven testing vs. test driven implementation, test plans.
7. Programming for Change, Chapter 7
Server/Client independence, likelihood of change, structure of user interface, iteraqtion, I/O.
8. Putting a System Together, Chapter 8
The software lifecycle, functional system specification, class structure as overall system design, algorithm design as implementation
9. Interfaces, Chapter 9
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. Arrays, Chapter 13 (part)
Arrays and array indexes, array variables, array creation, and array components, array algorithms, array instances.
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
Event driven interface, Swing compoetn and conteiner structure, layout managers, event handling.

Grading:

Grades will be based on the following work:

Students need to complete all exams, the 7 programming projects, 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/16/06