|[26 Oct 2010]||Milestone 3 instructions are posted.|
|[11 Oct 2010]||The midterm (on Oct 19) will be SADB M-1|
|[28 Sep 2010]||Milestone 2 instructions are posted.|
|[14 Sep 2010]||Milestone 1 instructions are posted.|
|[23 Aug 2010]||The details of the special project are posted.|
|[24 Jun 2010]||This page was just posted. Please return for updates.|
|Instructor:||Martin Robillard (email tips)|
|Time and place:||Tuesdays and Thursdays, 2:35-3:55, Trottier 0070|
|Office hours:||Tuesdays 11:00-12:00pm; Thursdays 4-5pm (in MC 114N).|
|TAs:||Sevan Hanssian, David Kawrykow, Tristan Ratchford (email tips)|
|TA availability:||Sevan: Fridays 10:00-11:00; David: Wednesdays 2:00-3:00 (Trottier Lab 3060)|
Principles, mechanisms, techniques, and tools for software development. The course involves a significant project.
Principles: Separation of concerns, encapsulation,
substitutablity, interface segregation.
Mechanism: Exception-handling, serialization support, concurrency and synchronization, reflection.
Techniques: Design patterns, design by contract, unit testing, refactoring.
Tools: Integrated software development environment, automatic testing tools, coverage analyzers, static checkers.
The learning outcomes for this course are organized along the four main conceptual axes of the course: principles, mechanisms, techniques, and tools. The following table lists the expected learning outcomes for the course (the table reads by row, from left to right).
After this course, you should be able to...
|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 ourse, have a look at the best projects from 2006, 2007, and 2008, and 2009.
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.
|Midterm exam (optional)||0%/30%|
Anything presented in class, all material in the mandatory reading, operational knowledge of the tools covered in the course, anything completed to meet the learning objectives of the project. The midterm will cover all lectures up to and including 14 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.
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).
The project will involve the development of an interactive card game called Hearts. Additionally, some students will have the opportunity to work on an open-source project (contact the instructor if you are interested).
Additional links will appear here as additional instructions are released. To get an idea of what you will be developing as a project have a look at the best projects from 2009, 2008, 2007, and 2006.
This schedule is subject to change. It is strongly recommended to do the readings before class.
|Thursday 2 Sep||Introduction||Chapter 1, Eclipse Platform Technical Overview (part I only)||Eclipse|
|Tuesday 7 Sep||The Development Process, UML||2.1-2.12, CVS Manual - Overview, optional article||Violet, CVS|
|Thursday 9 Sep||Class Design||3.1-3.5, optional article||Javadoc|
|Tuesday 14 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)|
|Thursday 16 Sep||Interface Types and Polymorphism||4.1-4.6||Checkstyle|
|Tuesday 21 Sep||GUI Primer||4.7-4.10, 8.1|
|Thursday 23 Sep||Design Demonstration 1|
|Tuesday 28 Sep||Design Patterns (Observer and Strategy)||5.1-5.4||Milestone 1 (11:59am)|
|Thursday 30 Sep||Design Patterns (Composite and Decorator)||5.5-5.8|
|Tuesday 5 Oct||Design Demonstration 2|
|Thursday 7 Oct||Inheritance-based reuse||6.1-6.3, optional article|
|Tuesday 12 Oct||Abstract classes and Template Method pattern||6.4-6.7,6.9|
|Thursday 14 Oct||Facade and Singleton patterns, exceptions||6.8, 7.8.2, 10.5|
|Tuesday 19 Oct||Midterm||In SADB M-1|
|Thursday 21 Oct||Elements of GUI Design and Command and Prototype patterns|
|Tuesday 26 Oct||Objects and Types||7.1-7.3||Milestone 2 (11:59am)|
|Thursday 28 Oct||Cloning, Serialization, and Reflection||7.4-7.6|
|Tuesday 2 Nov||Design Demonstration 3|
|Thursday 4 Nov||Effective Use of Generic Types||7.7|
|Tuesday 9 Nov||Guest lecture on Object-Oriented Refactoring in Practice by Debraj Das (Morgan Stanley)||[Refactoring Book by Fowler] Relevant material will be indicated in class||Eclipse Refactoring Tools|
|Thursday 11 Nov||No class||Class replaced by demos at the end of the term.|
|Tuesday 16 Nov||Threads||9.1|
|Thursday 18 Nov||Synchronization||9.2-9.3|
|Tuesday 23 Nov||Functional Testing||Slides on WebCT|
|Thursday 25 Nov||Structural Testing||Slides on WebCT|
|Tuesday 30 Nov||The Visitor Design Pattern||10.6||InCode|
|Thursday 2 Dec||Review for the Final||Milestone 3 (11:59am)|