This course will introduce the essential aspects of software-engineering from an object-oriented point of view. There will be considerable emphasis on analysis and design in addition to programming. We will use Unified Modeling Language (UML) for the analysis and design work.
Programming topics will emphasize the core concepts of encapsulation, inheritance, polymorphism, and dynamic binding. We will examine the realization of these concepts in the Java and C++ programming languages.
There will be one major group project. The project this quarter will involve building a rudimentary CASE tool in Java to support the use of UML with C++.
Additional homework, both reading and exercises, may be assigned to prepare you for the exams and help with the project.
The letter grades will be assigned using the following scale: A[90-100], B[80-90], C[70-80], D[60-70], and F[0-60]. Academic dishonesty will be "rewarded" with a grade of "F". "Sharing/reuse" of solutions to assignment problems is strictly prohibited.
Grades will be based on the following criteria:
| Midterm Examination | 20% |
| Final Examination | 30% |
| Project | 50% |
Each completed project will receive a single grade based on the overall quality of the project. Intermediate stages of the project (i.e. requirements specifications, analysis, design) may be graded or discussed in class to provide students with feedback and the opportunity to correct mistakes before the final project is complete. Grades for intermediate stages of the project will not count toward the final grade.
Individual members of a group will receive project grades based on both the quality of the project as determined by the instructor, and the relative contribution of each group member as determined by the group. The details will be discussed in class.
The following schedule is a tentative outline of the topics and the approximate time when these topics will be introduced. Since this is the first offering of the course, changes in the topics and/or the order in which they are presented are likely to occur.
| Class | Topic |
|---|---|
| 1 |
Object oriented concepts:
abstraction, encapsulation, inheritance,
polymorphism, late binding. |
| 2 | Object-oriented programming paradigms: message sending, simulation. |
| 3 | Introduction to object-oriented programming in Java. |
| 4 | Java continued. |
| 5 | Requirements: Use cases and user interface. |
| 6 | Requirements continued: Problem domain (conceptual) modeling. |
| 7 | Analysis: Program domain objects. Roles and responsibilities. |
| 8 |
Midterm Examination.
Project requirement specifications due. |
| 9 | Design: Specification model. Interfaces. |
| 10 |
Design: Implementation model.
Project analysis specifications due. |
| 11 | Requirements review and discussion. |
| 12 | Analysis review and discussion. |
| 13 |
Implementation and testing.
Project design specifications due. |
| 14 | Design review and discussion. |
| 15 | Advanced OO concepts: Genericity vs. Inheritance. Client vs. Heir. |
| 16 | Advanced modeling techniques. |
| 17 | Case studies. |
| 18 | Case studies continued. |
| 19 | Case studies continued. |
| 20 | Slack. Review. |