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:
- Projects - 35%
- 5 individual programming projects - 5 x 7% = 35%
- Exams - 51%
- preliminary exam 1 (1 hr. 15 min.) - 14%
- preliminary exam 2 (1 hr. 15 min.) - 14%
- final exam (2 hrs.) - 23%
- 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 9:30am. 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.
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