[6 Nov 2009] | The final exam is scheduled for 22 December at 2pm. |
[26 Oct 2009] | Milestone 3 instructions released. |
[24 Sep 2009] | Milestone 2 instructions released. |
[18 Sep 2009] | Updated CVS Setup Instructions |
[3 Sep 2009] | Milestone 1 instructions released. |
[1 Sep 2009] | Milestone 0 instructions released. |
Instructor: | Martin Robillard (email tips) |
Time and place: | Tuesdays and Thursdays, 2:35-3:55, Trottier 0060 |
Office hours: | Tuesdays 4-5pm; Thursdays 1-2pm (in MC 114N). |
Credits: | 3 |
TA: | David Kawrykow and Tristan Ratchford (email tips) |
TA availability: | Mondays 11:00 (Tristan, in Trottier Trottier Lab 3060); Wednesdays 10:00-11:00 (David, in Trottier Lab 3060) |
After this course, you should be able to...
Principles | Mechanisms | Techniques | Tools | |
Name, using the proper terminology | The important first principles of object-oriented software development | The common programming-language based mechanisms used to build OO software applications | Common software development techniques | A number of software development tools |
Describe and explain | The purpose of each principle and how it can be applied | How each mechanism works | How to apply each technique and when it should be applied | The theory underlying each tool, and the technique(s) the tool supports |
Apply | Each principle | Each mechanism | Each technique | Each tool |
Evaluate | Whether the application of a principle is appropriate to a given situation | The technical consequences of a solution involving the mechanism | The cost and benefits of using the technique in a given situation | The suitability of different tools for a given task |
Create | A complete object-oriented application based on the first principles of object-oriented software development, the structured use of programming language mechanisms, the application of software development techniques, and the use of software engineering tools |
For a concrete look at what you should be able to do in this
course, have a look at the best projects from 2006,
2007,
and 2008.
Reference Material
Required Textbook: Horstmann,
Cay. Object-Oriented Design and Patterns, 2nd Edition. Wiley,
2005. Available at the Paragraphe Bookstore.
Complementary Textbook on Testing: Pezzè, Young. Software
Testing and Analysis: Process, Principles, and
Techniques. Wiley, 2008. On reserve at the library.
Evaluation
In-class workshops | 10% |
Midterm exam (optional) | 0%/20% |
Project | 30% |
Final exam | 60%/40% |
The following material is subject to evaluation: Anything I said in class, material found in the mandatory reading, basic knowledge of the tools covered in the course, anything you did in the project and workshops. The midterm will cover all lectures up to and including 11 October. The final will cover everything.
In accord with McGill University's Charter of Students' Rights, students in this course have the right to submit in English or in French any written work that is to be graded.
Academic Integrity
McGill University values academic integrity. Therefore all
students must understand the meaning and consequences of
cheating, plagiarism and other academic offenses under the Code
of Student Conduct and Disciplinary Procedures (see http://www.mcgill.ca/integrity
for more information).
Project
The project will involve the development of an interactive card
game. Additional links will appear here as additional
instructions are released.
Project Resources
Submission Policy: Milestones
are assigned to groups: only one submission per group is
necessary. Deadlines are posted on the schedule. All
deadlines are firm. This is to ensure fairness, a speedy
feedback, and consistency with the course schedule. Please plan
ahead. If you are not done by the deadline, submit your partial
solution. The WebCT submission site allows you to submit early
and to resubmit. To avoid the usual issues with last-minute
submissions, you are encouraged to submit early. After a small
grace period the webCT system will block submissions.
Milestones not submitted on time are subject to a significant
penalty.
Schedule
This schedule is subject to change. It is strongly recommended
to do the readings before class.
Date | Lecture Topics | Reading | Tools | Project |
Tuesday 1 Sep | Introduction | Chapter 1, Eclipse Platform Technical Overview (part I only) | Eclipse | |
Thursday 3 Sep | The Development Process, UML | 2.1-2.12, CVS Manual - Overview, optional article | Violet, CVS | |
Tuesday 8 Sep | Class Design | 3.1-3.5, optional article | Javadoc | |
Thursday 10 Sep | Design by Contract(TM), Unit Testing | 3.6-3.7, JUnit Cookbook, optional article 1, optional article 2 | JUnit, EclEmma | Milestone 0 (17:00) |
Tuesday 15 Sep | Interface Types and Polymorphism | 4.1-4.6 | Checkstyle | |
Thursday 17 Sep | Interface Types and Polymorphism | 4.7-4.10, 8.1 | ||
Tuesday 22 Sep | Design Workshop 1 | |||
Thursday 24 Sep | Design Patterns (Observer and Strategy) | 5.1-5.4 | Milestone 1 (11:59am) | |
Tuesday 29 Sep | Design Patterns (Composite and Decorator) | 5.5-5.8 | ||
Thursday 1 Oct | Design Workshop 2 | |||
Tuesday 6 Oct | Inheritance-based reuse | 6.1-6.3optional article | ||
Thursday 8 Oct | Abstract classes and Template Method pattern | 6.4-6.7,6.9 | ||
Tuesday 13 Oct | Exceptions and Facade pattern | 6.8, 7.8.2 (Facade pattern) | ||
Thursday 15 Oct | Midterm | |||
Tuesday 20 Oct | Elements of GUI Design and Command and Prototype patterns | |||
Tuesday 22 Oct | Design Workshop 3 | Milestone 2 (11:59am) | ||
Tuesday 27 Oct | Objects and Types | 7.1-7.3 | ||
Thursday 29 Oct | Cloning, Serialization, and Reflection | 7.4-7.6 | ||
Tuesday 3 Nov | Effective Use of Generic Types | 7.7 | ||
Thursday 5 Nov | The Visitor Design Pattern | 10.6 | ||
Tuesday 10 Nov | Threads | 9.1 | ||
Thursday 12 Nov | Synchronization | 9.2-9.3 | ||
Tuesday 17 Nov | Functional Testing | Slides on WebCT | ||
Thursday 19 Nov | Structural Testing | Slides on WebCT | ||
Tuesday 24 Nov | No class | Class replaced by demos at the end of the term. | ||
Thursday 26 Nov | Object-Oriented Refactoring | [Refactoring Book by Fowler] Relevant material will be indicated in class | Eclipse Refactoring Tools, InCode | |
Tuesday 1 Dec | Review for the Final | Milestone 3 (11:59am) |