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 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)