course_outline
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
course_outline [2015/05/19 13:02] – jackie | course_outline [2015/05/20 03:41] (current) – jackie | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Course Outline ====== | ====== Course Outline ====== | ||
- | ===== Calendar Description | + | ==== Calendar Description ==== |
- | A study of design methods and their use in the correct implementation, | + | A study of design methods and their use in the correct implementation, |
+ | |||
+ | ==== Prerequisites | ||
+ | |||
+ | - EECS2001 | ||
+ | - EECS2031 | ||
+ | - MATH1090 | ||
+ | - General prerequisites | ||
+ | - EECS2011 | ||
+ | - GPA of 4.5 or better over all completed major CS courses | ||
+ | |||
+ | See [[http://lassonde.yorku.ca/ | ||
+ | | ||
==== Learning Outcomes ==== | ==== Learning Outcomes ==== | ||
Line 34: | Line 46: | ||
* Design Patterns | * Design Patterns | ||
* Documenting Design Decisions and demonstrating that code satisfies the design | * Documenting Design Decisions and demonstrating that code satisfies the design | ||
- | |||
- | ===== Weekly Lecture Schedule ===== | ||
- | |||
- | | Week | Lecture Date | Topics | Readings ^ Released ^ Due ^ Note ^ | ||
- | | 1 | May 20 | ||
- | | 2 | May 27 | ||
- | | 3 | June 3 | ||
- | | 4 | June 10 | | | | | | | ||
- | | 5 | June 17 | | | Assignment | | | | ||
- | | 6 | June 24 | | | | Midterm Test \\ (19:00 - 20:30, in class) | No Lecture (Online Lecture Required) | | ||
- | | 7 | July 1 | ||
- | | 8 | July 8 | ||
- | | 9 | July 15 | | | Project | ||
- | | 10 | July 22 | | | | | No Lecture (Summer Break) | | ||
- | | 11 | July 29 | | | | Lab Test \\ (17:00 - 18:30, Prism lab) | | | ||
- | | 12 | Aug. 5 | ||
- | | 13 | Aug. 12 | | | | | ||
- | | 14 | Aug. 19 | | | | 1. Project Phase 2 \\ 2. Report | | | ||
- | | 15 | Aug. 21 - 28 | Exam Period | ||
- | |||
- | Submission deadlines are **12 p.m. (noon)** on the corresponding lecture dates (**Wednesdays**). | ||
- | |||
- | |||
- | ===== Detailed Topics ===== | ||
- | |||
- | The suggested textbooks should help you do self-paced learning, a requirement for this course. The lectures, Labs, assignments and Project will exercise your understanding that you should develop by reading and working on your own. | ||
- | |||
- | TOC is an introductory text for computer science that covers the topics you normally do in EECS1020/ | ||
- | |||
- | See the 591 slides of BigEiffel.pdf in the SVN, for a summary of the language and design features. | ||
- | |||
- | === Slides 02-W15-DBC-TDD === | ||
- | |||
- | **Readings: | ||
- | |||
- | *Suggested Reading: OOSC2 Chapter 1 and Chapter 3. See [[http:// | ||
- | *Required reading: | ||
- | *OOSC2, Chapter 7 (the static structure: classes). See [[http:// | ||
- | * Chapter 8 (the runtime structure: objects). See [[http:// | ||
- | *Chapter 11 (sections 11.8 to 11.9: class correctness via preconditions, | ||
- | |||
- | Topics covered in class using the slides include: | ||
- | * Requirements, | ||
- | * Why is their a need for Design? What are the goals of doing Design? | ||
- | * Illustration of the Design of a small bank system from Requirements to Implementation. | ||
- | * The importance of Unit Testing. Test Driven Development (TDD). | ||
- | * Using the ESpec testing framework: boolean tests and violation tests | ||
- | * What is a Class? It's static structure | ||
- | * What is an Object? It's dynamic structure | ||
- | * Representing system architecture via BON (and UML) class diagrams. | ||
- | * Relationships between classes: Client-Supplier (associations) and Inheritance | ||
- | * Uniform Acces Principle (and information hiding) | ||
- | * Using Eiffel for DbC | ||
- | * Using the EiffelStudio Debugger for Testing, and ECF files for clusters and libraries | ||
- | * Using the EiffelStudio BON diagraming tool | ||
- | * The design and use of generic collection classes such as ARRAY[G] and LIST[G]. | ||
- | * Expanded and Reference Types | ||
- | * Object comparisons versus Reference comparisons | ||
- | * The difference between " | ||
- | * Void Violation Cases and Void Safety | ||
- | * What is Design? Architecture and Specifications | ||
- | * The BON diagram notation for Architecture | ||
- | * Information Hiding | ||
- | * Abstraction and abstract (deferred) classes | ||
- | * The Command-Query separation Principle and DbC | ||
- | * DbC: obligations and benefits in contracting | ||
- | |||
- | Class included a demo of compile time void safety checks | ||
- | |||
- | === Slides 03 === | ||
- | Iterator (with **across** construct for quantifiers in contracts) and Singleton Pattern | ||
- | |||
- | === Slides 04 === | ||
- | *Static (compile time) classes vs. dynamic (runtime) objects | ||
- | * Classes as partially implemented ADTs (abstract data types) | ||
- | * reference vs. expanded types | ||
- | |||
- | === Slides 05 === | ||
- | * Design by Contract (Dbc) | ||
- | * Hoare Logic | ||
- | * Class correctness proof obligations | ||
- | |||
- | === Slides 06 === | ||
- | |||
- | OOSC2 chapters 14, 15, 16 and 17 | ||
- | * Inheritance, | ||
- | |||
- | === Slides 07 === | ||
- | OOSC2 and chapter 20 | ||
- | *Multi-panael Design Pattern | ||
- | |||
- | === Slides 08 === | ||
- | |||
- | *Eiffel Testing Framework (ETF) and acceptance tests | ||
- | * ETF includes singleton, command, publish-subscribe and MVC design patterns | ||
- | |||
- | === Slides 09 === | ||
- | |||
- | Tuples and functional programming (lambda calculus and agents) | ||
- | |||
- | === Slides 10 === | ||
- | * Strategy design pattern | ||
- | |||
- | === Slides 11 === | ||
- | |||
- | * Observer Design Pattern | ||
- | * Event Based Programming and Publish-subscribe (EVENT_TYPE abstraction using agents) | ||
- | |||
- | === SDD -- Software Design Document === | ||
- | |||
- | SDD -- Software Design Document | ||
- | *See [[https:// | ||
- | * Koopman and Toyota Unintended acceleration (see video and slides [[https:// | ||
- | |||
- | === Slides 12 === | ||
- | |||
- | Design Pattern: Decorator and Open-Closed Design Principle. Static Class Digram and Dynamic Sequence Diagram. See Code sample. | ||
- | |||
- | === Slides 13 === | ||
- | |||
- | Design Pattern: Composite. See code sample. UML inheritance (generalization) and client-supplier (associations, | ||
- | |||
- | |||
- | === Slides 14 === | ||
- | |||
- | Design Pattern: Visitor. See code sample. Static and Dynamic sequence diagram. | ||
- | |||
- | === Slides 15 === | ||
- | Design by Contract and Exceptions. An exception is a violation of the contracts not a normal sequencing mechanism. The problem with using exceptions in place of preconditions in Java, C# etc. (a) An exception is the negation of the precondition, | ||
- | |||
- | === Slides 16 === | ||
- | Correctness: | ||
- | |||
- | [[https:// | ||
- | lampsort/ | ||
- | |||
- | The Eiffel method treats the whole | ||
- | process of software development as a continuum; unifying | ||
- | the concepts behind activities such as requirements, | ||
- | specification, | ||
- | maintenance and evolution; and working to resolve the | ||
- | remaining differences, | ||
- | |||
- | Formal specification languages look remarkably like | ||
- | programming languages; to be usable for significant | ||
- | applications they must meet the same challenges: defining a | ||
- | coherent type system, supporting abstraction, | ||
- | good syntax (clear to human readers and parsable by tools), | ||
- | specifying the semantics, offering modular structures, | ||
- | allowing evolution while ensuring compatibility. | ||
- | The same kinds of ideas, such as an objectoriented | ||
- | structure, help on both sides. Eiffel as a | ||
- | language is the notation that attempts to support | ||
- | this seamless, continuous process, providing tools | ||
- | to express both **abstract specifications** and **detailed | ||
- | implementations**. |
course_outline.1432040566.txt.gz · Last modified: 2015/05/19 13:02 by jackie