start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
start [2016/01/05 23:27] – jonathan | start [2017/05/08 19:29] (current) – jonathan | ||
---|---|---|---|
Line 1: | Line 1: | ||
~~NOTOC~~ | ~~NOTOC~~ | ||
- | ====== EECS3311 - Software design - Winter | + | ====== EECS3311 - Software design - Winter |
- | **EECS3311 - Software design - Winter 2016** | ||
- | Laptops, tablets, smartphones, | + | |
+ | **EECS3311 - Software design - Winter 2017** | ||
+ | |||
+ | Laptops, tablets, smartphones, | ||
===== Info ===== | ===== Info ===== | ||
- | * **Lectures**: | + | * **Lectures**: |
+ | * **Scheduled Labs**: Monday 5.30pm to 7pm in LAS1006. Start with [[: | ||
+ | * Quizzes every week during labs. | ||
* **Textbooks**: | * **Textbooks**: | ||
* Bertrand Meyer, //Touch of Class: Learning how to Program Well, with Objects and Contracts//, | * Bertrand Meyer, //Touch of Class: Learning how to Program Well, with Objects and Contracts//, | ||
- | * Bertrand Meyer. // | + | * [**OOSC2**] |
* //Design Patterns: Elements of Reusable Object-Oriented Software//, 1994, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides | * //Design Patterns: Elements of Reusable Object-Oriented Software//, 1994, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides | ||
* [[https:// | * [[https:// | ||
- | * **Informal Labs**: In addition to the assignments, | ||
===== Getting Started ===== | ===== Getting Started ===== | ||
Line 21: | Line 24: | ||
*See bottom** ↓** of this page for login with your Prism password. Slides are available from the SVN repository (see link in the sidebar, once you have logged on). | *See bottom** ↓** of this page for login with your Prism password. Slides are available from the SVN repository (see link in the sidebar, once you have logged on). | ||
- | * Office hours: A TA will be available during the Lab hour (5.30pm to 6.30pm) on Mondays in LAS1006. Office hours Thursdays 5.30-6.30pm in the SEL (CSE2056). Ask all course information on the forum. | + | * Office hours: A TA will be available during the Lab hour (5.30pm to 7pm) on Mondays in LAS1006. |
* Get started using the Eiffelstudio IDE on the first day of class ([[https:// | * Get started using the Eiffelstudio IDE on the first day of class ([[https:// | ||
Line 32: | Line 35: | ||
It is up to you to read and study relevant material without explicit instructions. You are expected to find the required readings in the references and any other sources you can find. Part of the university experience is to acquire a measure of self reliance. The instructor for the course can only guide you as to what is useful to learn; the effort must come from you. The course classes will not cover all the topics in detail. Instead, the classes will cover the most important points and give you pointers as to how the rest of the material can be studied. | It is up to you to read and study relevant material without explicit instructions. You are expected to find the required readings in the references and any other sources you can find. Part of the university experience is to acquire a measure of self reliance. The instructor for the course can only guide you as to what is useful to learn; the effort must come from you. The course classes will not cover all the topics in detail. Instead, the classes will cover the most important points and give you pointers as to how the rest of the material can be studied. | ||
+ | |||
+ | ===== Calendar Description ===== | ||
+ | |||
+ | A study of design methods and their use in the correct implementation, | ||
+ | |||
+ | ==== Learning Outcomes ==== | ||
+ | |||
+ | Software designers are experts at developing software products that are correct, robust, efficient and maintainable. Correctness is the ability of software products to perform according to specification. Robustness is the ability of a software system to react appropriately to abnormal conditions. Software is maintainable if it is well-designed according to the principles of abstraction, | ||
+ | |||
+ | 1. **Specification**: | ||
+ | |||
+ | 2. **Construction**: | ||
+ | |||
+ | 3. **Testing**: | ||
+ | |||
+ | 4. **Analysis**: | ||
+ | |||
+ | 5. **Architecture**: | ||
+ | |||
+ | 6. **Tools**: Develop facility in the use of an IDE for editing, organizing, writing, debugging, testing and documenting code including the use of BON/UML diagrams for documenting designs. Also the ability to deploy the software in an executable form. | ||
+ | |||
+ | 7. **Documentation**: | ||
+ | |||
+ | ==== Topics ==== | ||
+ | 1. Unit Tests, regression testing, using testing tools and debugging | ||
+ | |||
+ | 2. Specifying modules with classical contracts: preconditions, | ||
+ | |||
+ | 3. Iterator Pattern Design Pattern and quantification, | ||
+ | |||
+ | 4. Classes as partially implemented abstract datatypes specified with contracts. | ||
+ | |||
+ | 5. Static (compile time) type checking and dynamic binding semantics in object oriented design. | ||
+ | |||
+ | 6. Inheritance, | ||
+ | |||
+ | 7. Multi-panel Design Pattern (command and state pattern). | ||
+ | |||
+ | 8. ETF (Eiffel Testing Framework) with singleton, command, publish-subscribe and MVC design patterns | ||
+ | |||
+ | 9. Tuples and functional programming in design (lambda calculus and agents) | ||
+ | |||
+ | 10. Strategy design pattern. | ||
+ | |||
+ | 11. Decorator and Open-Closed Design Principle. Static Class Diagram and Dynamic Sequence Diagram. | ||
+ | |||
+ | 12. Composite and Visitor Design Patterns. UML inheritance (generalization) and client-supplier (associations, | ||
+ | |||
+ | 13. Using executable mathemtical models (sets, functions, and relations) to develop a model of a complex system, and an abstraction function for checking that an implementation satisfies the high-level model. | ||
+ | |||
+ | 14. Design by Contract, choosing the right abstractions and Information Hiding. | ||
+ |
start.1452036477.txt.gz · Last modified: 2016/01/05 23:27 by jonathan