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 105 Donald P. Corbett Hall (Business Building)
Larry Latour, Assoc. Prof., Dept. of Computer Science
- Office: 222 Neville Hall
- Lab: 224 East Annex
Email: Firstclass (Larry Latour) or firstname.lastname@example.org
- Office Hours: Tuesday/Thursday 11:00am-12:15pm
- An Introduction to Programming and Object Oriented Design Using Java 5.0(TM),
Jaime Nino and Frederick A. Hosch, John Wiley & Sons, Inc., 2005.
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.
Grades will be based on the following work:
- 7 programming projects - 7 x 5% = 36%
preliminary exam 1 (1 hr. 15 min.) - 12%
preliminary exam 2 (1 hr. 15 min.) - 12%
- final exam (2 hrs.) - 25%
- lab attendance and assignments (1 each week) - 15%
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