Abstract
Functional programming languages ought to play a central role in mathematics education for middle schools (age range: 10-14). After all, functional programming is a form of algebra and programming is a creative activity about problem solving. Introducing it into mathematics courses would make pre-algebra course come alive. If input and output were invisible, students could implement fun simulations, animations, and even interactive and distributed games all while using nothing more than plain mathematics. We have implemented this vision with a simple framework for purely functional I/O. Using this framework, students design, implement, and test plain mathematical functions over numbers, booleans, string, and images. Then the framework wires them up to devices and performs all the translation from external information to internal data (and vice versa)--just like every other operating system. Once middle school students are hooked on this form of programming, our curriculum provides a smooth path for them from pre-algebra to freshman courses in college on object-oriented design and theorem proving.
Supplemental Material
- Peter Achten. Teaching functional programming with soccer-fun. In Proc. 2008 International Workshop on Functional and Declarative Programming in Education, pages 61--72, 2008. Google ScholarDigital Library
- Peter Achten and Simon L. Peyton Jones. Porting the Clean object I/O library to Haskell. In IFL '00: Selected Papers from the 12th International Workshop on Implementation of Functional Languages, pages 194--213, London, UK, 2001. Springer-Verlag. Google ScholarDigital Library
- Peter Achten and Marinus J. Plasmeijer. The ins and outs of Clean I/O. J. Funct. Program., 5 (1): 81--110, 1995.Google ScholarCross Ref
- Peter Achten and Martin Wierich. A tutorial to the Clean Object I/O library (version 1.2). Technical report, University of Nijmegen, February 2000.Google Scholar
- Joe Armstrong, Robert Virding, Claes Wikström, and Mike Williams. Concurrent Programming in Erlang (2nd Edition). Prentice-Hall, 1996. Google ScholarDigital Library
- Bird and Wadler. Introduction to Functional Programming (2nd Edition). Prentice Hall PTR, 1998. Google ScholarDigital Library
- Robert S. Boyer and J Strother Moore. Mechanized reasoning about programs and computing machines. In R. Veroff, editor, Automated Reasoning and Its Applications: Essays in Honor of Larry Wos, pages 146--176. The MIT Press, Cambridge, Massachusetts, 1996. URL citeseer.ist.psu.edu/boyer96mechanized.html. Google ScholarDigital Library
- Kim B. Bruce, Andrea Danyluk, and Thomas P. Murtagh. Event-driven programming is simple enough for cs1. SIGCSE Bull., 33 (3): 1--4, 2001. Google ScholarDigital Library
- Kim B. Bruce, Andrea Danyluk, and Thomas P. Murtagh. Event-driven programming facilitates learning standard programming concepts. In Object-oriented programming systems, languages, and applications: Educators Symposium, pages 96--100, 2004. Google ScholarDigital Library
- Manuel Chakravarty and Gabriele Keller. The risks and benefits of teaching purely functional programming in first year. J. Funct. Program., 14 (1): 113--123, 2004. Google ScholarDigital Library
- Koen Claessen and John Hughes. QuickCheck: a lightweight tool for random testing of Haskell programs. In ACM SIGPLAN International Conference on Functional Programming, pages 268--279, 2000. Google ScholarDigital Library
- Carl Eastlund. DoubleCheck your theorems. In Proc. 8th Intern. Works. ACL2 and its Applications, pages 41--46. Lulu Press, 2009. Google ScholarDigital Library
- Carl Eastlund and Matthias Felleisen. Automatic verification for interactive graphical programs. In Proc. 8th Intern. Works. ACL2 and its Applications, pages 33--41. Lulu Press, 2009. Google ScholarDigital Library
- Carl Eastlund, Dale Vaillancourt, and Matthias Felleisen. ACL2 for freshmen: First experiences. In Proc. 7th Intern. ACL2 Symposium, pages 200--211. ACM Press, 2007.Google Scholar
- Conal Elliot and Paul Hudak. Functional reactive animation. In ACM SIGPLAN International Conference on Functional Programming, pages 196--203, 1997. Google ScholarDigital Library
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. How to Design Programs. MIT Press, 2001. URL http://www.htdp.org/.Google Scholar
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. The TeachScheme! project: Computing and programming for every student. Computer Science Education, 14: 55--77, 2004.Google ScholarCross Ref
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. The structure and interpretation of the computer science curriculum. J. Funct. Program., 14 (4): 365--378, 2004. Google ScholarDigital Library
- Robert Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, and Matthias Felleisen. DrScheme: A programming environment for Scheme. J. Funct. Program., 12 (2): 159--182, March 2002. Google ScholarDigital Library
- Matthew Flatt and Matthias Felleisen. Units: Cool modules for HOT languages. In ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 236--248, June 1998. Google ScholarDigital Library
- Matthew Flatt, Robert Bruce Findler, and Matthias Felleisen. Scheme with classes, mixins, and traits. In Asian Symposium on Programming Languages and Systems (APLAS) 2006, pages 270--289, November 2006. Google ScholarDigital Library
- Paul Hudak. The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge Univ. Press, 2000. Google ScholarDigital Library
- Graham Hutton. Programming in Haskell. Cambridge Univ. Press, 2007. Google ScholarDigital Library
- Daniel Ignatoff, Gregory H. Cooper, and Shriram Krishnamurthi. Crossing state lines: Adapting object-oriented frameworks to functional reactive languages. In International Symposium on Functional and Logic Programming, pages 259--276, 2006. Google ScholarDigital Library
- Bryan O'Sullivan, Donald Stewart, and John Goerzen. Real World Haskell. O'Reilly Media, Inc., 2008. Google ScholarDigital Library
- Kris Powers, Stacey Ecott, and Leanne Hirshfield. Through the looking glass: teaching CS0 with Alice. SIGCSE Bulletin, 39 (1): 213--217, 2007. Google ScholarDigital Library
- Simon Thompson. Haskell: the Craft of Functional Programming. Addison Wesley Longman Publishing Co., Inc., 1997. Google ScholarDigital Library
Index Terms
- A functional I/O system or, fun for freshman kids
Recommendations
Teaching functional programming with soccer-fun
FDPE '08: Proceedings of the 2008 international workshop on Functional and declarative programming in educationIn this paper we report on our experience with the functional framework Soccer-Fun, which is a domain specific language for simulating football. It has been developed for an introductory course in functional programming at the Radboud University ...
A functional I/O system or, fun for freshman kids
ICFP '09: Proceedings of the 14th ACM SIGPLAN international conference on Functional programmingFunctional programming languages ought to play a central role in mathematics education for middle schools (age range: 10-14). After all, functional programming is a form of algebra and programming is a creative activity about problem solving. ...
Addressing the Paradox of Fun and Rigor in Learning Programming
ITiCSE '17: Proceedings of the 2017 ACM Conference on Innovation and Technology in Computer Science EducationCourse withdrawal and failure rates are known problems in introductory computer science programming courses (CS1). In turn, these problematic performance rates contribute to declines in retention rates between introductory programming courses and ...
Comments