1 / 37

Teaching with Patterns

Teaching with Patterns. Matthias Felleisen Daniel Jackson. Patterns in the Classroom: The Rice Experience. Matthias Felleisen Northeastern University. Patterns in Courses . graduate Course (fall 94/spring 95) junior-level PL course junior-level PD/FM course second-semester course.

Télécharger la présentation

Teaching with Patterns

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Teaching with Patterns Matthias Felleisen Daniel Jackson Kestrel

  2. Patterns in the Classroom: The Rice Experience Matthias Felleisen Northeastern University Kestrel

  3. Patterns in Courses • graduate Course (fall 94/spring 95) • junior-level PL course • junior-level PD/FM course • second-semester course Kestrel

  4. Patterns in Courses • graduate Course (94) • junior-level PL course • junior-level PD/FM course • second-semester course 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 Kestrel

  6. Design Recipes & Some Context • From Recipes to Patterns • Pattern Coverage • Some Exepriences Kestrel

  7. 210: Design Recipes & Context Kestrel

  8. Design Recipes to be designed in out How do we wire the “program” to the rest of the world? Kestrel

  9. Design Recipes • radical model-view separation • design “internals” of programs • use “internal” data, not “external” information • teacher provides view 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 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 Kestrel

  12. From Class Definitions to Function Templates • the structure of class definitions • the structure of function templates 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) Kestrel

  14. Design Recipes: Class Definitions (2) (define-struct spider (name size legs)) A spider is a structure: (make-spider symbol number number) 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 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 … …)) 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. 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 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 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? 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 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 potential inputs structures? 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? 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) … ])) 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 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 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 Kestrel

  28. 212: From Recipes to Patterns Kestrel

  29. Design Patterns • introduce Java • use design recipes to organize classes and methods • explain code as instances of design patterns Kestrel

  30. Scheme to Java: Class Hierarchy List of zoo animals Empty Cons: animal list of zoo animals • A list of zoo animals is either • empty • (cons animal a-list-of-zoo-animals) Kestrel

  31. Scheme to Java: Code Allocation List of zoo animals Empty: … Cons: animal 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) … ])) 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 Interpreter Pattern (Composite) Empty: … Cons: animal list of zoo animals Kestrel

  33. Which Patterns • Interpreter • Composite • Template and Hook • Command • Factory • Abstract Factory (Virtual Constructor) • State • (and a few more on occasion) 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 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 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 Kestrel

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

More Related