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" http://www.cse.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 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 www.mindview.net/Books/TIJ/)
Bruce Eckel, Thinking in C++, 2nd edition, Prentice Hall,
2002. (www.mindview.net/Books/TICPP/ThinkingInCPP2e.html)
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 http://www.mindview.net/Books/TIPatterns/.
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.
Requirements:
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)
Syllabus:
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)