[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. |
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). |
Credits: | 3 |
TA: | Ekwa Duala-Ekoko (email tips) |
TA availability: | Tuesdays and Fridays, 1-2pm, in Trottier 3060. |
After this course, you should be able to...
Principles | Mechanisms | Techniques | Tools | |
Name, using the proper terminology | The important first principles of object-oriented software development | The common programming-language based mechanisms used to build OO software applications | Common software development techniques | A number of software development tools |
Describe and explain | The purpose of each principle and how it can be applied | How each mechanism works | How to apply each technique and when it should be applied | The theory underlying each tool, and the technique(s) the tool supports |
Apply | Each principle | Each mechanism | Each technique | Each tool |
Evaluate | Whether the application of a principle is appropriate to a given situation | The technical consequences of a solution involving the mechanism | The cost and benefits of using the technique in a given situation | The suitability of different tools for a given task |
Create | A 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.
Evaluation
In-class workshops | 10% |
Midterm exam (optional) | 0%/20% |
Project | 30% |
Final exam | 60%/40% |
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 http://www.mcgill.ca/integrity
for more information).
Project
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.
Schedule
This schedule is subject to change. It is strongly recommended
to do the readings before class.
Date | Lecture Topics | Reading | Tools | Project |
Tuesday 2 Sep | Introduction | Chapter 1, Eclipse Platform Technical Overview (part I only) | Eclipse | |
Thursday 4 Sep | The Development Process, UML | 2.1-2.12, CVS Manual - Overview | Violet, CVS | |
Tuesday 9 Sep | Class Design | 3.1-3.5 | Javadoc | Project groups finalized |
Thursday 11 Sep | Design by Contract, Unit Testing | 3.6-3.7, JUnit Cookbook | JUnit, EclEmma | Milestone 0 |
Tuesday 16 Sep | Interface Types and Polymorphism | 4.1-4.6 | Checkstyle | |
Thursday 18 Sep | Interface Types and Polymorphism | 4.7-4.10 | ||
Tuesday 23 Sep | Design Workshop 1 | |||
Thursday 25 Sep | Design Patterns (Observer and Strategy) | 5.1-5.4 | Milestone 1 (11:59am) | |
Tuesday 30 Sep | Design Patterns (Composite and Decorator) | 5.5-5.8 | ||
Thursday 2 Oct | Design Workshop 2 | |||
Tuesday 7 Oct | Inheritance-based reuse | 6.1-6.3, optional article | ||
Thursday 9 Oct | Class Hierarchy Design, Exceptions | 6.4-6.9 | ||
Tuesday 14 Oct | Design Patterns (Command, Prototype, Facade) | 7.8.2, 8.4.3, 10.2 | ||
Thursday 16 Oct | Midterm | |||
Tuesday 21 Oct | Objects and Types | 7.1-7.3 | ||
Thursday 23 Oct | Cloning, Serialization, and Reflection | 7.4-7.6 | Milestone 2 (11:59am) | |
Tuesday 28 Oct | Design Workshop 3 | |||
Thursday 30 Oct | Effective Use of Generic Types | 7.7 | ||
Tuesday 4 Nov | Threads | 9.1 | ||
Thursday 6 Nov | Synchronization | 9.2-9.3 | ||
Tuesday 11 Nov | No class (replaced by project demos at the end of the term) | |||
Thursday 13 Nov | Research in Software Engineering | |||
Tuesday 18 Nov | Testing and Analysis | Slides on Functional Testing | ||
Thursday 20 Nov | Testing and Analysis | Slides on Structural Testing | CRAP4J | |
Tuesday 25 Nov | The Visitor Design Pattern | 10.6 | ||
Thursday 27 Nov | Object-Oriented Refactoring | Handouts | Eclipse Refactoring Tools | |
Tuesday 2 Dec | No class (Monday classes are scheduled) | Milestone 3 (11:59am) |