COMP 303 Programming Techniques - Fall 2006

[News] [Basic Information] [Overview] [Reference Material] [Evaluation] [Project and Assignments] [Schedule]


[21 December 2006]See the best projects of 2006!

Basic Information

Instructor:Martin Robillard
Time and place:Tuesdays and Thursdays 2:35-3:55 in ENGTR 2110.
Office hours:Tuesdays 4:00-5:00 in MC 114N
TA:Isaac Yuen (isaac dot yuen at mail mcgill ca)
TA availability:Mondays 12:00-13:00 in the Trottier Lab (3060)


Although practically anyone can put together a dog house, it takes a few extra skills and techniques to build a high-rise. The same applies to software development: it takes more than flair and motivation to create large, robust, modular, well-integrated, and maintainable software systems. This course will help you get what it takes to build quality object-oriented software.

In this course you will:

Why should you take this course? The success of software projects is ensured by people who understand the fundamental concepts of software development and master the techniques that are derived from them. People who can make informed decisions that positively impact the quality of software, and who play a role of technical leadership in highly dynamic and innovative software development environments. This course is intended to point you in that direction.

Reference Material

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


Midterm exam20%
Final exam40%

A mark of 50% or more for the combined project and assigments 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 assignments. The midterm will cover all lectures up to and including 5 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).

Project and Assignments

How to set up your CVS Repository.

ComponentDue Date
Project DescriptionNot applicable
Project 0Not applicable
Project 13 Oct (23:59)
Project 231 Oct (23:59)
Project 330 Nov (23:59)
Assignment 121 Nov (23:59)
Assignment 25 Dec (23:59)


My Checklipse style guide


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

DateLecture TopicsToolsReadingAssignments and Project
Tuesday 5 SepIntroductionEclipseChapter 1, Eclipse Platform Technical Overview (part I only)Start Project 0
Thursday 7 SepThe Development ProcessViolet, CVS2.1-2.12, CVS Manual - Overview
Tuesday 12 SepClass Design3.1-3.5Email your team members to the TA before class.
Thursday 14 SepDesign by Contract, Unit TestingJavadoc,JUnit3.6-3.7, JUnit Cookbook
Tuesday 19 SepInterface Types and Polymorphism (Part 1)4.1-4.6
Thursday 21 SepInterface Types and Polymorphism (Part 2)4.7-4.10
Tuesday 26 SepDesign Patterns (Observer and Strategy)5.1-5.4
Thursday 28 SepDesign Patterns (Composite and Decorator)Checklipse5.5-5.8
Tuesday 3 OctInheritance-based reuse6.1-6.3Project 1 due (23:59)
Thursday 5 OctClass Hierarchy Design, Exceptions6.4-6.9
Tuesday 10 OctNo class (Monday classes scheduled today)
Thursday 12 OctObjects and Types7.1-7.3
Tuesday 17 OctMidterm
Thursday 19 OctMidterm review
Tuesday 24 OctCloning, Serialization, and Reflectionhprof7.4-7.6
Thursday 26 OctEffective Use of Generic Types7.5-7.6
Tuesday 31 OctThreads9.1Project 2 due (23:59)
Thursday 2 NovSynchronization9.2-9.3
Tuesday 7 NovIntroduction to Aspect-Oriented ProgrammingAspectJGetting Started with AspectJ
Thursday 9 NovAspectJ Syntax and SemanticsSame as above
Tuesday 14 NovFrameworksEclipse JDTChapter 8
Thursday 16 NovProgram Analysis and Reverse EngineeringConcernMapper
Tuesday 21 NovReview of Design PatternsAssignment 1 due
Thursday 23 NovThe Visitor Design Pattern10.6
Tuesday 28 NovTesting and coverageCoverlipse
Thursday 30 NovObject-Oriented RefactoringEclipse Refactoring ToolsProject 3 due
Tuesday 5 DecReview for the FinalAssignment 2 due