CS410/510, Software Design Patterns --- Winter 2021
(Version, Tue 15 Dec 2020)

Index Instructor
Sergio Antoy
office: FAB 120-26
e-mail: antoy@cs.pdx.edu
phone: 503-725-3009
homepage: http://www.cs.pdx.edu/~antoy/
office hours: On Zoom, email for appointment.
class time and location: see the University Schedule
Description
This course provides an in-depth view of Software Design Patterns. The course, which is programming intensive, uses Java for presentation and analysis of the patterns and for the assignments. The course is suitable to software architects and developers who are already well-versed in this language. Patterns are reusable solutions to recurring software problems. They capture successful experiences and convey expert insight and knowledge to less experienced developers. In addition to patterns, the course provides continuous opportunities for learning the most advanced features of the Java language and understanding the principles behind the design of its fundamental libraries.
Goal
At the end of this course, students are expected to: be comfortable with the Java language to the degree required by the subject; become familiar with the situations and motivations that call for using patterns; and be able to employ patterns in their appropriate contexts.
Prerequisites
The expected background is knowledge of elementary data structures (list and trees), problem solving skills, and versatility in Java. Both ability to recognize and appreciate an elegant solution to a problem and willingness to "learn" (as opposed to "live") an experience are highly desirable. A course on Programming Languages is recommended.
Course materials
Grading
The grade is based on weekly assignments and on midterm and final exams. The weekly assignments can be solved individually or in group, are generally self-graded and contribute 10% to the total points. Students can skip up to 50% of the assignments without penalty. The exams are individual, close-book, partly multiple-choice tests. Each exam contributes 45% to the total points.

Working on most of the assignments, and developing executable code often is the most important contributor of a good final grade.

Students will receive an A with more than 80% of the total points in both the midterm and the final, at least a B with more than 60%.

Given the difficulties of remote teaching, some creative ways to both improve and measure learning might be introduced and refined during the course. Possibilities include in-class quizzes, student presentations and peer code reviews.

Disabilities
This course embraces the following policy.
Sample Exams
The exams are intended to test both knowledge of the material presented in class and skills acquired working on the assignments. Consult the Winter 2000 final and its solution for an example. The format and content of the exam may differ from the example.
Schedule
During the lectures, the instructor will code, interacting with the class, about 30-40 patterns taken from the textbook. The course is 10 weeks long. This entails an average of 3-4 patterns per week. Some patterns will take more time than others.

A detailed schedule, including planned lectures and homework assignments is available on-line. Follow the link provided in Course materials.

Homework
Typically, homework is not turned in. Student samples are inspected in class with a previous agreement with the instructor. The assignment about a pattern will be discussed in class on the week following the completion of the presentation.
Previous Evaluations
Course and instructor evaluations of previous offerings of this course are avaliable for the Winter 2000 and the Winter 2001 terms. See also other evaluations.

Contact antoy@cs.pdx.edu
Tue 15 Dec 2020 10:36:30 AM PST