Advanced Object-Oriented Techniques
Wednesday 7:00pm - 9:00pm
Room 102, Warren Weaver Hall
Frank Tip (email@example.com)
The goal of this course is to familiarize students with object-oriented techniques that are widely used in industry. After a brief review of basic object-oriented terminology (subtyping, dynamic dispatch, inheritance, delegation, etc.), the following topics will be presented in detail:
The objective of the course is to make students sufficiently proficient with these techniques so that they can apply them in practice. To achieve this goal, the course has a substantial practical component, in the form of a series of programming assignments that are performed in groups.
The course will feature 3 guest lectures..
A graduate-level course in programming languages is required. Basic familiarity with Java (or another object-oriented language) will be assumed.
There are 2 required textbooks for this course:
A good textbook on Java is recommended. Two examples of good textbooks are:
Other useful books (not required):
Refactoring : Improving the Design of Existing Code, by Martin Fowler et al. Hardcover - 431 pages 1st edition (August 1999) Addison-Wesley Pub Co; ISBN: 0201485672
The final grade for this course will be a weighted average of the homework assignments, the project, and the mid-term exam. Homeworks: 20%, Project 40%, Mid-term 40%. There will be no final exam for this course.
This course is concerned with practical techniques, and the only way to really become proficient with these techniques is to apply them in practice. The available time (I realize that this is not the only class you are taking) will not allow you to build a really complex system. Therefore, you will develop a system that is complex and interesting enough in that it will require most of the techniques and concepts that you will learn during the course, and yet not be too large and complicated. The system you will develop is a simulation of an e-commerce system, and will be constructed in 4 stages. After each stage is due, I will discuss the important aspects of my own solution in class. In cases where you did not manage to complete a stage by yourself, you are allowed to use my solution in subsequent stages of the project.
The project will be performed in groups of 3 students. You may either form groups by themselves, or I will assign you to a group.
Final grades are determined by computing a combined score using the following formula::
0.1 * HOMEWORK_1 + 0.1 * HOMEWORK_2 + 0.4 * PROJECT + 0.4 * MIDTERM
The weights for the various stages of the project are: 15% for stage 1, 20% for stage 2, 35% for stage 3, and 30% for stage 4.
Your final grade is determined as follows:
combined score >=