Object-Oriented Software Engineering
Technion: Spring 1999

E-mail: gdb0@lehigh.edu (please send large e-mail here!) 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: Pete Thomas & Ray Weedon, Object-Oriented Programming in Eiffel, Addison Wesley, 1995.
Bruce Eckel, Thinking in Java, Prentice Hall, 1998.
(This book is available on the web: http://www.BruceEckel.com/javabook.html.)

Recommended:
Bertrand Meyer, Object-Oriented Software Construction, Prentice Hall, 1988, 2nd edition, 1998.
Peter Coad & Jill Nicola, Object-Oriented Programming, Yourdon Press, 1993.

Requirements:
Short paper on modularity in C and C++: 5%
Analysis, design and implementation of a simple system in Java: 25%
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: 5%
Class participation throughout semester: 5%

Extra credit: seminar presentation on a topic related to the course (give me an outline in advance!)

Syllabus

Week Topic Reading (and assignments due)
1 Why object-oriented? Thomas&Weedon chapter 1
2 Modularity & OOSE Bertrand Meyer, chapter 3 (initial project proposals due)
3 Object-oriented analysis Coad&Yourdon chapter 1 (paper on modularity due)
4 Abstract Data Types Thomas&Weedon chapters 3&8 (project requirements specs due)
5 Eiffel: assertions Thomas&Weedon chapters 9-11(simple analyses due)
6 Java basics Eckel, chapters 1-5, appendix B (simple ADT design due)
7 Inheritance & polymorphism Eckel, chapters 6-7 (project analysis due)
8 Java: collections and I/O Eckel chapters 8-10
9 Object-oriented design Thomas&Weedon ch. 15 (Coad&Yourdon ch. 2)
10 More about OOD Eckel ch. 16 (simple Java program due)
11 Java: AWT and Swing Eckel chapter 13 (project design due)
12 Java: threads, sockets Eckel, chapters 14-15
13 RTTI, Persistence, CORBA Eckel, chapters 10-11, appendix A
14 Project presentations (project prototypes due)
Final exam period: final projects due via ftp