[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

A functional I/O system or, fun for freshman kids

Published: 31 August 2009 Publication History

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.

Supplementary Material

JPG File (afunctionaliosystemorfunforfreshmankidsonvimeo.jpg)
MP4 File (afunctionaliosystemorfunforfreshmankidsonvimeo.mp4)

References

[1]
Peter Achten. Teaching functional programming with soccer-fun. In Proc. 2008 International Workshop on Functional and Declarative Programming in Education, pages 61--72, 2008.
[2]
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.
[3]
Peter Achten and Marinus J. Plasmeijer. The ins and outs of Clean I/O. J. Funct. Program., 5 (1): 81--110, 1995.
[4]
Peter Achten and Martin Wierich. A tutorial to the Clean Object I/O library (version 1.2). Technical report, University of Nijmegen, February 2000.
[5]
Joe Armstrong, Robert Virding, Claes Wikström, and Mike Williams. Concurrent Programming in Erlang (2nd Edition). Prentice-Hall, 1996.
[6]
Bird and Wadler. Introduction to Functional Programming (2nd Edition). Prentice Hall PTR, 1998.
[7]
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.
[8]
Kim B. Bruce, Andrea Danyluk, and Thomas P. Murtagh. Event-driven programming is simple enough for cs1. SIGCSE Bull., 33 (3): 1--4, 2001.
[9]
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.
[10]
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.
[11]
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.
[12]
Carl Eastlund. DoubleCheck your theorems. In Proc. 8th Intern. Works. ACL2 and its Applications, pages 41--46. Lulu Press, 2009.
[13]
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.
[14]
Carl Eastlund, Dale Vaillancourt, and Matthias Felleisen. ACL2 for freshmen: First experiences. In Proc. 7th Intern. ACL2 Symposium, pages 200--211. ACM Press, 2007.
[15]
Conal Elliot and Paul Hudak. Functional reactive animation. In ACM SIGPLAN International Conference on Functional Programming, pages 196--203, 1997.
[16]
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. How to Design Programs. MIT Press, 2001. URL http://www.htdp.org/.
[17]
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.
[18]
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.
[19]
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.
[20]
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.
[21]
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.
[22]
Paul Hudak. The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge Univ. Press, 2000.
[23]
Graham Hutton. Programming in Haskell. Cambridge Univ. Press, 2007.
[24]
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.
[25]
Bryan O'Sullivan, Donald Stewart, and John Goerzen. Real World Haskell. O'Reilly Media, Inc., 2008.
[26]
Kris Powers, Stacey Ecott, and Leanne Hirshfield. Through the looking glass: teaching CS0 with Alice. SIGCSE Bulletin, 39 (1): 213--217, 2007.
[27]
Simon Thompson. Haskell: the Craft of Functional Programming. Addison Wesley Longman Publishing Co., Inc., 1997.

Cited By

View all
  • (2021)Non-visual composing and codingACM SIGACCESS Accessibility and Computing10.1145/3458055.3458059(1-6)Online publication date: 21-Mar-2021
  • (2021)danceON: Culturally Responsive Creative ComputingProceedings of the 2021 CHI Conference on Human Factors in Computing Systems10.1145/3411764.3445149(1-16)Online publication date: 6-May-2021
  • (2019)New Programming ParadigmsThe Cambridge Handbook of Computing Education Research10.1017/9781108654555.021(606-636)Online publication date: 15-Feb-2019
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 44, Issue 9
ICFP '09
September 2009
343 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/1631687
Issue’s Table of Contents
  • cover image ACM Conferences
    ICFP '09: Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
    August 2009
    364 pages
    ISBN:9781605583327
    DOI:10.1145/1596550
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 31 August 2009
Published in SIGPLAN Volume 44, Issue 9

Check for updates

Author Tag

  1. introductory programming

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)10
  • Downloads (Last 6 weeks)3
Reflects downloads up to 01 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2021)Non-visual composing and codingACM SIGACCESS Accessibility and Computing10.1145/3458055.3458059(1-6)Online publication date: 21-Mar-2021
  • (2021)danceON: Culturally Responsive Creative ComputingProceedings of the 2021 CHI Conference on Human Factors in Computing Systems10.1145/3411764.3445149(1-16)Online publication date: 6-May-2021
  • (2019)New Programming ParadigmsThe Cambridge Handbook of Computing Education Research10.1017/9781108654555.021(606-636)Online publication date: 15-Feb-2019
  • (2019)The Cambridge Handbook of Computing Education Research10.1017/9781108654555Online publication date: 15-Feb-2019
  • (2013)From Principles to Practice with Class in the First YearElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.136.1136(1-15)Online publication date: 8-Dec-2013
  • (2013)Functional Video Games in CS1 IIIRevised Selected Papers of the 14th International Symposium on Trends in Functional Programming - Volume 832210.1007/978-3-642-45340-3_10(149-167)Online publication date: 14-May-2013
  • (2011)Engaging high school students in computer science via challenging applicationsProceedings of the 2011 conference on Information technology education10.1145/2047594.2047608(43-48)Online publication date: 20-Oct-2011
  • (2011)Functional video games in CS1 IIProceedings of the 12th international conference on Trends in Functional Programming10.1007/978-3-642-32037-8_10(146-162)Online publication date: 16-May-2011
  • (2020)Hailstorm: A Statically-Typed, Purely Functional Language for IoT ApplicationsProceedings of the 22nd International Symposium on Principles and Practice of Declarative Programming10.1145/3414080.3414092(1-16)Online publication date: 8-Sep-2020
  • (2020)ROSY: An elegant language to teach the pure reactive nature of robot programming2020 Fourth IEEE International Conference on Robotic Computing (IRC)10.1109/IRC.2020.00045(240-247)Online publication date: Nov-2020
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media