5

Syllabus, CSCE 302, Object-Oriented Programming II (Design Patterns), Spring of 2017

Course Information: 36873, CSCE A302, 001, 3.0 CR, Object-Oriented Programming II, TR 11:30-12:45 a.m., ESH 101

Instructor Information: Name: Kirk Scott , Office: Office: Engineering Computation Building 308D, Phone: 786-4820

Email: for questions, etc., requiring a timely response: ; personal email, in case UAA email doesn't seem to be working: .

Home page: http://math.uaa.alaska.edu/~afkas

Office hours: M, W 2:30-3:45 and by appointment. My schedule is posted on my office door and on my Web page. With the exception of classes and lunch I’m likely to be around the office between 10:00 and 5:00 most days. If I am in, you are welcome to see me. If you want to make sure you’ll see me outside of office hours you can make an appointment. You can call, and if I’m there and not busy with a human visitor, I’ll answer. I do not answer the phone when there is a person in my office unless I’m expecting a call. If I don’t answer the phone, send me an email message. I check email regularly and you should get a timely reply from me by email if it’s sent to the UAA address. Leaving a phone message is a less likely way of getting a timely reply.

Book Information: This book is required in the sense that the course covers everything in it. It should be for sale in the bookstore. Metsker, Steven John and William C. Wake, Design Patterns in Java, Addison-Wesley, c. 2006, ISBN: 0-321-33302-5.

This book is in no sense required. It is listed here because some of the UML diagrams in the overheads are taken from it: Lasater, Christopher G., Design Patterns, Wordware Publishing, c. 2007, ISBN: 978-1-59822-031-5.

Web Page Information: There will be a course Web page posted at the address given above. Any changes in the syllabus, timeline, etc., will be announced in class and posted on the Web page. Any information posted there during the course of the semester will supersede any information contained in the printed syllabus.

Grading Information:

3 tests at 100 points apiece 300

4 homework programming assignments at 50 points apiece 200

-----

Total 500 pts.

Grading: Grades will be assigned based on the total points accumulated by the end of the semester according to the curve below. This curve may be lowered if necessary. It will not be raised.

90-100% A

80-89% B

70-79% C

60-69% D

Below 60% F


Review Questions

·  Note first of all that on the course Web page there is a folder for each design pattern, and the folder contains a Word document ending with the letters RvwQs (review questions). There is also a corresponding key for each of these files. These are not assignments and there are no points for doing them. They are old test questions and they are provided for review purposes.

Example Code

·  Some unit folders for the course contain subfolders named XExamplesOld. You may ignore these folders, since they’re outdated. Some unit folders also contain example code from the authors. You may or may not find any of this useful. You can download the complete example code from the book’s Web site if you want to. There is a possibility that some new example code will be posted for some of the units.

Assignments

·  There are four homework programming assignments. They will cover at some of the design patterns, but not all of them. Taken together they are supposed to be a practical introduction to some of the topics talked about in class.

·  The assignments should be viewed not as preparation for tests, but as exercises in refreshing, expanding, and improving your familiarity with design patterns and code writing. By definition, in-class, handwritten tests are limited to a grasp of concepts as illustrated by snippets of code. Programming assignments involve larger blocks of code and the problems of getting implementations to work, as opposed to merely understanding principles.

·  You can work together with other people on the homework assignments, but each person will have to turn in their own copy for credit. The mechanics of turn-in—whether by email, in person, etc., will be determined as the semester progresses. There will be no witch hunts. The only case where integrity may be a concern will be allegations that one student has obtained another student’s code without the other student’s permission.

Timing and Handing-In of Assignments

·  As you will see on the timeline, below, the homework assignments are marked HW. On those days during the semester, the homework assignments will be introduced.

·  You will need to complete them on your own time and come by my office to hand them in in person.

·  HW1 comes before test 1, HW2 and HW3 come before test 2, and HW4 comes before test 3. The goal is to complete the material on the syllabus, covered by the homework, in time for it to be included on the corresponding test. If there is slippage, the exact match-up will be announced in class

·  The last design patterns are not included in homework. There is a possibility that I will fall behind and they will not be covered. If they are covered, they will be included in test 3 only, but no additional assignment will be created which includes them.


Tests

·  There are three tests in the class, 2 midterms and a third test during the final test period.

·  They cover separate sets of material. They will not be formally cumulative.

·  The dates for the tests are marked on the course timeline and will not be changed.

·  Tests may include code writing by hand, UML diagram drawing and interpretation, and short answer questions. If you are wondering how to prepare for the tests in the class, my recommendation is to study the book, review the posted overheads, look at the posted review questions (and keys), and do the assignments.

·  You will be able to refer to a Java programming textbook and I may provide other information or materials which may be used or referred to when taking a test.

·  You will be advised before a test whether you will be allowed to refer to your own notes, programs, or any other printed material.

·  You will not be able to use the course textbook as a reference when taking a test.

·  The first two tests will be handwritten. Bring a writing instrument.

·  The third test may be a programming test conducted where you have to write code in a development environment, get it to run (if possible), and hand it in in electronic form. This may or may not be possible depending on how the semester goes and whether or not a suitable room is available during finals week. If the third test is not a code-writing test, it will be like the first two tests. The decision about this will be announced during the last week of class.

·  If you can’t take a test at the scheduled time, you will need to contact me to make alternative arrangements. If you want to take the test earlier and I have it ready earlier, you can take the test without loss of points. If you take it after the scheduled time, you will automatically lose 10 points. In general, I am not in a position to judge whether a reason for taking the test at a different time has any particular validity. The point deduction is designed to discourage people from taking tests late for no good reason, but the deduction is small enough that if it happens once during the semester for some unavoidable reason, the effect on your grade is not likely to be significant. It will not be possible to take a test after it has been handed back in class. I typically have tests graded and hand them back during the next class period. This restriction will be relaxed only in cases of serious illness or other grave circumstances.

·  The use of a computer, communication device, or media will not be permitted when taking a handwritten test.

·  You can ask me questions while taking a test, but consulting with other people will not be permitted.

·  As always, if necessary, these restrictions may be relaxed in order to accommodate a disability.


Software Information

The CSCE lab uses the jdk Java compiler which can be downloaded at www.sun.com and a simple development environment known as Dr. Java, which can be downloaded at www.drjava.org. Some of the design patterns will be illustrated using elements of the Android API. To download Android Studio, go to developer.android.com. You may develop your code in any appropriate environment. However, if you do use something different from what I use, it is not unusual for your programs to generate output that looks different or behaves somewhat differently. If you come to me with questions this will sometimes mean that minor changes will have to be made so that I can try and figure out what your code is doing. It may also mean that you will have to make changes so that I can grade your assignments when you hand them in.

Incompletes

Certain conditions have to be met to qualify for an incomplete, and certain conditions have to be met in order to resolve an incomplete successfully. Before requesting an incomplete you need to make sure that you qualify and that you are prepared to deal with the consequences of taking one. The university’s incomplete grade policy as published in the catalog is shown below.

“An “I” (Incomplete) is a temporary grade. It is used to indicate that a student has made satisfactory progress in the majority of the work in a course, but for unavoidable absences or other conditions beyond the control of the student, has not been able to complete the course. The Incomplete Grade Contract, a signed contract form between the student and the faculty member that stipulates the assignment(s) required to finish the course, is required and must be completed for each “I” grade assigned and is to be maintained in the department or dean’s office. Course work must be completed by a date specified in the contract, not to exceed one year. Upon completion of the required course work, the faculty member must submit a change of grade form to Enrollment Services. If course work is not completed within one year or if the terms specified on the Incomplete Contract are not met, the student may be assigned a failing grade (F or NP, depending on the grading basis of the course). If course work is not completed within one year and the faculty member does not submit a change of grade at that time, the “I” will become a permanent grade and it will be necessary for the student to re-register to obtain credit for the course.”

Timeline

January

T 17 Intro to course, Unit 0, Appendix D, UML

Th 19 Unit 1, Chapters 1 and 26

T 24 Unit 2, toString(), equals(), clone(), Unit 3, @Construction and Cloning

Th 26 Unit 4 (chapter 8) Singleton, Unit 5 (chapter 18) Prototype

T 31 Unit 6 (chapter 15) Builder

February

Th 2 Unit 7 Threads, Unit 8 (chapter 11) Proxy,

T 7 Unit 9, HW1, Unit 10, @Model-View-Controller, Unit 11 (chapter 9) Observer

Th 9 Unit 12 (chapter 19) Memento

T 14 Unit 13, @Generic Interfaces, Unit 14 (chapter 2) Introducing Interfaces

Th 16 Test 1, units 0-9 and 26

T 21 Unit 15 (chapter 10) Mediator

Th 23 Unit 16 (chapter 4) Facade

T 28 Unit 17 (chapter 3) Adapter

March

Th 2 Unit 18, HW2, Unit 19, @Generic Interfaces, cont’d., Unit 20 (chapter 13) Flyweight

T 7 Unit 21 (chapter 27) Decorator

Th 9 Unit 22 (chapter 22) State

T 14 Spring Break, no class

Th 16 Spring Break, no class

T 21 Unit 23, @Interfaces for Specific Goals, Unit 24 (chapter 28) Iterator

Th 23 Unit 25 (chapter 21) Template Method, Unit 26, HW3

T 28 Unit 27 (chapter 23) Strategy

Th 30 Test 2, units 10-26

April

T 4 Unit 28, @Interfaces and Dynamic Binding, Unit 29 (chapter 16) Factory Method

Th 6 Unit 30 (chapter 17) Abstract Factory

T 11 Unit 31 (chapter 24) Command

Th 13 Unit 32 (chapter 6) Bridge, Unit 33, HW4

T 18 Unit 34, @Composite and Related, Unit 35 (chapter 5) Composite

Th 20 Unit 36 (chapter 12) Chain of Responsibility

T 25 Unit 37 (chapter 25) Interpreter

Th 27 Unit 38 (chapter 29) Visitor

Finals Week: Tuesday, May 2nd-Saturday, May 6th.

Final Test Period: Thursday, May 4th, 10:00 a.m.-12:45 p.m.

Test 3, units 27-38. At the end of this time I will return to my office for last call. You will have until the end of the day on Friday to turn anything in that you haven’t turned in yet.


Information required in syllabi by university policy:

Instructional Goals. The instructor will:

·  Introduce object-orientation from a system perspective.

·  Explain modeling as a foundation of system design.

·  Illustrate the use of notation for documenting designs.

·  Describe advanced concepts of object-orientation.

·  Demonstrate implementation of a design in an object-oriented language.

Defined Outcomes: The student will:

·  Model one or more systems of moderate complexity in an object-oriented fashion.

·  Diagram system models using the notation of choice.

·  Successfully implement the models using the object-oriented language of choice.


LEGAL NOTICES

Disability Information

Any students with disabilities who may need special accommodations should contact Disability Support Services as early in the semester as possible: