6 dec 2001kestrel1 teaching with patterns matthias felleisen daniel jackson

37
6 Dec 2001 Kestrel 1 Teaching with Patterns Matthias Felleisen Daniel Jackson

Upload: gerald-richardson

Post on 29-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 1

Teaching with Patterns

Matthias FelleisenDaniel Jackson

Page 2: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 2

Patterns in the Classroom: The Rice Experience

Matthias FelleisenNortheastern University

Page 3: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 3

Patterns in Courses

• graduate Course (fall 94/spring 95)

• junior-level PL course

• junior-level PD/FM course

• second-semester course

Page 4: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 4

Patterns in Courses

• graduate Course (94)

• junior-level PL course

• junior-level PD/FM course

• second-semester course

Page 5: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 5

Rice’s Introductory Year

• Comp 210: Design Recipes (HtDP) – majors and non-majors – assumes no background– uses Scheme and some Java

• Comp 212: Design Patterns (GoF)– majors mostly (plus some C++ non-majors)– assumes 210-like background– uses some Scheme and Java

Page 6: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 6

• Design Recipes & Some Context

• From Recipes to Patterns

• Pattern Coverage

• Some Exepriences

Page 7: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 7

210: Design Recipes & Context

Page 8: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 8

Design Recipes

to be designedin out

How do we wire the “program” to the rest of the world?

Page 9: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 9

Design Recipes

• radical model-view separation

• design “internals” of programs

• use “internal” data, not “external” information

• teacher provides view

Page 10: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 10

Design Recipes

• understand classes of data – representation of (external) information as

data in your favorite language

• understand “program” as function – that is triggered by events– that consumes/produces data

• most important: connect class definition and function definition

Page 11: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 11

The Basic Design Recipe

• data analysis and class definition

• contract, purpose statement, header

• in-out (effect) examples

• function template

• function definition

• testing, test suite development

Page 12: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 12

From Class Definitions to Function Templates

• the structure of class definitions

• the structure of function templates

Page 13: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 13

Design Recipes: Class Definitions

• use rigorous language, not formalism

• naïve set theory– basic sets: numbers, chars, booleans– intervals– (labeled) products, that is, structures – (tagged) unions– self-references– mutual references – vectors (natural numbers)

Page 14: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 14

Design Recipes: Class Definitions (2)

(define-struct spider (name size legs))

A spider is a structure:

(make-spider symbol number number)

Page 15: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 15

Design Recipes: Class Definitions (3)

A zoo animal is either • a spider• an elephant • a giraffe • a mouse • …

Each of these classes of animals has its own definition

Page 16: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 16

Design Recipes: Class Definitions (4)

A list of zoo animals is either • empty• (cons animal a-list-of-zoo-animals)

Let’s make examples: • empty (by definition)• (cons (make-spider ‘Asterix 1 6) empty)• (cons (make-spider ‘Obelix 99 6) (cons … …))

Page 17: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 17

Design Recipes: Class Definitions (5)

(define-struct child (name father mother))

A family tree is either • ‘unknown • (make-child symbol a-family-tree a-family-tree-2)

Many, if not most, interesting class definitions are self-referential.

Page 18: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 18

Design Recipes: Function Templates (Structure)

• a function template reflects the structure of the class definitions

• this match helps – designers guide the process– readers comprehend– teachers diagnose weaknesses– modifiers/maintainers analyze or change

Page 19: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 19

Design Recipes: Templates (2)

• is it a basic class?

• is it a union?

• is it a structure?

• is it self-referential?

• “domain knowledge”

• case analysis

• extract field values

• annotate for recursion

Page 20: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 20

Design Recipes: Templates (3)

A list of zoo animals is either • empty• (cons animal a-list-of-zoo-animals)

;; fun-for-zoo : list-of-zoo-animals -> ???(define (fun-for-zoo a-loZA) … )

is it a union?

Page 21: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 21

Design Recipes: Templates (4)

A list of zoo animals is either • empty• (cons animal a-list-of-zoo-animals)

;; fun-for-zoo : list-of-zoo-animals -> ???(define (fun-for-zoo a-loZA) (cond [ <<condition>> <<answer>> ] [ <<condition>> <<answer>> ]))

what are the sub-classes

Page 22: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 22

Design Recipes: Templates (5)

A list of zoo animals is either • empty• (cons animal a-list-of-zoo-animals)

;; fun-for-zoo : list-of-zoo-animals -> ???(define (fun-for-zoo a-loZA) (cond [ (empty? a-loZA) <<answer>> ] [ (cons? a-loZA) <<answer>> ]))

are any of the potentialinputs structures?

Page 23: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 23

Design Recipes: Templates (6)

A list of zoo animals is either • empty• (cons animal a-list-of-zoo-animals)

;; fun-for-zoo : list-of-zoo-animals -> ???(define (fun-for-zoo a-loZA) (cond [ (empty? a-loZA) … ] [ (cons? a-loZA) … (first a-loZA) … … (rest a-loZA) … ]))

is the class definition self-referential?

Page 24: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 24

Design Recipes: Templates (7)

A list of zoo animals is either • empty• (cons animal a-list-of-zoo-animals)

;; fun-for-zoo : list-of-zoo-animals -> ???(define (fun-for-zoo a-loZA) (cond [ (empty? a-loZA) … ] [ (cons? a-loZA) … (first a-loZA) … … (rest a-loZA) … ]))

Page 25: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 25

Design Recipes: Defining Functions

• templates remind beginners of all the information that is available– which cases– which field values, argument values – which natural recursions are computed

• the goal of function definitions is– to compute with the available values – to combine the computed effects

Page 26: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 26

Design Recipes: Overview

• basic data, intervals of numbers • structures • unions• self-reference in class description • mutual references • generative recursion• special attributes:

– accumulators– effects

• abstraction of designs

Page 27: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 27

Design Recipes: Conclusion

• get students used to discipline from DAY ONE

• use scripted question-and-answer game until they realize they can do it on their own

Page 28: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 28

212: From Recipes to Patterns

Page 29: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 29

Design Patterns

• introduce Java

• use design recipes to organize classes and methods

• explain code as instances of design patterns

Page 30: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 30

Scheme to Java: Class Hierarchy

A list of zoo animals is either • empty• (cons animal a-list-of-zoo-animals)

List of zoo animals

Empty Cons: animal list of zoo animals

Page 31: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 31

Scheme to Java: Code Allocation

;; fun-for-zoo : list-of-zoo-animals -> ???(define (fun-for-zoo a-loZA) (cond [ (empty? a-loZA) … ] [ (cons? a-loZA) … (first a-loZA) … … (rest a-loZA) … ]))

List of zoo animals

Empty: …

Cons: animal list of zoo animals

Page 32: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 32

Scheme to Java: Code Allocation

;; fun-for-zoo : list-of-zoo-animals -> ???(define (fun-for-zoo a-loZA) (cond [ (empty? a-loZA) … ] [ (cons? a-loZA) … (first a-loZA) … … (rest a-loZA) … ]))

List of zoo animals

Empty: …

Cons: animal list of zoo animals

Interpreter Pattern(Composite)

Page 33: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 33

Which Patterns

• Interpreter• Composite• Template and Hook • Command • Factory• Abstract Factory (Virtual Constructor)• State • (and a few more on occasion)

Page 34: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 34

How about MVC?

• 210– DrScheme implements MVC in REPL– TeachPacks implements GUI MVC

• 212– DrJava implements MVC– we implement MVC for students

• 312– Students implement MVC directly

Page 35: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 35

312: Designing, and Reasoning about, Sw

• reasonably large programs, present and discuss programs in class

• maintain your own code over the course of a month or two

• switch code, modify code of others

Page 36: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 36

312: Design, and Reason about, Sw

• the aha course

• students understand why and when patterns matter

• the reward for going thru 212, 212

Page 37: 6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson

6 Dec 2001

Kestrel 37

Programs have a place in the curriculumit is not in the first year (except for coding in this style).