[6 Nov 2009] | The final exam is scheduled for 22 December at 2pm. |
[26 Oct 2009] | Milestone 3 instructions released. |
[24 Sep 2009] | Milestone 2 instructions released. |
[18 Sep 2009] | Updated CVS Setup Instructions |
[3 Sep 2009] | Milestone 1 instructions released. |
[1 Sep 2009] | Milestone 0 instructions released. |
Instructor: | Martin Robillard (email tips) |
Time and place: | Tuesdays and Thursdays, 2:35-3:55, Trottier 0060 |
Office hours: | Tuesdays 4-5pm; Thursdays 1-2pm (in MC 114N). |
Credits: | 3 |
TA: | David Kawrykow and Tristan Ratchford (email tips) |
TA availability: | Mondays 11:00 (Tristan, in Trottier Trottier Lab 3060); Wednesdays 10:00-11:00 (David, in Trottier Lab 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, 2007, and 2008.
Complementary Textbook on Testing: Pezzè, Young. Software Testing and Analysis: Process, Principles, and Techniques. Wiley, 2008. On reserve at the library.
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.
In accord with McGill University's Charter of Students' Rights, students in this course have the right to submit in English or in French any written work that is to be graded.
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).
Date | Lecture Topics | Reading | Tools | Project |
Tuesday 1 Sep | Introduction | Chapter 1, Eclipse Platform Technical Overview (part I only) | Eclipse | |
Thursday 3 Sep | The Development Process, UML | 2.1-2.12, CVS Manual - Overview, optional article | Violet, CVS | |
Tuesday 8 Sep | Class Design | 3.1-3.5, optional article | Javadoc | |
Thursday 10 Sep | Design by Contract(TM), Unit Testing | 3.6-3.7, JUnit Cookbook, optional article 1, optional article 2 | JUnit, EclEmma | Milestone 0 (17:00) |
Tuesday 15 Sep | Interface Types and Polymorphism | 4.1-4.6 | Checkstyle | |
Thursday 17 Sep | Interface Types and Polymorphism | 4.7-4.10, 8.1 | ||
Tuesday 22 Sep | Design Workshop 1 | |||
Thursday 24 Sep | Design Patterns (Observer and Strategy) | 5.1-5.4 | Milestone 1 (11:59am) | |
Tuesday 29 Sep | Design Patterns (Composite and Decorator) | 5.5-5.8 | ||
Thursday 1 Oct | Design Workshop 2 | |||
Tuesday 6 Oct | Inheritance-based reuse | 6.1-6.3optional article | ||
Thursday 8 Oct | Abstract classes and Template Method pattern | 6.4-6.7,6.9 | ||
Tuesday 13 Oct | Exceptions and Facade pattern | 6.8, 7.8.2 (Facade pattern) | ||
Thursday 15 Oct | Midterm | |||
Tuesday 20 Oct | Elements of GUI Design and Command and Prototype patterns | |||
Tuesday 22 Oct | Design Workshop 3 | Milestone 2 (11:59am) | ||
Tuesday 27 Oct | Objects and Types | 7.1-7.3 | ||
Thursday 29 Oct | Cloning, Serialization, and Reflection | 7.4-7.6 | ||
Tuesday 3 Nov | Effective Use of Generic Types | 7.7 | ||
Thursday 5 Nov | The Visitor Design Pattern | 10.6 | ||
Tuesday 10 Nov | Threads | 9.1 | ||
Thursday 12 Nov | Synchronization | 9.2-9.3 | ||
Tuesday 17 Nov | Functional Testing | Slides on WebCT | ||
Thursday 19 Nov | Structural Testing | Slides on WebCT | ||
Tuesday 24 Nov | No class | Class replaced by demos at the end of the term. | ||
Thursday 26 Nov | Object-Oriented Refactoring | [Refactoring Book by Fowler] Relevant material will be indicated in class | Eclipse Refactoring Tools, InCode | |
Tuesday 1 Dec | Review for the Final | Milestone 3 (11:59am) |