Hostname: page-component-7c8c6479df-fqc5m Total loading time: 0 Render date: 2024-03-28T14:14:36.268Z Has data issue: false hasContentIssue false

Teaching types with a cognitively effective worked example format

Published online by Cambridge University Press:  17 December 2015

VILLE TIRRONEN
Affiliation:
University of Jyväskylä, Department of Mathematical Information Technology (e-mail: ville.e.t.tirronen@jyu.fi; ville.isomottonen@jyu.fi)
VILLE ISOMÖTTÖNEN
Affiliation:
University of Jyväskylä, Department of Mathematical Information Technology (e-mail: ville.e.t.tirronen@jyu.fi; ville.isomottonen@jyu.fi)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

Teaching functional programming as a second programming paradigm is often difficult as students can have strong preconceptions about programming. When most of these preconceived ideas fail to be confirmed, functional programming may be seen as an unnecessarily difficult topic. A typical topic that causes such difficulties is the language of types employed by many modern functional languages. In this paper, we focus on addressing this difficulty through the use of step-by-step calculations of type expressions. The outcome of the study is an elaboration of a worked example format and a methodical approach for teaching types to beginner functional programmers.

Type
Educational Pearl
Copyright
Copyright © Cambridge University Press 2015 

References

Bhuiyan, S., Greer, J. E. & McCalla, G. I. (1994) Supporting the learning of recursive problem solving. Interact. Learn. Environ. 4 (2), 115139.CrossRefGoogle Scholar
Bird, R. (1998) Introduction to Functional Programming Using Haskell, 2nd ed.Upper Saddle River, NJ: Prentice Hall.Google Scholar
Blanco, J., Losano, L., Aguirre, N., Novaira, M. M., Permigiani, S. & Scilingo, G. (2009) An introductory course on programming based on formal specification and program calculation. ACM SIGCSE Bull. 41 (2), 3137.CrossRefGoogle Scholar
Broda, K., Khoshnevisan, H. & Eisenbach, S. (1994) Reasoned Programming. Upper Saddle River, NJ: Prentice Hall.Google Scholar
Chakravarty, M. M. T. & Keller, G. (2004) The risks and benefits of teaching purely functional programming in first year. J. Funct. Program. 14 (1), 113123.CrossRefGoogle Scholar
Chitil, O. (2001) Compositional explanation of types and algorithmic debugging of type errors. ACM Sigplan Not. 36 (10), 193204 (ACM).CrossRefGoogle Scholar
Clack, C. & Myers, C. (1995) The dys-functional student. In Funtional Programming Languages in Education, Hartel, P. & Plasmeijer, R. (eds), Lecture Notes in Computer Science, vol. 1022. Berlin, Germany: Springer, pp. 289309.CrossRefGoogle Scholar
Dijkstra, E. W. (2000, July) The Notational Conventions I Adopted, and Why. Available at: http://www.cs.utexas.edu/users/EWD/ewd13xx/EWD1300.PDF. Accessed December 8, 2013Google Scholar
Fung, P., O'Shea, T., Goldson, D., Reeves, S. & Bornat, R. (1996) Computer tools to teach formal reasoning. Comput. Educ. 27 (1), 5969.CrossRefGoogle Scholar
Harrison, W. (2000) N=1, an alternative for software engineering research? In Beg, Borrow, or Steal: Using Multidisciplinary Approaches in Empirical Software Engineering Research, Workshop Report, Limerick, Ireland, vol. 5. Citeseer, pp. 39–44.Google Scholar
Heeren, B. (2005) Top Quality Type Error Messages. PhD thesis, Universiteit Utrecht, The Netherlands;IPA Dissertation Series.Google Scholar
Isomöttönen, V. & Tirronen, V. (2013) Teaching programming by emphasizing self-direction: How did students react to active role required of them? ACM Trans. Comput. Educ. Res 13 (2), article No. 6.Google Scholar
Jelsma, O. & van Merriënboer, J. J. G. (1990) The adapt design model: Towards instructional control of transfer. Instr. Sci. 19 (2), 89120.CrossRefGoogle Scholar
Joosten, S., Berg, K. & Hoeven, G. V. D. (1993) Teaching functional programming to first-year students. J. Funct. Program. 3 (1), 4965.CrossRefGoogle Scholar
Keravnou, E. (1995) Introducing Computer Science Undergraduates to Principles of Programming Through A Functional Language. Functional Programming Languages in Education. LNCS, vol. 1022. Berlin, Germany: Springer; pp. 1534. see http://www.springer.com/computer/swe/book/978-3-540-60675-8Google Scholar
Lerner, B. S., Flower, M., Grossman, D. & Chambers, C. (2007) Searching for type-error messages. ACM SIGPLAN Not., 42, 425434. (ACM).CrossRefGoogle Scholar
Lipovaca, M. (2012) Learn You a Haskell for Great Good!: A Beginner's Guide. San Francisco, CA: No Starch Press.Google Scholar
Nock, M., Michel, B. & Photos, V. (2007) Single-case research designs. In Handbook of Research Methods in Abnormal and Clinical Psychology, Mackay, D. (ed.). Thousand Oaks, CA: Sage, pp. 337350.Google Scholar
Ruehr, F. (2008) Tips on teaching types and functions. In Proceedings of the 2008 International Workshop on Functional and Declarative Programming in Education. New York, NY: ACM, pp. 7990.CrossRefGoogle Scholar
Scriven, M. (1967) The methodology of evaluation. In Perspectives of Curriculum Evaluation, Aera Monograph Series on Curriculum Evaluation, Tyler, R., Gagné, R. & Scriven, M. (eds), vol. 1. Chicago, IL: Rand McNally, pp. 3983.Google Scholar
Segal, J. (1994) Empirical studies of functional programming learners evaluating recursive functions. Instr. Sci. 22 (5), 385411.CrossRefGoogle Scholar
Siegfried, R. M., Greco, D., Miceli, N. & Siegfried, J. (2012) Whatever happened to Richard Reid's list of first programming languages? Inf. Syst. Educ. J. 10 (4), 24.Google Scholar
Sorva, J. (2012) Visual Program Simulation in Introductory Programming Education. Esbo, Finland: Aalto University.Google Scholar
Sweller, J., van Merrienboer, J. J. G. & Paas, F. G. W. C. (1998) Cognitive architecture and instructional design. Educ. Psychol. Rev. 10 (3), 251296.CrossRefGoogle Scholar
Thompson, S. & Hill, S. (1995) Functional Programming Through the Curriculum. Functional Programming Languages in Education. LNCS, vol. 1022. Berlin, pp. 85102. Germany: Springer; see http://www.springer.com/computer/swe/book/978-3-540-60675-8Google Scholar
Tirronen, V. & Isomöttönen, V. (2012) On the design of effective learning materials for supporting self-directed learning of programming. In Proceedings of the 12th Koli Calling International Conference on Computing Education Research (Koli Calling'12). New York, NY: ACM, pp. 7482.CrossRefGoogle Scholar
Van Merriënboer, J. J. G. (1990a) Strategies for programming instruction in high school: Program completion vs. program generation. J. Educ. Comput. Res. 6 (3), 265285.CrossRefGoogle Scholar
Van Merriënboer, J. J. G., & Paas, F. G. W. C. (1990b) Automation and schema acquisition in learning elementary computer programming: Implications for the design of practice. Comput. Hum. Behav. 6 (3), 273289.CrossRefGoogle Scholar
Wallingford, E. (2002) Functional programming patterns and their role in instruction. In Proceedings of the International Conference on Functional Programming, Pittsburgh, PA. New York, NY: ACM, 151160.Google Scholar
Zhu, X. & Simon, H. A. (1987) Learning mathematics from examples and by doing. Cogn. Instr. 4 (3), 137166.CrossRefGoogle Scholar
Submit a response

Discussions

No Discussions have been published for this article.