COMP 303 Software Development - Fall 2008

[News] [Basic Information] [Description] [Reference Material] [Evaluation] [Project] [Schedule]


[3 December 2008]Final exam room change. The final will be held on 4 December, 2pm, in WONG 1020.
[14 November 2008]The final exam will be held on 4 December, 2pm, in BURN 1B24.
[4 November 2008]Schedule Update
[28 October 2008]Milestone 3 instructions posted.
[24 September 2008]Milestone 2 instructions posted.
[18 September 2008]Midterm rescheduled to 16 October because of the federal elections on 14 October.
[19 August 2008]Project Overview posted.
[23 June 2008]Schedule and basic info updated.
[7 April 2008]The course is being finalized. Please return later for updates.

Basic Information

Instructor:Martin Robillard (email tips)
Time and place:Tuesdays and Thursdays, 2:35-3:55, Trottier 0070
Office hours:Tuesdays 4-5pm; Thursdays 1-2pm (in MC 114N).
TA:Ekwa Duala-Ekoko (email tips)
TA availability:Tuesdays and Fridays, 1-2pm, in Trottier 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 course, have a look at the best projects from 2006 and 2007.

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.


In-class workshops10%
Midterm exam (optional)0%/20%
Final exam60%/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 60%. For students who write the midterm, the respective weights of the midterm/final will be either 20%/40% or 0%/60%, 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. 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 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.

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. Unlinked documents are not yet released.

Current 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 receive a grade of 0 for the milestone component.


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

DateLecture TopicsReadingToolsProject
Tuesday 2 SepIntroductionChapter 1, Eclipse Platform Technical Overview (part I only)Eclipse
Thursday 4 SepThe Development Process, UML2.1-2.12, CVS Manual - OverviewViolet, CVS
Tuesday 9 SepClass Design3.1-3.5JavadocProject groups finalized
Thursday 11 SepDesign by Contract, Unit Testing3.6-3.7, JUnit CookbookJUnit, EclEmmaMilestone 0
Tuesday 16 SepInterface Types and Polymorphism4.1-4.6Checkstyle
Thursday 18 SepInterface Types and Polymorphism4.7-4.10
Tuesday 23 SepDesign Workshop 1
Thursday 25 SepDesign Patterns (Observer and Strategy)5.1-5.4Milestone 1 (11:59am)
Tuesday 30 SepDesign Patterns (Composite and Decorator)5.5-5.8
Thursday 2 OctDesign Workshop 2
Tuesday 7 OctInheritance-based reuse6.1-6.3, optional article
Thursday 9 OctClass Hierarchy Design, Exceptions6.4-6.9
Tuesday 14 OctDesign Patterns (Command, Prototype, Facade)7.8.2, 8.4.3, 10.2
Thursday 16 OctMidterm
Tuesday 21 OctObjects and Types7.1-7.3
Thursday 23 OctCloning, Serialization, and Reflection7.4-7.6Milestone 2 (11:59am)
Tuesday 28 OctDesign Workshop 3
Thursday 30 OctEffective Use of Generic Types7.7
Tuesday 4 NovThreads9.1
Thursday 6 NovSynchronization9.2-9.3
Tuesday 11 NovNo class (replaced by project demos at the end of the term)
Thursday 13 NovResearch in Software Engineering
Tuesday 18 NovTesting and AnalysisSlides on Functional Testing
Thursday 20 NovTesting and AnalysisSlides on Structural TestingCRAP4J
Tuesday 25 NovThe Visitor Design Pattern10.6
Thursday 27 NovObject-Oriented RefactoringHandoutsEclipse Refactoring Tools
Tuesday 2 DecNo class (Monday classes are scheduled)Milestone 3 (11:59am)