COS 225 - Introduction to Object-Oriented Programming and Design     

Larry Latour
Fall, 2010
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:
Lectures are Tuesday/Thursday, 9:30pm-10:45pm, Room 257, Nutting Hall (NOT Neville Hall!). Labs are Monday, 9:00am or Wednesday, 10am in 106 Neville Hall.
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 1pm-2pm or by appointment
Textbook:
An Introduction to Programming and Object Oriented Design Using Java, Third Edition, Jaime Nino and Frederick A. Hosch, John Wiley & Sons, Inc., 2008.

ADA Notice:

If you wish to request an accommodation for a disability, please contact Ann Smith, Director of Services for Students with Disabilities (East Annex, 581- 2319) as early as possible in the term.


Syllabus Acknowledgement:

Acknowledgement that this syllabus has been read and understood: All students must send an email to the instructor acknowledging that they have read and understood the entire syllabus.


Course Outline:

The course outline (not necessarily in the order covered) 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. Failures and Exceptions, Chapter 15
Program and method failure, throwing and catching Java exceptions, try-catch blocks, system integration.
13. 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, homework as assigned, 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.

The Harmonic Mean: The three sections above (projects, exams, and class and lab attendance, assignments, and participation) will be averaged using the weighted harmonic mean as described on the Harmonic Mean Wikipedia Page. Note, as stated on that web page:

"Since the harmonic mean of a list of numbers tends strongly toward the least elements of the list, it tends (compared to the arithmetic mean) to mitigate the impact of large outliers and aggravate the impact of small ones."


Last updated: 8/29/10