====== Lectures, Readings, and Exercises ====== ===== General Notes ===== * //Touch of Class// is available with [[https://www.library.yorku.ca/find/Search/Results?mylang=en&lookfor=touch+of+class&submit=Find&type=AllFields|online access]] via Steacie Library (you need your library account for this). * You will be **required** to read extracts from the book (which you can get access to using your library login) on specific topics, but you may also want to read other relevant sections to understand the context better. * Under the heading of each week there is a **Topics** section. Use that for you to reflect on the materials and as a guidance to prepare for the tests and exam. ==== Week 1 (May 20) ==== === Slides and Notes === * Overview of Course [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_00_Administrative.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_00_Administrative_4up.pdf|4-up version]] * Overview of TDD and DbC (Slides 1 to 54) [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_01_Overview.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_01_Overview_4up.pdf|4-up version]] * [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/notes/EECS3311-S15_Week01_Notes.pdf|Class Notes]] === Readings === * Section 4.6 of //Touch of Class// has a short introduction to contracts. * Sections 13.1 & 13.2 of //Touch of Class// has a short introduction to genericity. * Many video tutorials on the official [[https://www.eiffel.com/resources/presentations/|Eiffel website]] * 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]]) ==== Week 2 (May 27) ==== === Readings before Lecture === * Void Safety * My [[https://forum.eecs.yorku.ca/viewtopic.php?f=294&t=7704#p21170|forum response]] on type checking, void checks at compile time and runtime, and how void safety is supported in EStudio * A [[https://docs.eiffel.com/book/method/void-safety-background-definition-and-tools|short introduction]] === Slides and Notes === * Overview of TDD and DbC (from slide 55) [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_01_Overview.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_01_Overview_4up.pdf|4-up version]] * ADTs, Classes, and Objects [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_02_ObjectsClassesADTs.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_02_ObjectsClassesADTs_4up.pdf|4-up version]] * [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/notes/EECS3311-S15_Week02_Notes.pdf|Class Notes]] === References === * [[https://www.mathsisfun.com/polar-cartesian-coordinates.html|Conversion between Cartesian Coordinates and Polar Coordinates]] ==== Week 3 (June 3) ==== === Slides and Notes === * Iterator Pattern (up to Slide 12) [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_03_Iterator_Singleton_Patterns.pdf|pdf]] [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_03_Iterator_Singleton_Patterns_4up.pdf|4-up version]] * BON diagrams for the [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_03_BON_Iterator_Pattern.pdf|iterator pattern]] and the [[https://svn.eecs.yorku.ca/repos/3311/2015S/Public/slides/EECS3311-S15_03_BON_Singleton_Pattern.pdf|singleton pattern]] * You should try to practice your drawing by using Visio to reproduce these architectural diagrams. ==== Week 4 (June 10) ==== === 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]] * [[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]] * 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