The content on this page is the work of Professor Glenn Blank.
Be advised that Professor Blank is no longer on the active faculty at Lehigh.
This content continues to be available as a courtesy, but it may not be maintained or current.

Object-Oriented Software Engineering

Fall 2002

Professor: Glenn David Blank                Phone: 758-4867                                 Office: 328 Packard Lab
Hours: TWTh 2:45-3:45 PM                E-mail:"glenn dot blank at lehigh dot edu"

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 software life cycle.

Prerequisites: Familiarity with a high-level programming language and data structures

Texts (first two strongly recommended; others available on reserve Fairchild-Martindale library or via the web):

      Martin Fowler, UML Distilled, Addison-Wesley, 1999.

      Deitel and Deitel.  How to Program: Java, 4th edition. Prentice-Hall, 2002.  (Also How to Program: C++)

      Bruce Eckel, Thinking in Java, 2nd edition, Prentice Hall, 2002. (Available online at

      Bruce Eckel, Thinking in C++, 2nd edition, Prentice Hall, 2002.  (

      Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Design Patterns, Addison-Wesley, 1995.

      Bruce Eckel, Thinking in Design Patterns, available on the web at

      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.

      Shari Pfleeger, Software Engineering: Theory and Practice, 2nd Edition, Prentice-Hall, 2001.

Multimedia: In Microsoft Internet Explorer, go to


      Undo analysis, and analysis, design and implementation of "fruit" problem:           20%

      Inquiry-based research exercises and online post-test:                                                10%

      Project: substantial software development in Java or C++:                                          70%, apportioned by points as follows:

Extra credit: seminar presentation on a topic related to the course (i.e., interesting issues with project, research topics)


Date        Topics                                                                    Readings (assignments & project activities dates) & multimedia (Mm)

8/27         Software roles, classes & inheritance               Thomas&Weedon ch 1, Eckel C++ ch 1,15   Multimedia: inheritance

9/3           Quality, modularity, life cycle models               B. Meyer ch 3-4 (customer proposals), Pfleeger, ch 2  Mm: life cycles

9/10         Requirements and use cases                              Fowler&Scott ch 1-3 (form customer&analysis teams)  Mm: use cases

9/17         Object-oriented analysis                                     Coad&Nicola 1, Fowler 5 (project requirements, use cases) Mm: analysis

9/24         Object-oriented design                                        Thomas&Weedon 15; Coad&Nicola 2 (undo, fruit analysis) Mm: design

10/1         No class (away at conference)                           (Fruit problem design)   Mm: abstract data types (experiment)

10/8         Abstract data types                                             Thomas&Weedon chapters 3&8 (project analysis)

10/15       Java                                                                        Deitel&Deitel or Eckel, Java (revised fruit design) Mm: Objects&Classes

10/22       Java AWT and Swing                                         Deitel and Deitel or Eckel, Java (project design)

10/29       Idioms and design patterns                                 S. Meyers; Gamma et al.  Mm: Design patterns

11/5         Inheritance issues; C++ templates                    B. Meyer, ch 20, 24; Eckel C++ ch 17-22 (fruit program)

11/12       Extreme programming, testing, delivery            Pfleeger, ch 8-11  Mm: Extreme programming

11/19       Eiffel                                                                       Thomas&Weedon (optional)

12/3         Java Beans; persistence                                      Eckel Java, ch 14-15, appendix A

Finals     Project presentations                                            (project prototypes, no final exam)