A Programming Tutor for Haskell
Chapter
- 4 Citations
- 627 Downloads
Abstract
In these lectures we will introduce an interactive system that supports writing simple functional programs. Using this system, students learning functional programming:
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.
-
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.
Keywords
Minor Rule Functional Programming Tutoring System Intelligent Tutoring System Concrete Syntax
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Preview
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)CrossRefGoogle 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)CrossRefGoogle Scholar
- Bergstra, J.A., Klop, J.W.: Algebra of communicating processes with abstraction. Theoretical Computer Science 37, 77–121 (1985)MathSciNetCrossRefzbMATHGoogle 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)CrossRefGoogle 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)MathSciNetCrossRefzbMATHGoogle Scholar
- Felleisen, M., Findler, R.B., Flatt, M., Krishnamurthi, S.: How to design programs: an introduction to programming and computing. MIT Press, Cambridge (2002)zbMATHGoogle 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)CrossRefGoogle 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)CrossRefGoogle Scholar
- Fokkink, W.: Introduction to Process Algebra. Springer (2000) ISBN 354066579XGoogle 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-018Google 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)CrossRefGoogle 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)CrossRefGoogle 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)CrossRefGoogle 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)CrossRefGoogle 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)CrossRefGoogle Scholar
- Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12, 576–580 (1969)CrossRefzbMATHGoogle Scholar
- Hoare, C.A.R.: Communicating sequential processes. Prentice-Hall, Inc. (1985) ISBN 0-13-153271-5Google 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)CrossRefGoogle Scholar
- Huet, G.: Functional Pearl: The Zipper. Journal of Functional Programming 7(5), 549–554 (1997)MathSciNetCrossRefzbMATHGoogle Scholar
- Hutton, G.: Higher-order Functions for Parsing. Journal of Functional Programming 2(3), 323–343 (1992)MathSciNetCrossRefzbMATHGoogle 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)CrossRefGoogle 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)CrossRefGoogle 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)CrossRefGoogle 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)CrossRefGoogle 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)CrossRefGoogle 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)zbMATHGoogle 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)CrossRefGoogle Scholar
Copyright information
© Springer-Verlag Berlin Heidelberg 2012