Object-Oriented Software Engineering
Fall 2000

Professor: Glenn D. Blank   Office: 328 Packard Lab
Phone: 610-758-4867  Hours: T,Th 10:45-11:45AM,W3-4PM 
E-mail: glenn.blank@lehigh.edu   Web: http://www.eecs.lehigh.edu/~glennb

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

Week
Topics Readings (assignments)
1
Why object-oriented? Thomas&Weedon ch 1, B. Meyer ch 3-4 (project proposals)
2
Requirements and use cases Fowler&Scott, ch 1-3 (modularity papers)
3
Classes & inheritance in C++ Eckel C++, ch 1 and 15
4
Object-oriented analysis Coad&Nicola ch 1, Fowler 5 (project requirements)
5
Abstract Data Types Thomas&Weedon chapters 3&8 (undo, fruit analysis)
6
Object-oriented design Thomas&Weedon ch 15; Coad&Nicola ch 2 (project analysis)
7
Java Eckel Java, ch 2-10, 14 (fruit design)
8
Java AWT and Swing Eckel Java, ch 13
9
C++ templates & libraries Eckel C++, ch 17-21 (project design)
10
Issues for inheritance B. Meyer, ch 20, 24; Eckel C++ ch 22 (fruit implementation)
11
Idioms and patterns S. Meyers; Design Patterns; Eckel Java, ch 16
12
C++ exceptions & RTTI Eckel C++, ch 24
13
Java Beans; persistence Eckel Java, ch 14-15, appendix A
14
Project presentations (project prototypes)