skip to main content
research-article

On teaching *how to design programs*: observations from a newcomer

Published:19 August 2014Publication History
Skip Abstract Section

Abstract

This paper presents a personal, qualitative case study of a first course using How to Design Programs and its functional teaching languages. The paper reconceptualizes the book's six-step design process as an eight-step design process ending in a new "review and refactor" step. It recommends specific approaches to students' difficulties with function descriptions, function templates, data examples, and other parts of the design process. It connects the process to interactive "world programs." It recounts significant, informative missteps in course design and delivery. Finally, it identifies some unsolved teaching problems and some potential solutions.

References

  1. Harold Abelson and Gerald Jay Sussman. 1985. Structure and Interpretation of Computer Programs. McGraw-Hill, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Susan A. Ambrose, Michael W. Bridges, Michele DiPietro, Marsha C. Lovett, Marie K. Norman, and Richard E. Mayer. 2010. How Learning Works: Seven Research-Based Principles for Smart Teaching. Jossey-Bass higher and adult education series. Wiley.Google ScholarGoogle Scholar
  3. Annette Bieniusa, Markus Degen, Phillip Heidegger, Peter Thiemann, Stefan Wehr, Martin Gasbichler, Michael Sperber, Marcus Crestani, Herbert Klaeren, and Eric Knauel. 2008. HtDP and DMdA in the battlefield: A case study in first-year programming instruction. In FDPE '08: Proceedings of the 2008 International Workshop on Functional and Declarative Programming in Education, pagesmbox1--12, New York, NY. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Richard Bird and Philip Wadler. 1988. Introduction to Functional Programming. Prentice Hall, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Stephen Bloch. 2010. Picturing Programs: An Introduction to Computer Programming. College Publications (Kings College London). Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Frederick P. Brooks, Jr. 1975. The Mythical Man-Month. Addison Wesley, Reading, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Hugh Burkhardt and Alan H Schoenfeld. 2003. Improving educational research: Toward a more useful, more influential, and better-funded enterprise. Educational Researcher, 32 (9): 3--14.Google ScholarGoogle ScholarCross RefCross Ref
  8. Koen Claessen and John Hughes. 2000 (September). QuickCheck: a lightweight tool for random testing of Haskell programs. Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming (ICFP'00), in SIGPLAN Notices, 35 (9): 268--279. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Marcus Crestani and Michael Sperber. 2010 (September). Experience Report: Growing programming languages for beginning students. Proceedings of the Fifteenth ACM SIGPLAN International Conference on Functional Programming (ICFP'10), in SIGPLAN Notices, 45 (9): 229--234. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Stephen H. Edwards. 2003 (September). Improving student performance by evaluating how well students test their own programs. Journal on Educational Resources in Computing, 3 (3). Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. 2001. How to Design Programs: An Introduction to Programming and Computing. MIT Press, Cambridge, MA, first edition. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Mtthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. 2004a. The structure and interpretation of the Computer Science curriculum. Journal of Functional Programming, 14 (4): 365--378. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. 2004b. The TeachScheme! project: Computing and programming for every student. Computer Science Education, 14 (1): 55--77.Google ScholarGoogle Scholar
  14. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. 2009 (August). A functional I/O system or, fun for freshman kids. Proceedings of the Fourteenth ACM SIGPLAN International Conference on Functional Programming (ICFP'09), in SIGPLAN Notices, 44 (9): 47--58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, and Matthias Felleisen. 2002. DrScheme: A programming environment for Scheme. Journal of Functional Programming, 12 (2): 159--182. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Robert Bruce Findler and Matthias Felleisen. 2002 (September). Contracts for higher-order functions. Proceedings of the Seventh ACM SIGPLAN International Conference on Functional Programming (ICFP'02), in SIGPLAN Notices, 37 (9): 48--59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. David R. Hanson. 1996. C Interfaces and Implementations. Addison Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. John Hughes. 1989 (April). Why functional programming matters. The Computer Journal, 32 (2): 98--107. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Michael A. Jackson. 1975. Principles of Program Design. Academic Press, London. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Samuel N. Kamin. 1990. Programming Languages: An Interpreter-Based Approach. Addison-Wesley, Reading, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. John McCarthy. 1960 (April). Recursive functions of symbolic expressions and their computation by machine, part I. Communications of the ACM, 3 (4): 184--195. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Bertrand Meyer. 1997. Object-Oriented Software Construction. Prentice-Hall, Englewood Cliffs, NJ, second edition. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Norman Ramsey. 2016. Programming Languages: Build, Prove, and Compare. Cambridge University Press. Forthcoming.Google ScholarGoogle Scholar
  24. Emmanuel Schanzer, Kathi Fisler, and Shriram Krishnamurthi. 2013. Bootstrap: Going beyond programming in after-school computer science. In SPLASH-E (Education track of OOPSLA/SPLASH).Google ScholarGoogle Scholar
  25. Michael Sperber and Marcus Crestani. 2012. Form over function - teaching beginners how to construct programs. In Scheme and Functional Programming 2012. At press time, the workshop proceedings had not yet been published, but the paper could be found at schemeworkshop.org. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Guy Lewis Steele, Jr. 1990. Common LISP: The Language. Digital Press, Newton, Mass., 2nd edition. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Danelle D. Stevens and Antonia Levi. 2005. Introduction to Rubrics: An Assessment Tool to Save Grading Time, Convey Effective Feedback, and Promote Student Learning. Stylus.Google ScholarGoogle Scholar
  28. Gerald Jay Sussman and Guy Lewis Steele, Jr. 1975 (December). Scheme: An interpreter for extended lambda calculus. MIT AI Memo No. 349, reprinted in Higher-Order and Symbolic Computation 11(4):405--439, Dec 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Barbara E. Walvoord and Virginia Johnson Anderson. 2011. Effective Grading: A Tool for Learning and Assessment in College. Wiley.Google ScholarGoogle Scholar
  30. Grant P. Wiggins and Jay McTighe. 2005. Understanding by Design. ACSD, Alexandria, VA, second edition.Google ScholarGoogle Scholar

Index Terms

  1. On teaching *how to design programs*: observations from a newcomer

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!