Download Josh Steele

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Join-pattern wikipedia , lookup

Object-oriented programming wikipedia , lookup

Design Patterns wikipedia , lookup

Transcript
Design Patterns in
Education
Josh Steele
Matt Aguirre
April 8, 2002
Outline

Josh
 What


is a Design Pattern?
Difficulty in teaching DPs
Timing your introduction
 Elementary

Design Patterns
Matt
 Brute
Force Patterns (think GoF)
 Pedagogical Design Patterns

Class
 Discussion
What is a Design Pattern?


Originally envisioned at the 1987 OOPSLA
conference (at least in a SW context)
“Organizational concepts for designing quality
object oriented software” [Gelfand]
 Concise,


correct, reusable
“Embodiment of a template for the solution to a
recurring problem” [Shaffer]
“Descriptions of communicating objects and
classes that are customized to solve a general
design problem in a particular context” [GoF]
In Layman’s Terms

Design Patterns are:
 Tools
to help teach OOP and OOD
 Concepts to help improve quality of OOP
 Used to promote reuse
 Help problem solving ability (“have I seen that
problem before?”)
 Tools to help communicate ideas
 Other definitions?
Why are they difficult to teach?

Shift in paradigm from Procedural to OOP
 Often
a major hurdle for most students
 OOP hard enough to comprehend, DPs at the same
time even worse

OO background needed to fully appreciate their
use
 Data

Structures class may not be enough experience
Level of granularity to present is open question
Where to Start?

Data Structures Class




CS 6704




Pros: Start of OO Education, can start DP exposure early
Cons: Programming experience limited, GoF too complex
Common text: DS Book with Decorators, Singletons, etc
Pros: Much OO experience under belt, many DPs seen (maybe
not realized though)
Cons: No formal DP education yet – teaching old dog new tricks
(or the formality of those tricks) difficult; only graduate exposure!
Common text: GoF
Middle of the Road


3000 level? 4000 level?
Is there a good class at this level to introduce Design Patterns?
Elementary Design Patterns
Intended for novices
 Simpler standard Design Patterns
 Begin DP education early by (what else?)
focusing on good design
 More effective teaching (from the level the
students are at) and learning (efficiency
when solving recurring problems)

How to use Elementary Patterns

Not as an exam question
 Minimizes
the impact!
As Tools to read, write and organize code
 Vocabulary between students
 Benchmark for code quality

Some Elementary DP Examples

Selection
 Whether
or not (i.e. IF)
 Alternative Action (i.e. IF/ELSE)
 Unrelated choice (i.e. sequence of IFs)

Repetition
 Counted
Repetition
 Iterator Process All Items
 Extreme Values (find min/max in selection)
More Elementary Design Patterns

Client/Server
networking needed – as simple as calling
a method on an object
 Essentially getting someone else to do work
for you
 No

Linked Lists
 Fixed,
Expandable, etc.
 Can be used to create other more complex
patterns (i.e. data structures)
Even More Elementary Patterns

Stylistic Patterns


Braces – to line up or not?
One-liners


Declare-Construct-Initialize



Declare type, Construct variable (type-name combo, ala C/C++)
Initialize the variable
Declare-Define-Use


If (a > 0) {flag = true;} else {flag = false;}
Function prototype, definition, function call
Tons more!
“Too Simple!”

Primary Objectives:
 Introduce
the principles of design early into a
programmer’s train of thought, starting from
initial “problem to code” transition
 Aid in the discovery of more complex patterns
by drawing upon these design principles and
putting patterns together
 Help the novice student to learn!
To find out more…

The Elementary Patterns Homepage


Joseph Bergin’s Homepage


http://www.cs.uni.edu/~wallingf/patterns/elementary/
http://csis.pace.edu/~bergin/
Some other elementary patterns listings

http://max.cs.kzoo.edu/~abrady/patterns/ProgrammingPatternsList.html
 http://csis.pace.edu/~bergin/papers/SimpleDesignPatterns.html

Teaching DS DPs [Gelfand]


http://www.cs.brown.edu/cgc/jdsl/papers/patterns.pdf
Design Patterns [TheGangOfFour/GoF]