COS 225 - Introduction to Object-Oriented Programming and
Design
Larry Latour
Spring, 2012
- 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 208, Neville Hall
- Instructor:
- Larry Latour, Chair of New Media Assoc. Prof., School of
Computing and Information Science
- Office: 408 Chadbourne Hall
- Tel: 581-4433
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:
- Projects - 32%
- Project 0 - 2%
- 6 individual programming projects 1-6 - 6 x 5% = 30%
- Exams - 54%
- preliminary exam 1 (1 hr. 15 min.) - 15%
- preliminary exam 2 (1 hr. 15 min.) - 15%
- final exam (2 hrs.) - 24%
- Class and lab attendance, assignments, and participation
(approximately 1 each week) - 14%
- Attendance: For many classes I will take attendance at the
start of class at 2:00pm. Late students will be counted as absent. If a
student is absent, the 1% for that week will be deducted.
- Homework: Every so often I will assign homework assignments
due for discussion the next class. If the homework isn't completed, the
1% for that week will be deducted.
- Preparation: Every so often I will give a pass/fail pop quiz
on the reading due for class. A "fail" will result in the 1% deducted
for that week.
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."
Important Adminstrative Dates:
- Monday, January 23rd - Last Day to drop class and get tuition
refund
- Thursday, February 9th - Class dropped on or before this date
will not appear on transcript
- Wednesday, April 4th - Last day to withdraw from class and
receive a "W" grade on transcript
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/19 |
|
|
| 1 |
Class Explorations |
1/19 |
1/26 |
|
|
| 2 |
Turtle Graphics - Part I |
1/31
|
2/7 |
|
|
| 3 |
Contract Based Exploration |
2/7 |
2/14 |
3/13 |
3/27 |
| 4 |
Turtle Graphics - Discrete World - Part II |
3/15 |
3/22 |
|
|
| 5 |
Turtle Graphics - Multiple Turtle Interactions - Part III |
4/5 |
4/12 |
|
|
| 6 |
Final Turtle Graphics - Putting a GUI on it - Part IV |
4/19 |
4/26 |
|
|
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: 12/27/11