Skip to content

Latest commit

 

History

History
259 lines (136 loc) · 18.6 KB

Syllabus-417.md

File metadata and controls

259 lines (136 loc) · 18.6 KB

Central Connecticut State University

CS 417 Design Patterns

Fall 2018

Instructor: Dr. Chad Williams, Department of Computer Science

Office: MS 303 Phone: 860-832-2719

Office hours: MW 1:30-2:30; TR 10:30-12:00; and by appointment.

e-mail: cwilliams@ccsu.edu

Course website:

Class: 4:30-5:45pm Monday and Wednesday in MS 204

Required book:

Gamma, Helm, Johnson, and Vlissides. “Design Patterns: Elements of Reusable Object-Oriented Software” (1994) - informally known as “The Bible by The Gang of 4” when it comes to design patterns.

Optional book:

Jia. “Object-Oriented Software Development using Java, 2nd ed.” Addison-Wesley (2002). - covers a couple additional patterns we will cover and provides some guidance on implementation of the patterns although Java libraries used are dated.

Course description: The focus of the course will be on moving from basic OO programming to developing an in depth knowledge of how to use advanced OO design patterns. Students will develop a better understanding of how to apply OO techniques including abstraction, encapsulation, modularity, message passing, polymorphism, inheritance, and exception handling. Students will be introduced to a broad array of proven design patterns, when they should be used, and how to implement them in practice. These patterns will include: Singleton, Template, Strategy, Iterator, Factory, and Delegation. Students will also learn how to incorporate the Collections, Generics, Composite, Comparators, and MVC frameworks. Most importantly, students will learn to evaluate what makes each design pattern appropriate for a particular application.

As part of this course students will learn key skills for team based designing and developing OO architectures in practice. A key aspect will be integrating UML into the design process based on the Rational Unified Process (RUP) for the patterns being learned. Students will also learn how to implement all patterns discussed in class and how to create automated testing of their OO system and the proper way to implement exception handling. Finally, students will learn proper use of version control in a team setting. Prerequisites: Grade of C- or better in CS 253

3.000 Credit Hours

Program educational objectives and student outcomes

This course supports the following program objectives and program learning outcomes:

  • PEO-1: Graduates will apply a broad understanding of the fundamental theories, concepts, and applications of computer science in their career.

    • SO-1: Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.

    • SO-2: Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.

    • SO-6: Apply computer science theory and software development fundamentals to produce computing-based solutions.

  • PEO-2: Graduates will be engaged in a wide range of careers and/or graduate studies in computer science or related fields with a passion for lifelong learning.

    • SO-5: Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.

Course learning outcomes

Program objectives and program learning outcomes are supported by the following course learning outcomes achieved by students upon a successful completion of this course:

  • CLO-1: Develop an in depth understanding of applying advanced object oriented design patterns to real world problems (SO-1,2,6)

  • CLO-2: Understand how to use UML in complex RUP design: Object and classes, relationships, state and sequence diagrams (SO-1,2,6)

  • CLO-3: Increase understanding of the key aspects of object-oriented design: abstraction, encapsulation, modularity, message passing, polymorphism, inheritance, exception handling (SO-1,2,6)

  • CLO-4: Develop and advanced knowledge of the following design patterns: Singleton, Template, Strategy, Iterator, Factory, Delegation (SO-1,2,6)

  • CLO-5: Knowledge of how to incorporate the following frameworks into an application design: Collections, Generics, Composite, Comparators, and MVC (SO-1,2,6)

  • CLO-6: Better understand unit and integration testing design and how to automate testing of each (SO-1,2,6)

  • CLO-7: The course will culminate in a large final project that will require working on teams and choosing the right design patterns covered throughout the course (SO-1,2,5,6)

Grading for the course:

Percentage of grade:
Assignments 25%
Exams 30%
Final project 45%

Letter grade will be calculated according to the following table:

A A- B+ B B- C+ C C- D+ D D- F
95-100 90-94 87-89 84-86 80-83 77-79 74-76 70-73 67-69 64-66 60-63 0-59

Participation and in class work: We will be doing a lot of in class group work which is critical to your understanding of the material and drives the entire class' learning. As a result I take your effort in it very seriously. If you do not participate you will not receive a passing grade for this course. Participating does not simply mean showing up for class. It means fully engaging and contributing to your group’s work. Simply being part of a group that turns in the work does not mean you are actively contributing. A detailed explanation that applies both to lectures as well as in-class work can be found at http://www.cs.ccsu.edu/~williams/classes/WhatDoesClassParticipationMean.pdf.

Finally, I know you are very bright otherwise you wouldn't be here, and I value your ideas and contributions in making this class better. Because I believe your active participation makes the class a better learning experience for all, I appreciate your questions anytime you don’t fully understand something or questions on how the material might be applied in practice. I do not expect you to know all of the answers. Thoughtful participation regardless of correctness will be rewarded.

Assignments: Assignment guidelines: While most work in this class will be turned in electronically, any hand written work you turn in to me must be neat and readable. If I can't read it I will not score points for that portion. For assignments, there are two types: design assignments, and programming assignments. For design assignments, in addition to having the correct design you must explain the rationale for your approach to get full credit. In the professional world being able to articulate your reasons is a critical component of selling your solution to others even if it is the right solution. The same can be said in this class.

Stay tuned throughout the semester on how each assignment will be turned in

Each assignment is due at the beginning of class of the day listed unless otherwise instructed. You should begin each assignment as it is handed out. By starting assignments early, you have the opportunity to ask me to clarify those things you do not understand. It is essential that you commit yourself to regular studying to keep pace with the course and deadlines. If you are having difficulty with any aspect of this class, please talk to me in a timely manner. I will do my best to help you. More options will be available to us if you approach me as soon as possible. Unless arrangements have been made ahead of time late assignments will be penalized 10% per day (2am the next day is the same as 11:59pm that evening so use your late time wisely). The exception being the final project presentation. For the final project presentation, if your group isn’t ready to present Monday at the beginning of class it is 20% off and you can try again Wednesday. No submissions will be accepted after the final.

Final project: There will be a large final project that will last most of the semester and require integrating the knowledge you gain throughout the semester. For the final project you will be building a project of your choosing that demonstrates the concepts covered in class. There is a basic structure I want to see for a couple of key things related to using good software development techniques, but I am leaving the details up to you. While I will specify a couple of required design patterns be used, other aspects such as good design to support other principles we have talked about like encapsulation will also factor into the grade. A critical part of the project is good development practices: proper use of source control and automated testing. At the end of the semester your group will present your project to the class.

There will be a number of interim checkpoints during the semester to ensure you are on track. The dates of these will be announced later during the semester. The final project component of the grade will be split among the checkpoints and the heavily weighted demo of your project that will be made at the beginning of class Monday, December 4th.

Development practice: The vast majority of projects you encounter outside of the classroom require working in teams and an evolving code base. Within this class you will learn how to use the Git source control system for collaboration and maintaining your code evolution. Given the importance of understanding the additional complexity when there are multiple people working on the same code base, for the majority of assignments you will be required to work in teams. In addition to using Git to submit your final deliverables, each student will be expected to use source control properly throughout the development process. Unlike many classes where you are evaluated just on the final deliverable, expect to be evaluated on whether you followed good development practices along the way as well.

Exams: There will be a midterm and a final exam in addition to a final project. These will focus on whether you have understood the material and learned from your mistakes. The midterm will be Monday, October 15th and the final exam will be at the university scheduled time Monday, December 12th 5:30-7:30pm. If a student misses the midterm they will receive a 0 unless they have specifically talked with me ahead of time and submit a written request.

Attendance: I expect students to attend class sessions regularly. For each absence (unless university excused) over 3 your overall final grade will be reduced by 1/4th of a letter grade. Skipping classes can seriously affect your final grade! If you are going to miss class please email me before class. Each student is responsible for making-up any missed study or work on their own. Limited assistance will be offered to those with plausible reasons for absences; unexcused absences result in the student being totally responsible for the make-up process. You are responsible for all announcements and material covered in the event that you do miss class, and should get that information from one of your classmates. In the event of a weather emergency that requires curtailment or cancellation of classes, listen to WTIC (1080 AM) or call (860) 832-3333.

Academic Honesty: Students are expected to practice the highest standards of ethics, honesty and integrity in all of their academic work. Any form of academic dishonesty (e.g., plagiarism, cheating and misrepresentation) may result in disciplinary action. Possible disciplinary actions may include failure for part of or all of a course as well as suspension from the University. I absolutely require that you fulfill your academic obligations in a fair and honest manner. This includes turning in work that is uniquely yours, unless I explicitly require you to work on a project in a group. I strongly suggest that if you work with others, you only work together in the idea generation phase. When it comes to writing your work, you must do so independently. It is in your best interest to never look at any assignments written by another student and to never let another student see any assignments you have written. If you do turn in work that I suspect is the result of cheating, it will be dealt with harshly. You may find the full Academic Misconduct Policy online at:

http://www.ccsu.edu/academicintegrity/

Please read it carefully.

Students with disabilities: Central Connecticut State University provides reasonable accommodations in accordance with the Americans with Disabilities Act and Section 504 of the Rehabilitation Act for students with documented disabilities on an individualized basis. If you are a student with a documented disability, and would like to request academic accommodations, you are encouraged to contact Student Disability Services (SDS) at 860-832-1952, or email disabilityservices@ccsu.edu . Please visit the SDS website at http://www.ccsu.edu/sds/ to download an Intake form and documentation requirements. Once approved, SDS suggests that students discuss their approved accommodations with their professors, as well as any other additional medical emergency needs. Temporary impairments may also qualify for accommodations. Please note that accommodations are not retroactive and must be requested each semester.

Statement on Discrimination and Harassment: Central Connecticut State University strives to maintain our campus as a place of work and study for faculty, staff, and students that is free of all forms of prohibited discrimination and harassment based upon age; ancestry, color; gender identity and expression; intellectual disability; learning disability; mental disorder; physical disability; marital status, national origin; race; religious creed; sex, (including pregnancy, transgender status, sexual harassment and sexual assault); sexual orientation; or any other status protected by federal or state laws. Any student who has concerns should contact the Office of Diversity and Equity (ODE) at 860‐832‐1652, Student Affairs at 860‐832‐1601, or his/her faculty member. The ODE is located on the main floor of Davidson Hall, room 102.

Sexual Misconduct, Intimate Partner Violence and Stalking Central Connecticut State University (CCSU) will not tolerate sexual misconduct against students, staff, faculty, or visitors in any form, including but not limited to: sexual assault, sexual exploitation, sexual harassment or stalking, as defined in CCSU policies. For additional information, please consult the CCSU policy at http://www.ccsu.edu/diversity/policies/BORSexualMisconductFeb2015.pdf. All faculty members and staff have a duty to report incidents of sexual harassment including sexual misconduct, intimate partner violence and stalking to Rosa Rodríguez, Title IX Officer, Office of Diversity and Equity, Davidson Hall, 102. To file a report contact: Diversity and Equity (860‐832‐1652), Student Conduct (860‐832‐1667) or Student Affairs (860‐832‐1601). For criminal complaints, contact the University Police (860‐832‐2375). For support and advocacy contact: Office of Victim Advocacy at 860‐832‐3795 or sarahdodd@ccsu.edu; Student Wellness Services at 860‐832‐1945 (confidential); Women’s Center at 860‐832‐1655; the local YWCA’s Sexual Assault Crisis Services Hotline at 860‐223‐1787 (confidential) and Prudence Crandall Center for Domestic Violence (confidential) at 888‐774‐2900 (24‐hour hotline).

How to succeed in CS 417:

  • Pay attention to feedback in class discussions. I often make corrections to points brought up in the oral discussion which I may not mention specifically in the written feedback so pay attention.

  • **USE OFFICE HOURS! **

    • Work through practice problems

    • Discuss some topic you are having difficulty with

    • Put simply, if you are confused come see me. While I have posted office hours, feel free to stop by anytime or make an appointment with me if you want to make sure I'm available at a specific time.

  • Participate in all of your group assignments. It is the best way to realize quickly if you are missing any important points so that you don't make similar mistakes on the mid-term, final, and/or final project.

  • Get involved in lectures. Don't be afraid to ask for clarification or additional explanation, chances are if you are confused someone else is as well.

  • Keep all returned work to help you to study for the exams

Tentative class outline and assignments

Please note assignment dates are only to give you an idea of what assignments will cover and approximate time frame, actual dates will be set as the semester progresses

Week 1 week of August 27

  • Introduction and fit into RUP process

  • Git

  • UML modeling

Week 2 week of September 3

  • Labor day - No class Monday September 3rd

  • UML modeling cont.

  • Assignment 0 - GitHub id

Week 3 week of September 10

  • UML modeling cont.

Week 4 week of September 17

  • Dynamic UML

  • Javadoc

  • Automated testing

  • Assignment 1 - Git and UML basics

Week 5 week of September 24

  • Exception handling

  • Chain of responsibility

Week 6 week of October 1

  • Generic refactoring

  • Template

  • Strategy

Week 7 week of October 8

  • Strategy cont.

  • Factory

  • Assignment 2 - UML, implementation, testing

Week 8 week of October 15

  • Singleton

  • Midterm Monday 15th

Week 9 week of October 22

  • Iterator

  • Comparator

  • Nested classes

  • Generics

Week 10 week of October 29

  • Adapter

  • Composition

  • Decorator

  • Enumerations

  • Final project sprint 1

Week 11 week of November 5

  • Factory method

  • Prototype

  • Builder

Week 12 week of November 12

  • Visitor

  • Flyweight

  • State

  • Final project sprint 2

Week 13 week of November 19

  • Thanksgiving recess

Week 14 week of November 26

  • Bringing it all together
  • Final project sprint 3

Week 15 week of December 3

  • Final projects due 12/3

  • Final project presentations

  • Summary and review

Final Exam

  • Monday, December 10th

    • 5:30-7:30pm