User Tools

Site Tools


lectures

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
lectures [2015/06/10 22:13] jackielectures [2015/08/13 03:39] (current) jackie
Line 22: Line 22:
   * Two video introductions to Design by Contract [[https://www.youtube.com/watch?v=v1phSCx_Vvg|part 1]] [[https://www.youtube.com/watch?v=8XV0khSeKaw|part 2]]   * Two video introductions to Design by Contract [[https://www.youtube.com/watch?v=v1phSCx_Vvg|part 1]] [[https://www.youtube.com/watch?v=8XV0khSeKaw|part 2]]
   * A short video introduction to Eiffel Studio ([[https://www.youtube.com/watch?v=nxt65skoH4o|link]])   * A short video introduction to Eiffel Studio ([[https://www.youtube.com/watch?v=nxt65skoH4o|link]])
- 
-=== Topics === 
-  * Requirements vs. Design vs. Implementation 
-  * What is design?  
-    * Architecture 
-    * Specification of behaviour  
-  * What are the criteria of good design? 
-    * correct  
-    * efficient 
-    * maintainable 
-      * modular 
-      * stable interface 
-      * **information hiding**  
-  * Design by Contract 
-    * precondition, postcondition, and class invariant 
-    * the precondition of a feature is the obligation of its client but benefits of its supplier 
-    * the postcondition of a feature is the benefits of its client but obligation of its supplier 
-  * Logic 
-    * the notion that a predicate is weaker or stronger than another 
-    * a precondition can be strengthened to disallow input values that will cause a class invariant violation upon executing the command (e.g., withdraw) 
-    * a satisfactory precondition is derived from the class invariant 
-    * a wrong implementation may pass through a postcondition that is too weak 
-    * a postcondition can be strengthened to disallow improper updates on the state 
-  * Testing 
-    * not to prove correctness, but to reveal bugs 
-    * partition input domain into equivalence classes 
-  * Eiffel Studio 
-    * create an empty project 
-    * add the espec (Eiffel Specification) testing library 
-    * at runtime,  
-      * before a feature's implementation body is executed, its precondition and the class invariant are checked;  
-      * then the implementation body is executed;  
-      * upon its termination, the postcondition and the class invariants are checked. 
  
 ==== Week 2 (May 27) ==== ==== Week 2 (May 27) ====
Line 83: Line 50:
 === Slides and Notes === === Slides and Notes ===
   * Writing Complete Contracts [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_04_Complete_Contract.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_04_Complete_Contract_4up.pdf|4-up version]]   * Writing Complete Contracts [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_04_Complete_Contract.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_04_Complete_Contract_4up.pdf|4-up version]]
 +    * [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/code/array_math_contract.zip|code that you should play with]]
   * Syntax: Contracts vs. Implementations [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_05_Syntax_Contracts_Implementation.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_05_Syntax_Contracts_Implementation_4up.pdf|4-up version]]   * Syntax: Contracts vs. Implementations [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_05_Syntax_Contracts_Implementation.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_05_Syntax_Contracts_Implementation_4up.pdf|4-up version]]
   * Inheritance and Polymorphism [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_06-InheritancePolymorphism.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_06-InheritancePolymorphism_4up.pdf|4-up version]]   * Inheritance and Polymorphism [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_06-InheritancePolymorphism.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_06-InheritancePolymorphism_4up.pdf|4-up version]]
  
 +==== Week 8 (July 8) ====
  
 +=== Slides and Notes ===
 +  * Eiffel Testing Framework (ETF) [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_07-EiffelTestingFramework.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_07-EiffelTestingFramework_4up.pdf|4-up version]]
 +
 +
 +==== Week 9 (July 15) ====
 +
 +=== Slides and Notes ===
 +  * Composite Pattern [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15-08_Composite_Pattern.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15-08_Composite_Pattern_4up.pdf|4-up version]]
 +    * [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/code/composite-src.zip|code that you should play with]]
 +  * Visitor Pattern [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15-09_Visitor_Pattern.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15-09_Visitor_Pattern_4up.pdf|4-up version]]
 +
 +==== Week 12 (August 5) ====
 +
 +=== Slides and Notes ===
 +  * DbC and Loops (up to slide 21) [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_10_Dbc_Loops.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_10_Dbc_Loops_4up.pdf|4-up version]]
 +  * The [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/readings/OOSC2_DbC.pdf|DbC Chapter in OOSC2]] 
 +    * You can also find details about the Hoare triple here.
 +
 +==== Week 13 (August 12) ====
 +
 +=== Slides and Notes ===
 +  * DbC and Loops (from Slide 22 to the end) [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_10_Dbc_Loops.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_10_Dbc_Loops_4up.pdf|4-up version]]
 +    * [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/notes/EECS3311-S15_Exercise_WP.pdf|Exercise on Proving Loop Correctness]] which you're expected to complete.
 +    * [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/code/loop_correctness.zip|Example code of loop invariant and variant]] that you should play with
lectures.1433974403.txt.gz · Last modified: 2015/06/10 22:13 by jackie

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki