{"id":39,"date":"2019-03-28T11:18:27","date_gmt":"2019-03-28T15:18:27","guid":{"rendered":"https:\/\/sites.bu.edu\/braude\/?page_id=39"},"modified":"2019-03-28T11:40:41","modified_gmt":"2019-03-28T15:40:41","slug":"met-cs-665-design-patterns-and-components","status":"publish","type":"page","link":"https:\/\/sites.bu.edu\/braude\/courses\/met-cs-665-design-patterns-and-components\/","title":{"rendered":"MET CS 665 Design Patterns and Components"},"content":{"rendered":"<p>Last updated August 8, 2002: Recent changes are often in red type<\/p>\n<p>1.\u00a0\u00a0\u00a0  Catalog Description<br \/>\n2.\u00a0\u00a0\u00a0  Contacting Eric Braude<br \/>\n3.\u00a0\u00a0\u00a0  Course Goals<br \/>\n4.\u00a0\u00a0\u00a0  Course Materials and References<br \/>\n5.\u00a0\u00a0\u00a0  Due dates for homework<br \/>\n6.\u00a0\u00a0\u00a0  Evaluation of Students<br \/>\n7.\u00a0\u00a0\u00a0  Forums, past and present<br \/>\n8.\u00a0\u00a0\u00a0  Learning Objectives<br \/>\n9.\u00a0\u00a0\u00a0  References<br \/>\n10.\u00a0 Syllabus and class dates<br \/>\n11.\u00a0 Warning concerning plagiarism<\/p>\n<h2><strong>Course Goals<\/strong><strong> <\/strong><\/h2>\n<p>Most contemporary languages and systems embrace  the object-oriented style. This course is designed to introduce students to  theories and methods of the object-oriented paradigm.<br \/>\nThe course is in two main parts: design patterns and components.\u00a0 The design patterns part covers an important  set of OO tools, and integrates these with Java.\u00a0 The components part shows how component technologies such as Java  Beans and .NET are leading to new ways to design, distribute, and re-use  software.<\/p>\n<h2><strong>Catalog  Description<\/strong><strong> <\/strong><\/h2>\n<p>Prerequisite: MET CS 565<\/p>\n<p>Principles of the Object-Oriented paradigm; extensive introduction to standard  Design Patterns, including creational, structural and behavioral patterns;  Component Technologies, including Java Beans and .NET.<\/p>\n<h2><strong>Learning  Objectives<\/strong><strong> <\/strong><\/h2>\n<ul>\n<li>Understand and implement goals of the OO       paradigm<\/li>\n<li>Understand and apply design patterns<\/li>\n<li>Understand and apply component technology<\/li>\n<\/ul>\n<h2><strong>Course Materials<\/strong><strong> and References<\/strong><strong> <\/strong><\/h2>\n<p>Design Patterns by Gamma, Helms, Johnson and  Vlissides (Addison Wesley) ISBN 0-201-63361-2<\/p>\n<p>Recommended (but not  required): Component Software : Beyond Object-Oriented Programming by  Clemens Szyperski<\/p>\n<p>You will need either the JDK  from Sun or a development environment. Of the latter, I recommend Visual Age by  IBM, which is available free, or Symantec&#8217;s Visual Java.<\/p>\n<h2><strong>Evaluation of  Students<\/strong><strong> <\/strong><\/h2>\n<p>The course will consist of homework, together  with a final, weighted as follows:<\/p>\n<ul>\n<li>Homework: 70%<\/li>\n<li>Final: 30%<\/li>\n<\/ul>\n<p>Unless otherwise stated, parts of every assignment are evaluated equally.<\/p>\n<p>Late homework without a written reason why it was *impossible* will not be  accepted. In case of such an impossibility, please write the reason on the  paper: the work will be graded on a pass\/fail basis.<\/p>\n<p>If you cannot be at class, fax homework to (617) 353-2367. If you want to check  that the fax was received by the office, please call the secretarial staff at  (617) 353-2566.\u00a0 Please do not e-mail it  unless a FAX is unavailable.<\/p>\n<h2><strong>Due dates for  homework<\/strong><strong> <\/strong><\/h2>\n<p>When homework is due in two weeks, you are advised to try the homework upon  assignment and bring questions to the following class.\u00a0 The due dates are as follows.<\/p>\n<p><strong> <\/strong><\/p>\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"720\">\n<tbody>\n<tr>\n<td width=\"9%\" valign=\"top\">Number<\/td>\n<td width=\"32%\" valign=\"top\">Name<\/td>\n<td width=\"33%\" valign=\"top\">Question Numbers in Notes<\/td>\n<td width=\"25%\" valign=\"top\">Due date<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">1<\/td>\n<td width=\"32%\" valign=\"top\">Introduction (Pass\/Fail)<\/td>\n<td width=\"33%\" valign=\"top\">1.1, 1.2<\/td>\n<td width=\"25%\" valign=\"top\">5\/29<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">2<\/td>\n<td width=\"32%\" valign=\"top\">UML (Pass\/Fail)<\/td>\n<td width=\"33%\" valign=\"top\">3.2, 3.3, 3.4<\/td>\n<td width=\"25%\" valign=\"top\">6\/6<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">3.1<\/td>\n<td width=\"32%\" valign=\"top\">Toll Booth<\/td>\n<td width=\"33%\" valign=\"top\">5.2<\/td>\n<td width=\"25%\" valign=\"top\">6\/19<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">3.2<\/td>\n<td width=\"32%\" valign=\"top\">Types of Design Patterns<\/td>\n<td width=\"33%\" valign=\"top\">6.1, 6.3, 6.5, 6.7<\/td>\n<td width=\"25%\" valign=\"top\">6\/19<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">4<\/td>\n<td width=\"32%\" valign=\"top\">Creational Patterns<\/td>\n<td width=\"33%\" valign=\"top\">7.2, 7.3, 7.4<\/td>\n<td width=\"25%\" valign=\"top\">7\/10<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">5<\/td>\n<td width=\"32%\" valign=\"top\">Structural Patterns<\/td>\n<td width=\"33%\" valign=\"top\">8.2, 8.3, 8.4<\/td>\n<td width=\"25%\" valign=\"top\">7\/17<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">6<\/td>\n<td width=\"32%\" valign=\"top\">XML Parser, Undo<\/td>\n<td width=\"33%\" valign=\"top\">9.2, 9.5<\/td>\n<td width=\"25%\" valign=\"top\">7\/31<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">7<\/td>\n<td width=\"32%\" valign=\"top\">Dishwasher manuals<\/td>\n<td width=\"33%\" valign=\"top\">9.6<\/td>\n<td width=\"25%\" valign=\"top\">8\/7<\/td>\n<\/tr>\n<tr>\n<td width=\"9%\" valign=\"top\">8<\/td>\n<td width=\"32%\" valign=\"top\">Java Bean example<\/td>\n<td width=\"33%\" valign=\"top\">11.3<\/td>\n<td width=\"25%\" valign=\"top\">8\/7<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong>Warning  concerning plagiarism<\/strong><strong> <\/strong><\/h2>\n<p>The College has serious penalties for  plagiarism, including expulsion from the degree program. Please be very careful  not to use the work of others without very clear and specific acknowledgement.<\/p>\n<p>e-mail, see or call me if you have any doubts. In any case, clearly acknowledge  all sources in the context they are used, including code, of course.<\/p>\n<h2><strong>Syllabus<\/strong><strong> <\/strong><\/h2>\n<p>The following is subject to change, the goal  being to cover more design patterns and related topics: however, this depends  on the background of the students.<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td width=\"58\"><strong>Class<\/strong><\/p>\n<p><strong>Num<\/strong><\/td>\n<td width=\"57\"><span style=\"text-decoration: underline;\">Date<\/span><\/td>\n<td width=\"233\"><strong>Topics<\/strong><\/td>\n<td width=\"87\">\n<h1>Reading<\/h1>\n<\/td>\n<td width=\"125\"><strong>Comments<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">1<\/td>\n<td width=\"57\">5\/22<\/td>\n<td width=\"233\">Introduction; OO; UML<\/td>\n<td width=\"87\">Notes 1-3<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">2<\/td>\n<td width=\"57\">5\/29<\/td>\n<td width=\"233\">Software Design Principles    I<\/td>\n<td width=\"87\">Notes 4<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\" width=\"58\">3<\/td>\n<td rowspan=\"2\" width=\"57\">6\/5<\/td>\n<td rowspan=\"2\" width=\"233\">Software Design Principles    II;<\/p>\n<p>Introduction to Design    Patterns<\/td>\n<td width=\"87\">Notes 5<\/td>\n<td rowspan=\"2\" width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"87\">GAMMA 1 &amp; 2<\/td>\n<\/tr>\n<tr>\n<td width=\"58\">4<\/td>\n<td width=\"57\">6\/12<\/td>\n<td width=\"233\">Creational Design Patterns    I<\/td>\n<td width=\"87\">GAMMA 3<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">5<\/td>\n<td width=\"57\">6\/19<\/td>\n<td width=\"233\">Creational Design Patterns    II<\/td>\n<td width=\"87\">GAMMA 3<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">6<\/td>\n<td width=\"57\">6\/26<\/td>\n<td width=\"233\">Structural Design Patterns    I<\/td>\n<td width=\"87\">GAMMA 4<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">7<\/td>\n<td width=\"57\">7\/3<\/td>\n<td width=\"233\"><\/td>\n<td width=\"87\"><\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">8<\/td>\n<td width=\"57\">7\/10<\/td>\n<td width=\"233\">Structural Design Patterns    II<\/td>\n<td width=\"87\">GAMMA 4<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">9<\/td>\n<td width=\"57\">7\/17<\/td>\n<td width=\"233\">Behavioral Design Patterns    I<\/td>\n<td width=\"87\">GAMMA 5<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">10<\/td>\n<td width=\"57\">7\/24<\/td>\n<td width=\"233\">Behavioral Design Patterns    II<\/td>\n<td width=\"87\">GAMMA 5<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">11<\/td>\n<td width=\"57\">7\/31<\/td>\n<td width=\"233\">Introduction to Components    and Beans<\/td>\n<td width=\"87\">Szyperski<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">12<\/td>\n<td width=\"57\">8\/7<\/td>\n<td width=\"233\">Components: C# \/ .NET<\/td>\n<td width=\"87\">Szyperski<\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<tr>\n<td width=\"58\">11 1\/2<\/td>\n<td width=\"57\">8\/8<\/td>\n<td width=\"233\">Review for final<\/td>\n<td width=\"87\"><\/td>\n<td width=\"125\">In SMG 228<\/td>\n<\/tr>\n<tr>\n<td width=\"58\">13<\/td>\n<td width=\"57\">8\/14<\/td>\n<td width=\"233\">Final (3 hours)<\/td>\n<td width=\"87\"><\/td>\n<td width=\"125\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>References<\/h3>\n<p><a href=\"http:\/\/hillside.net\/patterns\/\">http:\/\/hillside.net\/patterns\/<\/a> &#8212; links to  the pattern community<\/p>\n<p><a href=\"https:\/\/swt.informatik.uni-rostock.de\/swt_lehrstuhl\/\">https:\/\/swt.informatik.uni-rostock.de\/swt_lehrstuhl\/ <\/a>\u2013 excellent way to think about patterns as real-world (non \u2013  software) concepts<\/p>\n<p><strong>Forums \u2013 past and present<\/strong><\/p>\n<p>Forum: Summer 2000<\/p>\n<p>Forum:  Fall 2000<\/p>\n<p>Forum:  Summer 2001<\/p>\n<p>Forum:  Fall 2001<\/p>\n<p>Forum:  Spring 2002 <a href=\"https:\/\/groups.yahoo.com\/neo\/groups\/665Spr02\/info\">https:\/\/groups.yahoo.com\/neo\/groups\/665Spr02\/info<\/a> email: <a href=\"mailto:665spr02@yahoogroups.com\">665spr02@yahoogroups.com<\/a><\/p>\n<p>Forum:  Summer 2002 email: 665Su2001@yahoogroups.com<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last updated August 8, 2002: Recent changes are often in red type 1.\u00a0\u00a0\u00a0 Catalog Description 2.\u00a0\u00a0\u00a0 Contacting Eric Braude 3.\u00a0\u00a0\u00a0 Course Goals 4.\u00a0\u00a0\u00a0 Course Materials and References 5.\u00a0\u00a0\u00a0 Due dates for homework 6.\u00a0\u00a0\u00a0 Evaluation of Students 7.\u00a0\u00a0\u00a0 Forums, past and present 8.\u00a0\u00a0\u00a0 Learning Objectives 9.\u00a0\u00a0\u00a0 References 10.\u00a0 Syllabus and class dates 11.\u00a0 Warning concerning plagiarism [&hellip;]<\/p>\n","protected":false},"author":2828,"featured_media":0,"parent":22,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages\/39"}],"collection":[{"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/users\/2828"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/comments?post=39"}],"version-history":[{"count":2,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages\/39\/revisions"}],"predecessor-version":[{"id":41,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages\/39\/revisions\/41"}],"up":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages\/22"}],"wp:attachment":[{"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/media?parent=39"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}