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.

Multimedia: In Microsoft Internet Explorer, go to http://cimel.cse.lehigh.edu.

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:

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)