skip to main content
research-article

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

Published: 19 August 2014 Publication History

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.
[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.
[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.
[4]
Richard Bird and Philip Wadler. 1988. Introduction to Functional Programming. Prentice Hall, New York.
[5]
Stephen Bloch. 2010. Picturing Programs: An Introduction to Computer Programming. College Publications (Kings College London).
[6]
Frederick P. Brooks, Jr. 1975. The Mythical Man-Month. Addison Wesley, Reading, MA.
[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.
[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.
[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.
[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).
[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.
[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.
[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.
[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.
[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.
[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.
[17]
David R. Hanson. 1996. C Interfaces and Implementations. Addison Wesley.
[18]
John Hughes. 1989 (April). Why functional programming matters. The Computer Journal, 32 (2): 98--107.
[19]
Michael A. Jackson. 1975. Principles of Program Design. Academic Press, London.
[20]
Samuel N. Kamin. 1990. Programming Languages: An Interpreter-Based Approach. Addison-Wesley, Reading, MA.
[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.
[22]
Bertrand Meyer. 1997. Object-Oriented Software Construction. Prentice-Hall, Englewood Cliffs, NJ, second edition.
[23]
Norman Ramsey. 2016. Programming Languages: Build, Prove, and Compare. Cambridge University Press. Forthcoming.
[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).
[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.
[26]
Guy Lewis Steele, Jr. 1990. Common LISP: The Language. Digital Press, Newton, Mass., 2nd edition.
[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.
[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.
[29]
Barbara E. Walvoord and Virginia Johnson Anderson. 2011. Effective Grading: A Tool for Learning and Assessment in College. Wiley.
[30]
Grant P. Wiggins and Jay McTighe. 2005. Understanding by Design. ACSD, Alexandria, VA, second edition.

Cited By

View all
  • (2019)Experiences in bridging from functional to object-oriented programmingProceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E10.1145/3358711.3361628(36-40)Online publication date: 25-Oct-2019
  • (2022)Mio: A Block-Based Environment for Program DesignProceedings of the 2022 ACM SIGPLAN International Symposium on SPLASH-E10.1145/3563767.3568127(62-69)Online publication date: 29-Nov-2022
  • (2022)Lifecycle in CS1Proceedings of the 27th ACM Conference on on Innovation and Technology in Computer Science Education Vol. 110.1145/3502718.3524798(269-275)Online publication date: 7-Jul-2022
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 49, Issue 9
ICFP '14
September 2014
361 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2692915
Issue’s Table of Contents
  • cover image ACM Conferences
    ICFP '14: Proceedings of the 19th ACM SIGPLAN international conference on Functional programming
    August 2014
    390 pages
    ISBN:9781450328739
    DOI:10.1145/2628136
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 the author(s) 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: 19 August 2014
Published in SIGPLAN Volume 49, Issue 9

Check for updates

Author Tags

  1. how to design programs
  2. introductory programming course
  3. program by design
  4. racket
  5. reflective practice

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)16
  • Downloads (Last 6 weeks)2
Reflects downloads up to 13 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2019)Experiences in bridging from functional to object-oriented programmingProceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E10.1145/3358711.3361628(36-40)Online publication date: 25-Oct-2019
  • (2022)Mio: A Block-Based Environment for Program DesignProceedings of the 2022 ACM SIGPLAN International Symposium on SPLASH-E10.1145/3563767.3568127(62-69)Online publication date: 29-Nov-2022
  • (2022)Lifecycle in CS1Proceedings of the 27th ACM Conference on on Innovation and Technology in Computer Science Education Vol. 110.1145/3502718.3524798(269-275)Online publication date: 7-Jul-2022
  • (2021)How to design co-programsJournal of Functional Programming10.1017/S095679682100011331Online publication date: 2-Jul-2021
  • (2019)Experiences in bridging from functional to object-oriented programmingProceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E10.1145/3358711.3361628(36-40)Online publication date: 25-Oct-2019
  • (2017)Designing a multi-faceted SOLO taxonomy to track program design skills through an entire courseProceedings of the 17th Koli Calling International Conference on Computing Education Research10.1145/3141880.3141891(10-19)Online publication date: 16-Nov-2017
  • (2016)Principal type inference for GADTsACM SIGPLAN Notices10.1145/2914770.283766551:1(416-428)Online publication date: 11-Jan-2016
  • (2016)Principal type inference for GADTsProceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages10.1145/2837614.2837665(416-428)Online publication date: 11-Jan-2016
  • (2016)Uncovering difficulties in learning for the intermediate programmer2016 IEEE Frontiers in Education Conference (FIE)10.1109/FIE.2016.7757446(1-8)Online publication date: Oct-2016
  • (2016)Splat! er, shmup? A postmortem on a capstone production experience2016 IEEE Frontiers in Education Conference (FIE)10.1109/FIE.2016.7757399(1-9)Online publication date: Oct-2016
  • 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

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media