Abstract
Online programming platforms have immense potential to improve students' educational experience. They make programming more accessible, as no installation is required; and automatic grading facilities provide students with immediate feedback on their code, allowing them to to fix bugs and address errors in their understanding right away. However, these graders tend to focus heavily on the functional correctness of a solution, neglecting other aspects of students' code and thereby causing students to miss out on a significant amount of valuable feedback.
In this paper, we recount our experience in using the Learn-OCaml online programming platform to teach functional programming in a second-year university course on programming languages and paradigms. Moreover, we explore how to leverage Learn-OCaml's automated grading infrastructure to make it easy to write more expressive graders that give students feedback on properties of their code beyond simple input/output correctness, in order to effectively teach elements of functional programming style. In particular, we describe our extensions to the Learn-OCaml platform that evaluate students on test quality and code style.
By providing these tools and a suite of our own homework problems and associated graders, we aim to promote functional programming education, enhance students' educational experience, and make teaching and learning typed functional programming more accessible to instructors and students alike, in our community and beyond.
Supplemental Material
Available for Download
Appendix
- Kirsti M Ala-Mutka. 2005. A Survey of Automated Assessment Approaches for Programming Assignments. Computer Science Education 15, 2 (2005), 83–102.Google Scholar
Digital Library
- Steve D Benford, Edmund K Burke, Eric Foxley, and Christopher A Higgins. 1995. The Ceilidh system for the automatic grading of students on programming courses. In Proceedings of the 33rd annual on Southeast regional conference. ACM, 176–182. Google Scholar
Digital Library
- Benjamin Canou, Roberto Di Cosmo, and Grégoire Henry. 2017. Scaling up functional programming education: under the hood of the OCaml MOOC. Proceedings of the ACM on Programming Languages 1, ICFP (aug 2017), 1–25. Google Scholar
Digital Library
- Benjamin Canou, Grégoire Henry, Çagdas Bozman, and Fabrice Le Fessant. 2016. Learn OCaml, An Online Learning Center for OCaml. In OCaml Users and Developers Workshop 2016.Google Scholar
- Peter M Chen. 2004. An Automated Feedback System for Computer Organization Projects. IEEE Transactions on Education 47, 2 (May 2004), 232–240. Google Scholar
Digital Library
- Youyou Cong and Kenichi Asai. 2016. Implementing a stepper using delimited continuations. contract 1 (2016), r1.Google Scholar
- Richard A DeMillo, Richard J Lipton, and Frederick G Sayward. 1978. Hints on test data selection: Help for the practicing programmer. Computer 11, 4 (1978), 34–41. Google Scholar
Digital Library
- Roberto Di Cosmo, Yann Regis-Gianas, and Ralf Treinen. 2015. Introduction to Functional Programming in OCaml. (October 2015). https://www.fun-mooc.fr/courses/parisdiderot/56002/session01/aboutGoogle Scholar
- Stephen H Edwards. 2003. Using test-driven development in the classroom: Providing students with automatic, concrete feedback on performance. In International Conference on Education and Information Systems: Technologies and Applications (EISTA’03), Vol. 3.Google Scholar
- Stephen H Edwards and Manuel A Perez-Quinones. 2008. Web-CAT: automatically grading programming assignments. In ACM SIGCSE Bulletin, Vol. 40. ACM, 328–328. Google Scholar
Digital Library
- Alex Gerdes, Bastiaan Heeren, Johan Jeuring, and L Thomas van Binsbergen. 2017. Ask-Elle: an adaptable programming tutor for Haskell giving automated feedback. International Journal of Artificial Intelligence in Education 27, 1 (2017), 65–100.Google Scholar
Cross Ref
- Vincent Gramoli, Michael Charleston, Bryn Jeffries, Irena Koprinska, Martin McGrane, Alex Radu, Anastasios Viglas, and Kalina Yacef. 2016. Mining Autograding Data in Computer Science Education. In Proceedings of the Australasian Computer Science Week Multiconference (ACSW ’16). ACM, New York, NY, USA, Article 1, 10 pages. Google Scholar
Digital Library
- Robert W. Harper. 2013. Programming in Standard ML. (draft available at https://www.cs.cmu.edu/~rwh/isml/book.pdf ).Google Scholar
- Jan Hoffmann, Klaus Aehlig, and Martin Hofmann. 2012. Resource Aware ML. Lecture Notes in Computer Science (2012), 781âĂŞ786. Google Scholar
Digital Library
- Jan Hoffmann, Ankush Das, and Shu-Chun Weng. 2017. Towards automatic resource bound analysis for OCaml. ACM SIGPLAN Notices 52, 1 (Jan 2017), 359âĂŞ373. Google Scholar
Digital Library
- Jack Hollingsworth. 1960. Automatic graders for programming classes. Commun. ACM 3, 10 (1960), 528–529. Google Scholar
Digital Library
- David Jackson and Michelle Usher. 1997. Grading Student Programs Using Assyst. ACM SIGCSE Bulletin 29, 1 (1997), 335–339. Google Scholar
Digital Library
- Yue Jia and Mark Harman. 2011. An Analysis and Survey of the Development of Mutation Testing. IEEE Transactions on Software Engineering 37, 5 (Sep. 2011), 649–678. Google Scholar
Digital Library
- Mike Joy, Nathan Griffiths, and Russell Boyatt. 2005. The boss online submission and assessment system. Journal on Educational Resources in Computing (JERIC) 5, 3 (2005), 2. Google Scholar
Digital Library
- Greg Michaelson. 1996. Automatic analysis of functional program style. In Australian Software Engineering Conference. 38–46. Google Scholar
Digital Library
- Cyrus Omar, Ian Voysey, Michael Hilton, Jonathan Aldrich, and Matthew A Hammer. 2017. Hazelnut: a bidirectionally typed structure editor calculus. ACM SIGPLAN Notices 52, 1 (2017), 86–99. Google Scholar
Digital Library
- Raymond Pettit, John Homer, Roger Gee, Susan Mengel, and Adam Starbuck. 2015. An Empirical Study of Iterative Improvement in Programming Assignments. In 46th ACM Technical Symposium on Computer Science Education (SIGCSE ’15). ACM, 410–415. Google Scholar
Digital Library
- Konstantinos Sagonas and Thanassis Avgerinos. 2009. Automatic refactoring of Erlang programs. Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming - PPDP âĂŹ09 (2009). Google Scholar
Digital Library
- Saul Schleimer, Daniel S. Wilkerson, and Alex Aiken. 2003. Winnowing. Proceedings of the 2003 ACM SIGMOD international conference on on Management of data - SIGMOD âĂŹ03 (2003).Google Scholar
- Mark Sherman, Sarita Bassil, Derrell Lipman, Nat Tuck, and Fred Martin. 2013. Impact of Auto-grading on an Introductory Computing Course. J. Comput. Sci. Coll. 28, 6 (June 2013), 69–75. http://dl.acm.org/citation.cfm?id=2460156.2460171 Google Scholar
Digital Library
- Zach Sims and Ryan Bubinski. 2011. Codecademy. (2011). http://www.codecademy.comGoogle Scholar
- Chris Wilcox. 2015. The role of automation in undergraduate computer science education. In Proceedings of the 46th ACM Technical Symposium on Computer Science Education. ACM, 90–95. Google Scholar
Digital Library
Index Terms
Teaching the art of functional programming using automated grading (experience report)
Recommendations
Teaching how to program using automated assessment and functional glossy games (experience report)
Our department has long been an advocate of the functional-first school of programming and has been teaching Haskell as a first language in introductory programming course units for 20 years. Although the functional style is largely beneficial, it needs ...
Scaling up functional programming education: under the hood of the OCaml MOOC
This article describes the key innovations used in the massive open online course ``Introduction to Functional Programming using OCaml'' that has run since the fall semester of 2015. A fully in-browser development environment with an integrated grader ...
Interface-based programming assignments and automatic grading of java programs
Proceedings of the 12th annual SIGCSE conference on Innovation and technology in computer science education (ITiCSE'07)AutoGrader is a framework developed at Miami University for the automatic grading of student programming assignments written in the Java programming language. AutoGrader leverages the abstract concept of interfaces, as implemented by the Java interface ...






Comments