[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 |
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 |
Credits: | 3 |
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. |
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 |
In-class workshops | 10% |
Midterm exam | 20% |
Project | 30% |
Final exam | 40% |
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 http://www.mcgill.ca/integrity for more information).
Date | Lecture Topics | Reading | Tools | Project |
Tuesday 4 Sep | Introduction | Chapter 1, Eclipse Platform Technical Overview (part I only) | Eclipse | |
Thursday 6 Sep | The Development Process, UML | 2.1-2.12, CVS Manual - Overview | Violet, CVS | |
Tuesday 11 Sep | Class Design | 3.1-3.5 | Email groups to TA | |
Thursday 13 Sep | Design by Contract, Unit Testing | 3.6-3.7, JUnit Cookbook | Javadoc, JUnit | Milestone 0 |
Tuesday 18 Sep | Interface Types and Polymorphism | 4.1-4.6 | Checkstyle | |
Thursday 20 Sep | Interface Types and Polymorphism | 4.7-4.10 | ||
Tuesday 25 Sep | Design Workshop 1 | Milestone 1 (11:59am) | ||
Thursday 27 Sep | Design Patterns (Observer and Strategy) | 5.1-5.4 | ||
Tuesday 2 Oct | Design Patterns (Composite and Decorator) | 5.5-5.8 | ||
Thursday 4 Oct | Design Workshop 2 | |||
Tuesday 9 Oct | No class (Monday classes scheduled today) | |||
Thursday 11 Oct | Midterm | |||
Tuesday 16 Oct | Inheritance-based reuse | 6.1-6.3 | ||
Thursday 18 Oct | Class Hierarchy Design, Exceptions | 6.4-6.9 | Milestone 2 (11:59am) | |
Tuesday 23 Oct | Design Patterns (Command, Prototype, Facade) | 7.8.2, 8.4.3, 10.2 | ||
Thursday 25 Oct | Design Workshop 3 | |||
Tuesday 30 Oct | Objects and Types | 7.1-7.3 | ||
Thursday 1 Nov | Cloning, Serialization, and Reflection | 7.4-7.6 | ||
Tuesday 6 Nov | Effective Use of Generic Types | 7.7 | CRAP4J | Milestone 3 (11:59am) |
Thursday 8 Nov | Threads | 9.1 | ||
Tuesday 13 Nov | Synchronization | 9.2-9.3 | ||
Thursday 15 Nov | Testing and Coverage | Handouts | EclEmma | |
Tuesday 20 Nov | The Visitor Design Pattern | 10.6 | ||
Thursday 22 Nov | Program Analysis and Reverse Engineering | ConcernMapper, Eclipse JDT | ||
Tuesday 27 Nov | Object-Oriented Refactoring | Handouts | Eclipse Refactoring Tools | Milestone 4 (11:59am) |
Thursday 29 Nov | Review for the final | |||
Tuesday 4 Dec | No class (time used for demo + evaluation) |