COMP 313: Object-Oriented Design
Course Information
About
Object-orientation continues to be a dominant approach to software development. This intermediate programming-intensive course studies the use of classes and objects with an emphasis on collaboration among objects.
Description
Object-orientation continues to be a dominant approach to software development. This intermediate programming-intensive course studies the use of classes and objects with an emphasis on collaboration among objects.
Overall Series of Object-Oriented Courses
COMP 170: Introduction to Object-Oriented Programming (CS1) - simple objects representing scalars
COMP 271: Data Structures I (CS2) - collections of simple objects
COMP 313: Object-Oriented Design / COMP 413: Intermediate Object-Oriented Development - complex, interacting objects; basic design patterns
COMP 373: Objects, Frameworks, and Patterns / COMP 473: Object-Oriented Programming - advanced design patterns and topics such as AOP(Aspect-Oriented programming)
COMP 313: Object-Oriented Design / COMP 413: Intermediate Object-Oriented Development is also a prerequisite for other advanced software courses. Students interested in advanced software courses are encouraged to take COMP 313: Object-Oriented Design / COMP 413: Intermediate Object-Oriented Development as soon as they have completed COMP 271: Data Structures I so as to be eligible for these further courses.
Course Topics
Data Structures of various types – linear vs. nonlinear, indexing vs. non-indexing, position vs. value-oriented
Advanced Java, e.g. interfaces, annotations, exceptions, generics, collections, boxing/unboxing, array objects
Object Modeling – UML, use cases and activity diagrams, class diagrams, archetypes, interaction diagrams
Design by contract, interfaces, refactoring & generalization, design patterns (Adapter, Decorator, Composite, Strategy, Iterator, Abstract Factory, Visitor, …)
Agile Development Process – evolutionary design, test-driven development, refactoring, …
Tools – Eclipse, Subversion, JUnit, JMock, Ant, …
Techniques – object pooling, garbage collection, performance profiling (NetBeans)
Outcome
A thorough understanding of the principles of object-orientation: abstraction, delegation, inheritance, and polymorphism; exposure to basic design patterns; programming experience in mainstream object-oriented languages such as C++ and Java.
You will take your software development abilities to the next level by building on your knowledge of data structures.
You will learn to design and implement more complex programs using good software engineering practices, including:
Designing with interfaces and composition
Design patterns
Refactoring
Test-driven development (TDD)
Syllabi
See the Current Course Syllabi.