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