Presentation is loading. Please wait.

Presentation is loading. Please wait.

6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson.

Similar presentations


Presentation on theme: "6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson."— Presentation transcript:

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

2 6 Dec 2001Kestrel2 Patterns in the Classroom: The Rice Experience Matthias Felleisen Northeastern University

3 6 Dec 2001Kestrel3 Patterns in Courses graduate Course (fall 94/spring 95) junior-level PL course junior-level PD/FM course second-semester course

4 6 Dec 2001Kestrel4 Patterns in Courses graduate Course (94) junior-level PL course junior-level PD/FM course second-semester course

5 6 Dec 2001Kestrel5 Rice’s Introductory Year Comp 210: Design Recipes (HtDP)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

6 6 Dec 2001Kestrel6 Design Recipes & Some Context From Recipes to Patterns Pattern Coverage Some Exepriences

7 6 Dec 2001Kestrel7 210: Design Recipes & Context

8 6 Dec 2001Kestrel8 Design Recipes to be designed inout How do we wire the “program” to the rest of the world?

9 6 Dec 2001Kestrel9 Design Recipes radical model-view separation design “internals” of programs use “internal” data, not “external” information teacher provides view

10 6 Dec 2001Kestrel10 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

11 6 Dec 2001Kestrel11 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

12 6 Dec 2001Kestrel12 From Class Definitions to Function Templates the structure of class definitions the structure of function templates

13 6 Dec 2001Kestrel13 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)

14 6 Dec 2001Kestrel14 Design Recipes: Class Definitions (2) (define-struct spider (name size legs)) A spider is a structure: (make-spider symbol number number)

15 6 Dec 2001Kestrel15 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

16 6 Dec 2001Kestrel16 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 … …))

17 6 Dec 2001Kestrel17 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.

18 6 Dec 2001Kestrel18 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

19 6 Dec 2001Kestrel19 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

20 6 Dec 2001Kestrel20 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?

21 6 Dec 2001Kestrel21 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 [ > > ] [ > > ])) what are the sub-classes

22 6 Dec 2001Kestrel22 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) > ] [ (cons? a-loZA) > ])) are any of the potential inputs structures?

23 6 Dec 2001Kestrel23 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?

24 6 Dec 2001Kestrel24 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) … ]))

25 6 Dec 2001Kestrel25 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

26 6 Dec 2001Kestrel26 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

27 6 Dec 2001Kestrel27 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

28 6 Dec 2001Kestrel28 212: From Recipes to Patterns

29 6 Dec 2001Kestrel29 Design Patterns introduce Java use design recipes to organize classes and methods explain code as instances of design patterns

30 6 Dec 2001Kestrel30 Scheme to Java: Class Hierarchy A list of zoo animals is either empty (cons animal a-list-of-zoo-animals) List of zoo animals EmptyCons: animal list of zoo animals

31 6 Dec 2001Kestrel31 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

32 6 Dec 2001Kestrel32 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)

33 6 Dec 2001Kestrel33 Which Patterns Interpreter Composite Template and Hook Command Factory Abstract Factory (Virtual Constructor) State (and a few more on occasion)

34 6 Dec 2001Kestrel34 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

35 6 Dec 2001Kestrel35 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

36 6 Dec 2001Kestrel36 312: Design, and Reason about, Sw the aha course students understand why and when patterns matter the reward for going thru 212, 212

37 6 Dec 2001Kestrel37 Programs have a place in the curriculum it is not in the first year (except for coding in this style).


Download ppt "6 Dec 2001Kestrel1 Teaching with Patterns Matthias Felleisen Daniel Jackson."

Similar presentations


Ads by Google