Skip to main content

A Programming Tutor for Haskell

  • Chapter
Central European Functional Programming School (CEFP 2011)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 7241))

Included in the following conference series:

Abstract

In these lectures we will introduce an interactive system that supports writing simple functional programs. Using this system, students learning functional programming:

  • develop their programs incrementally,

  • receive feedback about whether or not they are on the right track,

  • can ask for a hint when they are stuck,

  • see how a complete program is stepwise constructed,

  • get suggestions about how to refactor their program.

The system itself is implemented as a functional program, and uses fundamental concepts such as rewriting, parsing, strategies, program transformations and higher-order combinators such as the fold. We will introduce these concepts, and show how they are used in the implementation of the interactive functional programming tutor.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  • Anderson, J.R., Conrad, F.G., Corbett, A.T.: Skill acquisition and the LISP tutor. Cognitive Science 13, 467–505 (1986)

    Article  Google Scholar 

  • Back, R.-J.: A calculus of refinements for program derivations. In: Reports on Computer Science and Mathematics 54. Ã…bo Akademi (1987)

    Google Scholar 

  • Berger, U., Eberl, M., Schwichtenberg, H.: Normalization by Evaluation. In: Möller, B., Tucker, J.V. (eds.) Prospects for Hardware Foundations. LNCS, vol. 1546, pp. 117–137. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  • Bergstra, J.A., Klop, J.W.: Algebra of communicating processes with abstraction. Theoretical Computer Science 37, 77–121 (1985)

    Article  MathSciNet  MATH  Google Scholar 

  • Bird, R.S.: An introduction to the theory of lists. In: Broy, M. (ed.) Logic of Programming and Calculi of Discrete Design. NATO ASI Series, vol. F36, pp. 5–42. Springer (1987)

    Google Scholar 

  • Brown, J.S., Burton, R.R.: Diagnostic models for procedural bugs in basic mathematical skills. Cognitive Science 2, 155–192 (1978)

    Article  Google Scholar 

  • Bundy, A.: The Computer Modelling of Mathematical Reasoning. Academic Press (1983)

    Google Scholar 

  • Dijkstra, E.W.: Guarded commands, nondeterminacy and formal derivation of programs. Commun. ACM 18, 453–457 (1975)

    Article  MathSciNet  MATH  Google Scholar 

  • Felleisen, M., Findler, R.B., Flatt, M., Krishnamurthi, S.: How to design programs: an introduction to programming and computing. MIT Press, Cambridge (2002)

    MATH  Google Scholar 

  • Filinski, A., Rohde, H.K.: A Denotational Account of Untyped Normalization by Evaluation. In: Walukiewicz, I. (ed.) FOSSACS 2004. LNCS, vol. 2987, pp. 167–181. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  • Fincher, S., Petre, M. (eds.): Computer Science Education Research. RoutledgeFalmer (2004)

    Google Scholar 

  • Fokker, J.: Functional Parsers. In: Jeuring, J., Meijer, E. (eds.) AFP 1995. LNCS, vol. 925, pp. 1–23. Springer, Heidelberg (1995)

    Chapter  Google Scholar 

  • Fokkink, W.: Introduction to Process Algebra. Springer (2000) ISBN 354066579X

    Google Scholar 

  • Gerdes, A., Heeren, B., Jeuring, J., Stuurman, S.: Feedback services for exercise assistants. In: Remenyi, D. (ed.) ECEL 2007: Proceedings of the 7th European Conference on e-Learning, pp. 402–410. Academic Publishing Limited (2008); Also available as Technical report Utrecht University UU-CS-2008-018

    Google Scholar 

  • Gerdes, A., Jeuring, J., Heeren, B.: Using strategies for assessment of programming exercises. In: Lewandowski, G., Wolfman, S.A., Cortina, T.J., Walker, E.L. (eds.) SIGCSE, pp. 441–445. ACM (2010)

    Google Scholar 

  • Gerdes, A., Jeuring, J., Heeren, B.: Teachers and students in charge — using annotated model solutions in a functional programming tutor. Technical report, Utrecht University, Department of Computer Science (to appear, 2012)

    Google Scholar 

  • Guzdial, M.: Programming environments for novices. In: Fincher, S., Petre, M. (eds.) Computer Science Education Research. RoutledgeFalmer (2004)

    Google Scholar 

  • Hattie, J., Timperley, H.: The power of feedback. Review of Educational Research 77(1), 81–112 (2007)

    Article  Google Scholar 

  • Heeren, B., Jeuring, J.: Recognizing strategies. In: Middeldorp, A. (ed.) WRS 2008: Reduction Strategies in Rewriting and Programming, 8th International Workshop (2008)

    Google Scholar 

  • Heeren, B., Jeuring, J.: Canonical Forms in Interactive Exercise Assistants. In: Carette, J., Dixon, L., Coen, C.S., Watt, S.M. (eds.) Calculemus/MKM 2009. LNCS (LNAI), vol. 5625, pp. 325–340. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  • Heeren, B., Jeuring, J.: Adapting Mathematical Domain Reasoners. In: Autexier, S., Calmet, J., Delahaye, D., Ion, P.D.F., Rideau, L., Rioboo, R., Sexton, A.P. (eds.) AISC/Calculemus/MKM 2010. LNCS (LNAI), vol. 6167, pp. 315–330. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  • Heeren, B., Jeuring, J.: Interleaving Strategies. In: Davenport, J.H., Farmer, W.M., Urban, J., Rabe, F. (eds.) Calculemus/MKM 2011. LNCS (LNAI), vol. 6824, pp. 196–211. Springer, Heidelberg (2011)

    Chapter  Google Scholar 

  • Heeren, B., Leijen, D., van IJzendoorn, A.: Helium, for learning Haskell. In: Haskell 2003: Proceedings of the 2003 ACM SIGPLAN Workshop on Haskell, pp. 62–71. ACM (2003)

    Google Scholar 

  • Heeren, B., Jeuring, J., van Leeuwen, A., Gerdes, A.: Specifying Strategies for Exercises. In: Autexier, S., Campbell, J., Rubio, J., Sorge, V., Suzuki, M., Wiedijk, F. (eds.) AISC/Calculemus/MKM 2008. LNCS (LNAI), vol. 5144, pp. 430–445. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  • Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12, 576–580 (1969)

    Article  MATH  Google Scholar 

  • Hoare, C.A.R.: Communicating sequential processes. Prentice-Hall, Inc. (1985) ISBN 0-13-153271-5

    Google Scholar 

  • Hong, J.: Guided programming and automated error analysis in an intelligent Prolog tutor. International Journal on Human-Computer Studies 61(4), 505–534 (2004)

    Article  Google Scholar 

  • Huet, G.: Functional Pearl: The Zipper. Journal of Functional Programming 7(5), 549–554 (1997)

    Article  MathSciNet  MATH  Google Scholar 

  • Hutton, G.: Higher-order Functions for Parsing. Journal of Functional Programming 2(3), 323–343 (1992)

    Article  MathSciNet  MATH  Google Scholar 

  • Meertens, L.: Algorithmics — towards programming as a mathematical activity. In: Proceedings of the CWI Symposium on Mathematics and Computer Science. CWI Monographs, vol. 1, pp. 289–334. North–Holland (1986)

    Google Scholar 

  • van Merriënboer, J.J.G., Paas, F.G.W.C.: Automation and schema acquisition in learning elementary computer programming: Implications for the design of practice. Computers in Human Behavior 6, 273–289 (1990)

    Article  Google Scholar 

  • Miller, P., Pane, J., Meter, G., Vorthmann, S.: Evolution of Novice Programming Environments: The Structure Editors of Carnegie Mellon University. Interactive Learning Environments 4(2), 140–158 (1994)

    Article  Google Scholar 

  • Morgan, C.: Programming from specifications. Prentice-Hall, Inc. (1990)

    Google Scholar 

  • Jones, S.P., et al.: Haskell 98, Language and Libraries. The Revised Report. Cambridge University Press (2003); A special issue of the Journal of Functional Programming, http://www.haskell.org/

  • Soloway, E.: From problems to programs via plans: the content and structure of knowledge for introductory LISP programming. Journal of Educational Computing Research 1(2), 157–172 (1985)

    Article  Google Scholar 

  • Doaitse Swierstra, S., Duponcheel, L.: Deterministic, Error-correcting Combinator Parsers. In: Launchbury, J., Meijer, E., Sheard, T. (eds.) AFP 1996. LNCS, vol. 1129, pp. 184–207. Springer, Heidelberg (1996)

    Chapter  Google Scholar 

  • Doaitse Swierstra, S.: Combinator Parsing: A Short Tutorial. In: Bove, A., Barbosa, L.S., Pardo, A., Pinto, J.S. (eds.) Language Engineering and Rigorous Software Development. LNCS, vol. 5520, pp. 252–300. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  • VanLehn, K.: The behavior of tutoring systems. International Journal on Artificial Intelligence in Education 16(3), 227–265 (2006)

    Google Scholar 

  • Vanlehn, K., Lynch, C., Schulze, K., Shapiro, J.A., Shelby, R., Taylor, L., Treacy, D., Weinstein, A., Wintersgill, M.: The andes physics tutoring system: Lessons learned. International Journal on Artificial Intelligence in Education 15, 147–204 (2005)

    MATH  Google Scholar 

  • Xu, S., Chee, Y.S.: Transformation-based diagnosis of student programs for programming tutoring systems. IEEE Transactions on Software Engineering 29(4), 360–384 (2003)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Jeuring, J., Gerdes, A., Heeren, B. (2012). A Programming Tutor for Haskell. In: Zsók, V., Horváth, Z., Plasmeijer, R. (eds) Central European Functional Programming School. CEFP 2011. Lecture Notes in Computer Science, vol 7241. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-32096-5_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-32096-5_1

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-32095-8

  • Online ISBN: 978-3-642-32096-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics