CSCI C322 Object-Oriented Software Methods

Spring 2008

Syllabus

Overview

This course provides a thorough introduction to the theory and practice of object-oriented analysis, design, and programming technique. A substantial part of the course is devoted to projects that employ modern software development practices that include, in addition to object-orientation and team work, use of a professional integrated development environment (Eclipse) and software tools that support documentation, unit testing, revision control, and system building.

This course that may be used to fulfill the B.S. degree advanced course distribution requirement in the programming languages area (middle digit 2).

Catalog description: C322 Object-Oriented Software Methods (4 cr.) P: C212 or permission of the instructor. Includes design and implementation of complex software systems, and applications exploiting the object-oriented paradigm. Selection and effective utilization of libraries and interfaces.

Instructor

Name Email Office [2] Phone [3] Office hours [4,5]
Prof. Chris Haynes chaynes LH230F 

855-3376 office
336-3221 home

TBA

[2] Lindley Hall (LH) is the first building north of Rawles Hall. LH230 is the suite at the south end of the second floor. If Steve isn't in LH230, check LH406.

[3] Please limit home calls to 9am-5pm.

[4] No appointments are needed to see us during office hours. Don't ask for an appointment, just come. We'll be there. First-come first-served, but let us know if you are waiting so we don't keep you waiting too long. If office hours don't work for you, appointments can be made at other times. See the policies page for information on how to come best prepared for help and limits on the kind of help we provide. 

[5] TBA is To Be Announced

Schedule

Course Cr Section Time Room
C322 4 15274 TR 11:15-12:30 LH115
C322 Lab 15275 F 9:30-11:00 BH107

Texts

Software (free)

Useful links

Projects

The core of the course is semester-long team projects. Aspects of individual project work are reviewed regularly by the instructors, the class, and other project teams. Quality, not quantity, of code and documentation is most important.

Elements of software quality include:

Topics

Topics will be ordered and interleaved as appropriate, and some may
be presented in lab time. Additional topics may be included as time permits.


1. Non-object-oriented language features and using built-in objects
   A. primitive types
   B. control constructs
   C. static methods and variables
   D. message passing
   E. strings, console I/O
   F. exceptions

2. Defining simple classes 
   A. instance variables
   B. instance methods
   C. static vs. instance variables and methods
   D. self-reference
   E. constructors   

3. Interfaces and polymorphism 
   A. interface definition and use
   B. subtyping
   C. casting
   D. overloading

4. Object-oriented design relationships 
   A. instantiation (is-a relationship)
   B. aggregation (has-a relationship)
   C. UML class diagrams

5. Inheritance 
   A. method inheritance and overriding
   B. variable inheritance and shadowing
   C. dynamic method dispatch
   D. abstract classes

6. Generics 
   A. type abstraction
   B. type instantiation
   C. type inference
   D. wildcards
   E. bounded types

7. Application frameworks 
   B. input/output
   C. graphic user interface
   D. collections

8. Software development tools
   A. integrated development environment (IDE) projects and views
   B. debuggers: breakpoints, stepping, inspection, and watches
   C. shared archives and version control
   D. code refactoring and exploration
   E. project build automation

9. Object-oriented design patterns 
   A. creational patterns
   B. structural patterns
   C. behavioral patterns
   D. combinations of patterns

10. Design methodologies 
   A. class-responsibility-collaborator cards
   B. use-case scenarios
   C. state diagrams
   D. sequence diagrams
   E. refactoring

11. Development practices 
   A. software life cycle
   B. top-down and bottom-up design
   C. waterfall model
   D. extreme programming
   E. coding style conventions
12. Object-oriented design principles
   A. open-closed principle
   B. encapsulate what varies
   C. single Responsibility Principle
   D. Liskov substitution principle
   E. program to an interface, not an implementation
13. Project reports

Evaluation