Skip to content

Latest commit

 

History

History
61 lines (53 loc) · 2.31 KB

TEACHING FUNCTIONAL PROGRAMMING.md

File metadata and controls

61 lines (53 loc) · 2.31 KB

#Introduction

  • Michael Sperber
  • Not sure he knows how to teach how to teach
  • Teaching since 1987
  • Languages in Dr. Racket built explicitly for teaching beginners
  • Not Racket itself (Racket is a professional FPL)

#REFERENCES

  • Structure and Interpretation of Computer Programs (Book, programming)
  • How To Design Programs: An Introduction to Programming and Computing (Book, programming, online, free)
  • Mindset: The New Psychology of Success (Book, selfhelp)

#The One Thing If what you're teaching is compelling to you, that does not mean that it is compelling to students, or that it is a good thing to teach or method of teaching

We don't want to teach syntax or whatever, We want to know: At the end of your course, are your students able to program.

#Teaching Stuff

  • Students will look for ways to implement what they know in your programming language
  • Using scheme, a student who knows java may find a way that:
    • They can "return" to end a program
    • They can access state of their program
    • They can assign or mutate a value
  • Your students are NOT YOU
  • Students will come in to courses with a different mindset
  • Think Scheme is a wonderful language, so it must be wonderful for teaching
    • This is not so.

#Make Teaching Effective

  • Be systematic/methodical in your teaching
    • Functional programming supports this
  • "Design Recipes", like essay composition structure
    • Will use the same approach to write programs
  • "Bootcamp Approach" vs "Friendly Kitten Approach"
    • Bootcamp works better with no detriment to popularity of teacher/course
  • Form
    • Even necessary in programming
    • "Multiple solutions" is actually detrement
    • Should have a "right" solution to a problem (in teaching)
  • Feedback
    • You want an environment that gives immediate, useful feedback to students
  • Don't start teaching with Types
    • Feedback is not always useful
    • Will block students in ways that serve no useful purpose

#Intro summary

  • Don't grow attached to your own tools
    • Functional programming
    • Specific language
  • Students don't have to love you
  • Only program what you can explain
    • Don't give examples with out of scope code
  • Observe & measure your students
  • "Kill your darlings"

#GEMOETRIC SHAPES

  • Taken from old US Navy problem
  • Squares, circles, overlayed shapes
  • Find out if one point is inside a certain geometric shapen on a grid