Course Objectives
Upon successful completion of this course with a passing grade, students will need to demonstrate knowledge of the following skills:
- Implement design patterns within a program so as to improve the program's extensibility, maintainable, and reusability.
- Given a design pattern, explain its intent and the situation(s) in which its use is applicable
- Describe the structure, including each actor's responsibilities and collaborations, for each design pattern
- Explain each design pattern's costs and consequences
- Given a problem description, identify which design pattern(s) would apply and how they would interact with the larger program
- Within the context of a larger program, correctly implement a specified design pattern
- Write code optimized for space or time efficiency
- Identify the code on a program's critical path, particularly performance bottlenecks, by using appropriate tools
- Given an analysis of a program's performance, compute the potential speedup
- Translate code into SSA form
- Given a code snippet, demonstrate the result of peephole optimizations, common subexpression elimination, loop hoisting, and/or unroll-and-jam.
- Given a Java program, explain why it would or would not help to mark a member as "final"
- Write a method and justify its implementation w.r.t. an optimizing JIT compiler
- Explain his program implementation choices in a straightforward, credible manner
- Explain the performance v. flexibility tradeoffs he made
- Justify his approach in a module with respect to both current & future needs
- Develop a computational solution to a problem over the entire software lifecycle.
- Translate a problem description to a formal representation
- Implement and test acceptable computational solutions
Prerequisites/Corequisites
- Students must have passed both CSC 213 & CSC 213L
- Students must be enrolled in both CSC 313 and CSC 313L
Textbook
Eric and Elisabeth Freeman, Head First Design Patterns, O'Reilly Media, 2004.
Attendance
Class attendance is mandatory. Since all students are present, the instructor will not take attendance. Students are responsible for all material covered and
announcements made in class. Class absences or late arrivals are not acceptable excuses.
Late Work
Work is due at the time specified on the assignment. Without an accepted excuse, late work will not be accepted.
Help!
In any course, all students experience some difficulties and frustration and everyone (instructor included) makes mistakes. Nearly all students will fall behind and
have some difficult catching up. Everyone needs help sometimes. When it is your turn to have problems, do not suffer in silence! Asking for
help is a sign of strength and maturity. Talk to your instructor immediately, before things become serious. You can do this via phone,
e-mail, after class, or stopping by his office. He wants to help you solve these problems and does not make any judgments. Because he cannot always know who is having
trouble, you must take the initiative of making initial contact.
Grading
Grades will be computed from a weighted average of the following items:
| Tests |
22% |
| Final |
28% |
| Lab Projects |
25% |
| Written Activities |
7% |
| Pattern Report |
18% |
Initial cutoffs for each letter grade.
| 93%+ |
A |
| 90-92 |
A- |
| 87-89 |
B+ |
| 83-86 |
B |
| 80-82 |
B- |
| 77-79 |
C+ |
| 73-76 |
C |
| 70-72 |
C- |
| 60-69 |
D |
| 0-59 |
F |
If necessary, these may be revised downward