Course Description: Design and construction of modular, reusable, extensible
and portable software using statically typed object-oriented programming languages
(Eiffel, C++, Java). Abstract data types; genericity; multiple inheritance;
use and design of software libraries; persistence and object-oriented databases;
impact of OOP on the software life cycle.
Prerequisites: some familiarity with the C++ programming language and data
structures
Texts (first two strongly recommended; some on reserve Fairchild-Martindale
library):
Bruce Eckel, Thinking in Java, Prentice Hall, 2000
(2nd edition).
(This book is available on the web: http://www.BruceEckel.com/javabook.html.)
Bruce Eckel, Thinking in C++, Prentice Hall, 2000
(2nd edition).
(Also available on the web: http://www.bruceeckel.com/ThinkingInCPP2e.html).
Martin Fowler, UML Distilled, Addison-Wesley, 1999.
Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides,
Design Patterns, Addison-Wesley, 1995.
Pete Thomas & Ray Weedon, Object-Oriented Programming
in Eiffel, Addison Wesley, 1995.
Bertrand Meyer, Object-Oriented Software Construction,
Prentice Hall, 1997, 2nd edition, 1998.
Peter Coad & Jill Nicola, Object-Oriented Programming,
Yourdon Press, 1993.
Scott Meyers, Effective C++, 2nd Edition,
Addison-Wesley, 1997.
Requirements:
Short paper on modularity in C or C++: 5%
Undo analysis: 5%
Analysis, design and implementation of "fruit" problem:
20%
Project: substantial software development in Eiffel, Java
or C++, teaming 2-4 students: 60%
(Requirements, analysis and design specifications
due at dates specified during semester.)
Project presentations by each participant in each group
at end of semester: 10%
Extra credit: seminar presentation on a topic related to the course
Syllabus
|
|||||||||||||||||||||||||||||||||||||||||||||||