Object-Oriented
Software Engineering
Fall 2001
Professor: Glenn D. Blank Office: 328 Packard Lab
Phone: 610-758-4867 Hours: TWTh 2:45-3:45PM
E-mail: glenn.blank@lehigh.edu Web: 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 the software life cycle.
Prerequisites: some familiarity with the C++ 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, 5th edition. Prentice-Hall, 2001. Good, popular resource for examples and
explanations of Java code.
Bruce Eckel, Thinking in Java, 2nd
edition, Prentice Hall, 2000.
IMO, a better written book for more experienced programmers.
(This book is available on the web:
http://www.mindview.net/Books/TIJ/.)
Bruce Eckel, Thinking in C++, 2nd
edition, Prentice Hall, 2000.
(Also available on the web:
http://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, preliminary version,
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:
Analysis and design: 30 points
Program implementation and testing: 30 points
Customer (requests a
project, works with analyst, evaluates product; kudos for representing an
outside customer): 10 points
Librarian (tracks documentation, project schedules and minutes, test
data, deliverables and maintenance manuals): 10 points
Project manager (coordinates team participants by roles, manages
schedules and resources and meetings): 10 points
Subcontractor (works on a specified part of another project, negotiated
with team and project manager): 10 points
Every student must participate on an analysis/design and on a
programming/testing team (2 per team).
Every student must participate as either customer, librarian, project manager
or subcontractor.
Customer and analyst/designers may not work on the same project.
Analyst/designers and programmers may not work on the same project.
Subcontractors may be hired for specific tasks by either an
analysis/design or programming/testing team.
Each team will
evaluate other teams in terms of criteria to be determined, probably using
CourseInfo surveys.
I will also review and modify student evaluations.
Projects should tackle non-trivial problems (they may be prototypes), i.e.,
with at least a dozen distinct
classes of objects and exploit inheritance and dynamic binding. Project ideas:
Games (Monopoly, Battleship, Othello, children’s board games, etc.)
Simulation systems (network configuration, finite state machine, OS,
SimCity variants,
Blocks world (an AI program responding to simple commands by moving
blocks on a screen)
Virtual reality systems, specialized language interpreters, etc.
Requirements, analysis and design specifications due at dates specified
during semester.
Extra credit: seminar presentation on a topic related to the course
(i.e., interesting issues with project, research topics)
Syllabus
|