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.
- Harold Abelson and Gerald Jay Sussman. 1985. Structure and Interpretation of Computer Programs. McGraw-Hill, New York. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- Richard Bird and Philip Wadler. 1988. Introduction to Functional Programming. Prentice Hall, New York. Google Scholar
Digital Library
- Stephen Bloch. 2010. Picturing Programs: An Introduction to Computer Programming. College Publications (Kings College London). Google Scholar
Digital Library
- Frederick P. Brooks, Jr. 1975. The Mythical Man-Month. Addison Wesley, Reading, MA. Google Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- David R. Hanson. 1996. C Interfaces and Implementations. Addison Wesley. Google Scholar
Digital Library
- John Hughes. 1989 (April). Why functional programming matters. The Computer Journal, 32 (2): 98--107. Google Scholar
Digital Library
- Michael A. Jackson. 1975. Principles of Program Design. Academic Press, London. Google Scholar
Digital Library
- Samuel N. Kamin. 1990. Programming Languages: An Interpreter-Based Approach. Addison-Wesley, Reading, MA. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Bertrand Meyer. 1997. Object-Oriented Software Construction. Prentice-Hall, Englewood Cliffs, NJ, second edition. Google Scholar
Digital Library
- Norman Ramsey. 2016. Programming Languages: Build, Prove, and Compare. Cambridge University Press. Forthcoming.Google Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- Guy Lewis Steele, Jr. 1990. Common LISP: The Language. Digital Press, Newton, Mass., 2nd edition. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- Barbara E. Walvoord and Virginia Johnson Anderson. 2011. Effective Grading: A Tool for Learning and Assessment in College. Wiley.Google Scholar
- Grant P. Wiggins and Jay McTighe. 2005. Understanding by Design. ACSD, Alexandria, VA, second edition.Google Scholar
Index Terms
On teaching *how to design programs*: observations from a newcomer
Recommendations
On teaching *how to design programs*: observations from a newcomer
ICFP '14: Proceedings of the 19th ACM SIGPLAN international conference on Functional programmingThis 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 "...
Teaching how to teach computational thinking
ITiCSE 2018: Proceedings of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science EducationComputational Thinking is argued to be an essential skill for the workforce of the 21st century. As a skill, Computational Thinking should be taught in all schools, employing computational ideas integrated into other disciplines. Up until now, questions ...







Comments