Skip to main content Accessibility help
×
Home

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)
Corresponding

Abstract

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 

Access options

Get access to the full version of this content by using one of the access options below.

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.Google 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.

Full text views

Full text views reflects PDF downloads, PDFs sent to Google Drive, Dropbox and Kindle and HTML full text views.

Total number of HTML views: 0
Total number of PDF views: 32 *
View data table for this chart

* Views captured on Cambridge Core between September 2016 - 19th January 2021. This data will be updated every 24 hours.

Hostname: page-component-76cb886bbf-wsww6 Total loading time: 0.666 Render date: 2021-01-19T12:33:58.811Z Query parameters: { "hasAccess": "0", "openAccess": "0", "isLogged": "0", "lang": "en" } Feature Flags: { "shouldUseShareProductTool": true, "shouldUseHypothesis": true, "isUnsiloEnabled": true, "metricsAbstractViews": false, "figures": false, "newCiteModal": false }

Send article to Kindle

To send this article to your Kindle, first ensure no-reply@cambridge.org is added to your Approved Personal Document E-mail List under your Personal Document Settings on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part of your Kindle email address below. Find out more about sending to your Kindle. Find out more about sending to your Kindle.

Note you can select to send to either the @free.kindle.com or @kindle.com variations. ‘@free.kindle.com’ emails are free but can only be sent to your device when it is connected to wi-fi. ‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

Find out more about the Kindle Personal Document Service.

Teaching types with a cognitively effective worked example format
Available formats
×

Send article to Dropbox

To send this article to your Dropbox account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your <service> account. Find out more about sending content to Dropbox.

Teaching types with a cognitively effective worked example format
Available formats
×

Send article to Google Drive

To send this article to your Google Drive account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your <service> account. Find out more about sending content to Google Drive.

Teaching types with a cognitively effective worked example format
Available formats
×
×

Reply to: Submit a response


Your details


Conflicting interests

Do you have any conflicting interests? *