COS 225 - Introduction to Object-Oriented Programming and Design
- 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
Larry Latour, Assoc. Prof., Dept. of Computer Science
- Office: 222 Neville Hall
- Tel: 581-3523
Email: Firstclass (Larry Latour) or firstname.lastname@example.org
- Office Hours: Tuesday/Thursday 11:00am-12:00noon
- 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.
Grades will be based on the following work:
- 5 individual programming projects - 5 x 5% = 25%
- 1 semester three person group project - 10%
- preliminary exam 1 (1 hr. 15 min.) - 14%
- preliminary exam 2 (1 hr. 15 min.) - 14%
- final exam (2 hrs.) - 23%
- class and lab attendance, assignments, and participation (approximately 1 each week) - 14%
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