COS 225 - Introduction to Object-Oriented Programming and Design     

Larry Latour
Spring, 2011
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, 2:00pm-3:15pm, Room 117, Donald P. Corbett Business Building
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 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.
Example: Harmonic mean.
Project 0: Eclipse IDE and Harmonic Mean
2. Simple Class Design, Chapter 2
Clients and Servers, object usage, specification (interfaces), and implementation, methods and parameters, queries and commands, instance variables, public and private, constructors, naming, UML design diagrams, organizational structure, packages, import statements.
Examples: Counter System, Temperature class, TrafficSignal class, Turtles and Turtle Graphics.
Project 1: class design - counter, money, temperature, strings
3. Designing Interacting Classes and the Process of System Design, Chapters 3 and 8
The software lifecycle, functional system specification, class structure as overall system design, algorithm design as implementation, testing, local variables, static and final features.
Examples: nim game system, maze game system (explorers and denizens), Turtle graphics system.
Project 2: Turtle graphics system
4. Conditions and Contracts, Chapters 4 and 5
Preconditions, postconditions, abstraction and (model-based) specification, contracts and contractual requirements, assert statements, defensive programming, design and implementation strategies, testing, reference vs. object equality.
Examples: nim game system revisited, Combination locks
Project 3: Contract based Interchange and test of components between students
5. Programming for Change, Chapter 7
Server/Client independence, likelihood of change, structure of user interface, composition, architectural redesign, factoring and refactoring.
Examples: locked oracle system, rectangle TUI system, rectangle TUI redesign, rectangle UI, turtle system redesign
6. Arrays: basic definitions and usage, Chapter 13
Arrays and array indexes, array variables, array creation, and array components, array algorithms, array instances.
Project 4: wraparound and discrete patches using turtle system redesign.
7. Modeling with Abstraction and Lists, Chapters 9 and 12
The role of interfaces, abstract classes, and concrete classes, subclasses and protected, the proper use of class extension and composition, containers, the specification of list as a type of container, list algorithms, list implementations, element equality.
Examples: List system, Intset, List methods
Project 5: multiple turtles and collisions using turtle system redesign
8. Arrays: Implementing Lists with Array Implementations, Chapter 13
Examples: bounded and unbounded Lists
9. 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, Java scoping.
Examples: Turtle Graphics - inheritance
10. Swing - Graphical User Interface Construction, Chapter 17
Event driven interface, Swing component and container structure, layout managers, event handling.
Examples: Life System.
Project 6: Mapping turtle graphics system onto GUI to implement Infectious Disease Spread

Grading:

Grades will be based on the following work:

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."


Project Due Dates:

The following due dates will be rigidly followed. Please mark them on your calendar:

Project # Project Name Prelim Due Date Actual Due Date Phase II Due Date (Project 3) Phase III due Date (Project 3)

0 Eclipse - Harmonic Mean none 1/20
1 Class Explorations 1/20 1/27
2 Turtle Graphics - Part I 2/1 2/8
3 Contract Based Exploration 2/8 2/15 3/15 3/29
4 Turtle Graphics - Discrete World - Part II 3/17 3/24
5 Turtle Graphics - Multiple Turtle Interactions - Part III 4/7 4/14
6 Final Turtle Graphics - Putting a GUI on it - Part IV 4/21 4/28

Note: Due to its multi-stage grading review process, project 3 extends across the March break from the beginning of February to the end of March. It also overlaps projects 2 and 4. Organize your work accordingly.


Project Criteria For Passing Grade:

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 must be submitted electronically on FirstClass. Programming project work (1) must be complete, and (2) must contain the student's name, class, programming project number. Homework, when assigned, is the only deliverable that is to be handed in on paper in class. (1) It must be complete, (2) must be typed, and (3) and must contain the student's name, class, and homework identifying information. No hand-written work is accepted (except hard to generate diagrams).


Last updated: 1/7/11