Intermediate Object-Oriented Development Overview
Overview of COMP 313/488 - Intermediate Object-Oriented Development
Course Prerequisite
The prerequisite to this course is COMP 271: Data Structures: Algorithms and Applications or equivalent (see Programming Prerequisites). This prerequisite is strictly enforced!
If you are a graduate student but do not satisfy this prerequisite, you must contact the Graduate Program Director as soon as possible to discuss other course options.
Course Objectives
- 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) - Here’s how COMP 313/488 fits into the overall series of OO courses:
-
- COMP 170 (CS1) - simple objects representing scalars
- COMP 271 (CS2) - collections of simple objects
- COMP 313/488 - complex, interacting objects; basic design patterns
- COMP 373/473 - advanced design patterns and topics such as AOP(Aspect-Oriented programming)
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)
Textbooks
This list is illustrative and subject to change. Please check the actual textbook information for the section offered in the current semester.
- Required – Bloch: Effective Java™, Second Edition
-
- Pearson Addison-Wesley, ISBN 0-321-35668-3
- Also available online on Safari® through the Loyola library system*: http://flagship.luc.edu/login?url=http://proquest.safaribooksonline.com/?uicode=loyola - Other recommended books:
- - Fowler: UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition) [available through Loyola Safari] - Sestoft: Java Precisely, 2nd Edition - Holub: Holub on Patterns: Learning Design Patterns by Looking at Code - Keogh & Giannini: OOP Demystified - Koskela: Test Driven: Practical TDD and Acceptance TDD for Java Developers [available through Loyola Safari]
- Some suggested references:
-
-
- Smart: Java Power Tools [available through Loyola Safari]
- See also Konstantin Läufer’s COMP 313/488 website: http://laufer.cs.luc.edu/teaching/313