COMP 303 Software Development - Fall 2007

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


[20 December 2007]Congratulations to Maxime Desjardins-Carrière and Emmanuel Piuze-Phaneuf for winning the best project award. to
[20 November 2007]The final will take place on 20 December at 9am in LEA 109.
[20 November 2007]Project demos will takes place on November 28, 10-11, 4-5. Please sign up with the instructor.
[15 October 2007]Deadline for M2 pushed to October 18, 11:59am.
[4 October 2007]Instructions for Milestones 3 and 4 released
[20 September 2007]Rooms for the TA Office hours have changed.
[18 September 2007]Instructions for Milestone 2 released
[5 September 2007]CVS Instructions posted, new version of project released
[24 August 2007]Update to projects description

Basic Information

Instructor:Martin Robillard
Time and place:Tuesdays and Thursdays 2:35-3:55 in TBD.
Office hours:Tuesdays 4:00-5:00 in MC 114N
TA:Ekwa Duala-Ekoko and Jan Rupar (ekwa at cs)
TA availability:Tuesday 1:00-2:00 in Trottier 3070 and Thursday 10:00-11:00 in Trottier 3150.


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

Reference Material

Required Textbook: Horstmann, Cay. Object-Oriented Design and Patterns, 2nd Edition. Wiley, 2005. Available at the Paragraphe Bookstore.


In-class workshops10%
Midterm exam20%
Final exam40%

A mark of 50% or more for the project is required to pass the course, irrespective of the total final mark.

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. 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 4 SepIntroductionChapter 1, Eclipse Platform Technical Overview (part I only)Eclipse
Thursday 6 SepThe Development Process, UML2.1-2.12, CVS Manual - OverviewViolet, CVS
Tuesday 11 SepClass Design3.1-3.5Email groups to TA
Thursday 13 SepDesign by Contract, Unit Testing3.6-3.7, JUnit CookbookJavadoc, JUnitMilestone 0
Tuesday 18 SepInterface Types and Polymorphism4.1-4.6Checkstyle
Thursday 20 SepInterface Types and Polymorphism4.7-4.10
Tuesday 25 SepDesign Workshop 1Milestone 1 (11:59am)
Thursday 27 SepDesign Patterns (Observer and Strategy)5.1-5.4
Tuesday 2 OctDesign Patterns (Composite and Decorator)5.5-5.8
Thursday 4 OctDesign Workshop 2
Tuesday 9 OctNo class (Monday classes scheduled today)
Thursday 11 OctMidterm
Tuesday 16 OctInheritance-based reuse6.1-6.3
Thursday 18 OctClass Hierarchy Design, Exceptions6.4-6.9Milestone 2 (11:59am)
Tuesday 23 OctDesign Patterns (Command, Prototype, Facade)7.8.2, 8.4.3, 10.2
Thursday 25 OctDesign Workshop 3
Tuesday 30 OctObjects and Types7.1-7.3
Thursday 1 NovCloning, Serialization, and Reflection7.4-7.6
Tuesday 6 NovEffective Use of Generic Types7.7CRAP4JMilestone 3 (11:59am)
Thursday 8 NovThreads9.1
Tuesday 13 NovSynchronization9.2-9.3
Thursday 15 NovTesting and CoverageHandoutsEclEmma
Tuesday 20 NovThe Visitor Design Pattern10.6
Thursday 22 NovProgram Analysis and Reverse EngineeringConcernMapper, Eclipse JDT
Tuesday 27 NovObject-Oriented RefactoringHandoutsEclipse Refactoring ToolsMilestone 4 (11:59am)
Thursday 29 NovReview for the final
Tuesday 4 DecNo class (time used for demo + evaluation)

$Revision: 1.13 $ Last Modified: $Date: 2007/11/20 16:49:10 $