COMP 303 Programming Techniques - Fall 2005

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


[7 December 2005]The final exam will be held Thursday 8 December 9:00-12:00 in Trottier 1080.
[17 November 2005]Code examples for lecture 21.
[2 November 2005]Assignment 3 is released.
[25 October 2005]Updates to the project 3 page. The final changes to the project deliverable have been posted.
[21 October 2005]I will hold a special pre-midterm office hours session Monday 24 October at 4:15pm in my office.
[11 October 2005]Project (Component 3) is released.
[7 October 2005]Assignment 2 is released.
[3 October 2005]Project 2 due date is now 12 October, 11:59am.
[2 October 2005]You're welcome to use my Checklipse configuration file.
[25 September 2005]Small reorganization of the topic schedule.
[20 September 2005]Project (Component 2) is released.
[15 September 2005]Assignments and projects should be submitted using WebCT. Note that this changes the hand-in instructions for Assignment 1.
[2 September 2005]Project (Component 1) is released.
[1 September 2005]Assignment 1 is released.

Basic Information

Instructor:Martin Robillard
Time and place:Tuesdays and Thursdays 2:35-3:55 in Trottier 0070.
Office hours:Tuesdays 4:15-5:15pm in MC114N
TA:Imran Majid
TA availability:Mondays 11-12 and Wednesdays 12-1 in Trottier 3rd floor lab.


Do you think writing a class in an object-oriented language is easy? Well, it is: sprinkle a few fields, mix in a couple of methods, and you're done! It's also easy to hammer together a bunch of pine beams into something that looks like a wall. Is this wall going to hold a 50-storey building? Not a chance. As this analogy shows, anyone can put together a piece of software, but not everyone can do it well. 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? In the end the success of software projects is ensured by people. People who understand the fundamental concepts of software development and who 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 exam35%

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

ComponentDue Date
Assignment 1September 20
Assignment 2November 8
Assignment 3November 29
Project DescriptionNot applicable
Project Component 1September 22
Project Component 2October 12
Project Component 3November 12


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

DateLecture TopicsToolsReadingAssignments and Project
1 SepIntroduction.EclipseChapter 1, Eclipse Platform Technical Overview (part I only)Familiarize yourself with Eclipse.
6 SepThe Object-Oriented Design Process 2.1-2.7
8 SepIntroduction to the Unified Modeling LanguageViolet, CVS2.8-2.12, CVS Manual - OverviewSetup your CVS repository
13 SepClass Design3.1-3.5
15 SepDesign by Contract, Unit TestingJavadoc,JUnit3.6-3.7, JUnit Cookbook
20 SepInterface Types and Polymorphism (Part 1)4.1-4.6Assignment 1 due
22 SepInterface Types and Polymorphism (Part 2)4.7-4.10Project 1 due
27 SepDesign Patterns (Observer and Strategy)5.1-5.4
29 SepDesign Patterns (Composite and Decorator)Checklipse5.5-5.8
4 OctInheritance-based reuse6.1-6.3
6 OctClass Hierarchy Design, Exceptions6.4-6.9
11 OctIntroduction to Aspect-Oriented ProgrammingAspectJGetting Started with AspectJProject 2 due tomorrow
13 OctAspectJ Syntax and SemanticsSame as above
18 OctThe Java Object Model (Part 1)hprof7.1-7.4
20 OctThe Java Object Model (Part 2)7.5-7.6
25 OctMidterm
27 OctMidterm Review
1 NovGenerics and components7.7-7.8
3 NovFrameworksEclipse JDTChapter 8
8 NovThreads9.1Assignment 2 due
10 NovSynchronization9.2-9.3
15 NovProgram Analysis and Reverse EngineeringConcernMapper
17 NovReview of Design Patterns
22 NovThe Visitor Design Pattern
24 NovObject-Oriented RefactoringEclipse Refactoring ToolsProject 3 due
29 NovReview for the FinalAssignment 3 due