Abstract
A student learning how to program learns best when the programming language and programming environment cater to her specific needs. These needs are different from the requirements of a professional programmer. Consequently, the design of teaching languages poses challenges different from the design of professional languages. Using a functional language by itself gives advantages over more popular, professional languages, but fully exploiting these advantages requires careful adaptation to the needs of the students' as-is, these languages do not support the students nearly as well as they could. This paper describes our experience adopting the didactic approach of How to Design Programs, focussing on the design process for our own set of teaching languages. We have observed students as they try to program as part of our introductory course, and used these observations to significantly improve the design of these languages. This paper describes the changes we have made, and the journey we took to get there.
Supplemental Material
- }}Harold Abelson, Gerald Jay Sussman, and Julie Sussman. Structure and Interpretation of Computer Programs. MIT Press, Cambridge, Mass., second edition, 1996. Google Scholar
Digital Library
- }}Annette Bieniusa, Markus Degen, Phillip Heidegger, Peter Thiemann, Stefan Wehr, Martin Gasbichler, Marcus Crestani, Herbert Klaeren, Eric Knauel, and Michael Sperber. HtDP and DMdA in the battlefield. In Frank Huch and Adam Parkin, editors, Functional and Declarative Programming in Education, Victoria, BC, Canada, September 2008. Google Scholar
Digital Library
- }}Koen Claessen and John Hughes. QuickCheck: A lightweight tool for ran- dom testing of Haskell programs. In Philip Wadler, editor, Proceedings International Conference on Functional Programming 2000, pages 268-- 279, Montreal, Canada, September 2000. ACM Press, New York. ISBN 1--58113--202--6. doi: http://doi.acm.org/10.1145/351240.351266. Google Scholar
Digital Library
- }}Will Clinger, R. Kent Dybvig, Michael Sperber, and Anton van Straaten. SRFI76:R6RSrecords.http://srfi.schemers.org/srfi- 76/, September 2005.Google Scholar
- }}Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. How to Design Programs. MIT Press, 2001.Google Scholar
- }}Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. The TeachScheme! project: Computing and programming for every student. Computer Science Education, March 2004.Google Scholar
- }}Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul A. Steckler, and Matthias Felleisen. DrScheme: A programming environment for Scheme. Journal of Func- tional Programming, pages 159--182, March 2002. Google Scholar
Digital Library
- }}Matthew Flatt, Robert Bruce Findler, and PLT. Guide: Racket. PLT, 2010. Available from http://pre.plt-scheme.org/docs/.Google Scholar
- }}Kathryn E. Gray and Matthias Felleisen. Linguistic support for unit tests. Technical Report UUCS-07-013 2007, University of Utah, 2007.Google Scholar
- }}Bastiaan Heeren, Daan Leijen, and Arjan van IJzendoorn. Helium, for learning Haskell. In Johan Jeuring, editor, Proceedings of the 2003 ACM SIGPLAN Haskell Workshop, pages 62--71, Uppsala, Sweden, August 2003. Google Scholar
Digital Library
- }}James I. Hsia, Elspeth Simpson, Daniel Smith, and Robert Cartwright. Taming Java for the classroom. In SIGCSE 2005, February 2005. Google Scholar
Digital Library
- }}Herbert Klaeren and Michael Sperber. Die Macht der Abstraktion. Teubner Verlag, 1st edition, 2007.Google Scholar
- }}Guillaume Marceau, Kathi Fisler, and Shriram Krishnamurthi. Measuring the effectiveness of error messages designed for novice programmiers. In 2010 Workshop on Scheme and Functional Programming, Montréal, Québec, Canada, August 2010.Google Scholar
- }}Linda McIver and Damian Conway. Seven deadly sins of introductory programming language design. In Proceedings Software Engineering: Education & Practice, pages 309--316, Los Alamitos, CA, USA, 1996. IEEE Computer Society Press. Google Scholar
Digital Library
- }}Vincent Rahli, J. B. Wells, and Fairouz Kamareddine. Challenges of a type error slicer for the SML language. Technical Report HW-MACS- TR-0071, Heriot-Watt University, School of Mathematics & Computer Science, September 2009.Google Scholar
- }}Peter van Keeken. Analyzing Helium programs obtained through logging -- the process of mining novice Haskell programs. Master's thesis, Utrecht University, October 2006. INF/SCR-05--93.Google Scholar
- }}Philip Wadler. A critique of Abelson and Sussman or why calculating is better than scheming. SIGPLAN Notices, 22(3):83--94, March 1987.. Google Scholar
Digital Library
Index Terms
Experience report: growing programming languages for beginning students
Recommendations
Experience report: growing programming languages for beginning students
ICFP '10: Proceedings of the 15th ACM SIGPLAN international conference on Functional programmingA student learning how to program learns best when the programming language and programming environment cater to her specific needs. These needs are different from the requirements of a professional programmer. Consequently, the design of teaching ...
Modular language implementation in Rascal - experience report
All software evolves, and programming languages and programming language tools are no exception. And just like in ordinary software construction, modular implementations can help ease the process of changing a language implementation and its dependent ...
Experience report: using hackage to inform language design
HASKELL '10Hackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language ...







Comments