[26 Oct 2010]Milestone 3 instructions are posted.
[11 Oct 2010]The midterm (on Oct 19) will be SADB M-1
[28 Sep 2010]Milestone 2 instructions are posted.
[14 Sep 2010]Milestone 1 instructions are posted.
[23 Aug 2010]The details of the special project are posted.
[24 Jun 2010]This page was just posted. Please return for updates.

Basic Information

Instructor:Martin Robillard (email tips)
Time and place:Tuesdays and Thursdays, 2:35-3:55, Trottier 0070
Office hours:Tuesdays 11:00-12:00pm; Thursdays 4-5pm (in MC 114N).
TAs:Sevan Hanssian, David Kawrykow, Tristan Ratchford (email tips)
TA availability:Sevan: Fridays 10:00-11:00; David: Wednesdays 2:00-3:00 (Trottier Lab 3060)


Principles, mechanisms, techniques, and tools for software development. The course involves a significant project.

Sample Course Topics

Principles: Separation of concerns, encapsulation, substitutablity, interface segregation.
Mechanism: Exception-handling, serialization support, concurrency and synchronization, reflection.
Techniques: Design patterns, design by contract, unit testing, refactoring.
Tools: Integrated software development environment, automatic testing tools, coverage analyzers, static checkers.

Learning Outcomes

The learning outcomes for this course are organized along the four main conceptual axes of the course: principles, mechanisms, techniques, and tools. The following table lists the expected learning outcomes for the course (the table reads by row, from left to right).

After this course, you should be able to...

Name, using the proper terminology The important first principles of object-oriented software developmentThe common programming-language based mechanisms used to build OO software applicationsCommon software development techniquesA number of software development tools
Describe and explainThe purpose of each principle and how it can be appliedHow each mechanism worksHow to apply each technique and when it should be appliedThe theory underlying each tool, and the technique(s) the tool supports
ApplyEach principleEach mechanismEach techniqueEach tool
EvaluateWhether the application of a principle is appropriate to a given situationThe technical consequences of a solution involving the mechanismThe cost and benefits of using the technique in a given situationThe suitability of different tools for a given task
CreateA 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 ourse, have a look at the best projects from 2006, 2007, and 2008, and 2009.

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.


Midterm exam (optional)0%/30%
Final exam70%/40%

Important Notes:

  1. Writing the midterm exam is optional. For students who do not write the midterm, the weight of the final will be 70%. For students who write the midterm, the respective weights of the midterm/final will be either 30%/40% or 0%/70%, whathever produces the highest final grade.
  2. A mark of 50% or more for the project is required to pass the course, irrespective of the total final mark.
  3. 75% of the total project grade will be allocated equally to all team members, and 25% of the grade will be adjusted based on each member's contributions, as reported in a project group report at the end of the term. However, each team member must make contributions to all milestones. Teams should report any student who does not contribute anything to a milestone. Students who do not contribute to a milestone receive the grade of 0 for the milestone.
  4. Students interested in maximizing their grade are encouraged to attempt the project bonus assignments. After the final project deadline, no additional work will be considered in assigning grades.

The following material is subject to evaluation:

Anything presented in class, all material in the mandatory reading, operational knowledge of the tools covered in the course, anything completed to meet the learning objectives of the project. The midterm will cover all lectures up to and including 14 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 for more information).


The project will involve the development of an interactive card game called Hearts. Additionally, some students will have the opportunity to work on an open-source project (contact the instructor if you are interested).

Additional links will appear here as additional instructions are released. To get an idea of what you will be developing as a project have a look at the best projects from 2009, 2008, 2007, and 2006.

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. -->


This schedule is subject to change. It is strongly recommended to do the readings before class.

DateLecture TopicsReadingToolsProject
Thursday 2 SepIntroductionChapter 1, Eclipse Platform Technical Overview (part I only)Eclipse
Tuesday 7 SepThe Development Process, UML2.1-2.12, CVS Manual - Overview, optional articleViolet, CVS
Thursday 9 SepClass Design3.1-3.5, optional articleJavadoc
Tuesday 14 SepDesign by Contract(TM), Unit Testing3.6-3.7, JUnit Cookbook, optional article 1, optional article 2JUnit, EclEmmaMilestone 0 (17:00)
Thursday 16 SepInterface Types and Polymorphism4.1-4.6Checkstyle
Tuesday 21 SepGUI Primer4.7-4.10, 8.1
Thursday 23 SepDesign Demonstration 1
Tuesday 28 SepDesign Patterns (Observer and Strategy)5.1-5.4Milestone 1 (11:59am)
Thursday 30 SepDesign Patterns (Composite and Decorator)5.5-5.8
Tuesday 5 OctDesign Demonstration 2
Thursday 7 OctInheritance-based reuse6.1-6.3, optional article
Tuesday 12 OctAbstract classes and Template Method pattern6.4-6.7,6.9
Thursday 14 OctFacade and Singleton patterns, exceptions6.8, 7.8.2, 10.5
Tuesday 19 OctMidtermIn SADB M-1
Thursday 21 OctElements of GUI Design and Command and Prototype patterns
Tuesday 26 OctObjects and Types7.1-7.3Milestone 2 (11:59am)
Thursday 28 OctCloning, Serialization, and Reflection7.4-7.6
Tuesday 2 NovDesign Demonstration 3
Thursday 4 NovEffective Use of Generic Types7.7
Tuesday 9 NovGuest lecture on Object-Oriented Refactoring in Practice by Debraj Das (Morgan Stanley)[Refactoring Book by Fowler] Relevant material will be indicated in classEclipse Refactoring Tools
Thursday 11 NovNo classClass replaced by demos at the end of the term.
Tuesday 16 NovThreads9.1
Thursday 18 NovSynchronization9.2-9.3
Tuesday 23 NovFunctional TestingSlides on WebCT
Thursday 25 NovStructural TestingSlides on WebCT
Tuesday 30 NovThe Visitor Design Pattern10.6InCode
Thursday 2 DecReview for the FinalMilestone 3 (11:59am)