skip to main content
research-article
Open access

Scaling up functional programming education: under the hood of the OCaml MOOC

Published: 29 August 2017 Publication History

Abstract

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 provides an exceptional level of feedback to the learners. A functional library of grading combinators greatly simplifies the notoriously complex task of writing test suites for the exercises, and provides static type-safety guarantees on the tested user code. Even the error-prone manual process of importing the course content in the learning platform has been replaced by a functional program that describes the course and statically checks its contents. A detailed statistical analysis of the data collected during and after the course assesses the effectiveness of these innovations.

References

[1]
Erik Barendsen and Valentina Dagiene (Eds.). 2014. Proceedings of the Computer Science Education Research Conference, CSERC 2014, Berlin, Germany, November 5-6, 2014. ACM.
[2]
Hans-Juergen Boehm and Cormac Flanagan (Eds.). 2013. ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’13, Seattle, WA, USA, June 16-19, 2013. ACM. http://dl.acm.org/citation.cfm?id=2491956
[3]
Randal E. Bryant, Klaus Sutner, and Mark J. Stehlik. 2010. Introductory Computer Science Education at Carnegie Mellon University: a Deans’ Perspective. Technical Report CMU-CS-10-140. School of Computer Science, Carnegie Mellon University.
[4]
Koen Claessen and John Hughes. 2000. QuickCheck: a lightweight tool for random testing of Haskell programs, See [ Odersky and Wadler 2000 ], 268–279.
[5]
Robert Dewar and Owen L. Astrachan. 2009. Point/counterpoint - CS education in the U.S.: heading in the wrong direction? Commun. ACM 52, 7 (2009), 41–45.
[6]
Roberto Di Cosmo, Yann Regis-Gianas, and Ralf Treinen. 2015. Introduction to functional programming using the OCaml programming language. https://www.fun-mooc.fr/courses/parisdiderot/56002/session01/about . (October 2015).
[7]
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay A. McCarthy, and Sam Tobin-Hochstadt. 2015. The Racket Manifesto. In 1st Summit on Advances in Programming Languages, SNAPL.
[8]
Vincent Gramoli, Michael A. 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.
[9]
Grégoire Henry, Michel Mauny, Emmanuel Chailloux, and Pascal Manoury. 2012. Typing Unmarshalling Without Marshalling Types. SIGPLAN Not. 47, 9 (Sept. 2012), 287–298.
[10]
Jack Hollingsworth. 1960. Automatic Graders for Programming Classes. Commun. ACM 3, 10 (Oct. 1960), 528–529.
[11]
Johan Jeuring, L. Thomas van Binsbergen, Alex Gerdes, and Bastiaan Heeren. 2014. Model solutions and properties for diagnosing student programs in Ask-Elle, See [ Barendsen and Dagiene 2014 ], 31–40.
[12]
Ville Karavirta, Ari Korhonen, and Lauri Malmi. 2006. On the use of resubmissions in automatic assessment systems. Computer Science Education 16, 3 (2006), 229–240.
[13]
Mikko-Jussi Laakso, Tapio Salakoski, Linda Grandell, Xuemei Qiu, Ari Korhonen, and Lauri Malmi. 2005. Multi-Perspective Study of Novice Learners Adopting the Visual Algorithm Simulation Exercise System TRAKLA2. Informatics in Education 4, 1 (2005), 49–68.
[14]
Heather Miller, Philipp Haller, Lukas Rytz, and Martin Odersky. 2014. Functional programming for all! scaling a MOOC for students and professionals alike. In 36th International Conference on Software Engineering, ICSE.
[15]
Robin Milner. 1978. A Theory of Type Polymorphism in Programming. J. Comput. Syst. Sci. 17, 3 (1978), 348–375.
[16]
Dejan S. Milojicic. 2011. Autograding in the Cloud: Interview with David O’Hallaron. IEEE Internet Computing 15, 1 (2011), 9–12.
[17]
Martin Odersky and Philip Wadler (Eds.). 2000. Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming (ICFP ’00), Montreal, Canada, September 18-21, 2000. ACM.
[18]
Andrei Papancea, Jaime Spacco, and David Hovemeyer. 2013. An open platform for managing short programming exercises. In International Computing Education Research Conference, ICER.
[19]
Marco Piccioni, Christian Estler, and Bertrand Meyer. 2014. SPOC-supported Introduction to Programming. In Proceedings of the 2014 Conference on Innovation & Technology in Computer Science Education (ITiCSE ’14). ACM, New York, NY, USA, 3–8.
[20]
David Pritchard and Troy Vasiga. 2013. CS circles: an in-browser python course for beginners. In Proceeding of the 44th ACM technical symposium on Computer science education, SIGSCE.
[21]
Christian Queinnec. 2010. Invited Talk : On Automated Grading. In Journées francophones des langages applicatifs (JFLA). http://www.paracamplus.com/ .
[22]
Guido Rößling, Thomas L. Naps, and Christian Spannagel (Eds.). 2011. Proceedings of the 16th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education, ITiCSE 2011, Darmstadt, Germany, June 27-29, 2011. ACM.
[23]
Rishabh Singh, Sumit Gulwani, and Armando Solar-Lezama. 2013. Automated feedback generation for introductory programming assignments, See [ Boehm and Flanagan 2013 ], 15–26.
[24]
Jérôme Vouillon and Vincent Balat. 2014. From bytecode to JavaScript: the Js_of_ocaml compiler. Software: Practice and Experience 44, 8 (2014), 951–972.
[25]
Danny Yoo, Emmanuel Schanzer, Shriram Krishnamurthi, and Kathi Fisler. 2011. WeScheme: the browser is your programming environment, See [ Rößling et al. 2011 ], 163–167.

Cited By

View all
  • (2025)Experiences of early assessment to teach functional programmingJournal of Functional Programming10.1017/S095679682400018235Online publication date: 3-Feb-2025
  • (2024)Automated Grading and Feedback Tools for Programming Education: A Systematic ReviewACM Transactions on Computing Education10.1145/363651524:1(1-43)Online publication date: 19-Feb-2024
  • (2023)Identifying Different Student Clusters in Functional Programming AssignmentsProceedings of the 54th ACM Technical Symposium on Computer Science Education V. 110.1145/3545945.3569882(750-756)Online publication date: 2-Mar-2023
  • Show More Cited By

Index Terms

  1. Scaling up functional programming education: under the hood of the OCaml MOOC

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image Proceedings of the ACM on Programming Languages
      Proceedings of the ACM on Programming Languages  Volume 1, Issue ICFP
      September 2017
      1173 pages
      EISSN:2475-1421
      DOI:10.1145/3136534
      Issue’s Table of Contents
      This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs International 4.0 License.

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 29 August 2017
      Published in PACMPL Volume 1, Issue ICFP

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. MOOC
      2. automated grading
      3. browser based education platform
      4. functional programming
      5. programming education
      6. safe program introspection

      Qualifiers

      • Research-article

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)115
      • Downloads (Last 6 weeks)20
      Reflects downloads up to 18 Feb 2025

      Other Metrics

      Citations

      Cited By

      View all
      • (2025)Experiences of early assessment to teach functional programmingJournal of Functional Programming10.1017/S095679682400018235Online publication date: 3-Feb-2025
      • (2024)Automated Grading and Feedback Tools for Programming Education: A Systematic ReviewACM Transactions on Computing Education10.1145/363651524:1(1-43)Online publication date: 19-Feb-2024
      • (2023)Identifying Different Student Clusters in Functional Programming AssignmentsProceedings of the 54th ACM Technical Symposium on Computer Science Education V. 110.1145/3545945.3569882(750-756)Online publication date: 2-Mar-2023
      • (2022)Stop Reinventing the Wheel! Promoting Community Software in Computing EducationProceedings of the 2022 Working Group Reports on Innovation and Technology in Computer Science Education10.1145/3571785.3574129(261-292)Online publication date: 27-Dec-2022
      • (2022)LupaProceedings of the 19th International Conference on Mining Software Repositories10.1145/3524842.3528477(398-402)Online publication date: 23-May-2022
      • (2022)Objective Tests in Automated Grading of Computer Science Courses: An OverviewHandbook on Intelligent Techniques in the Educational Process10.1007/978-3-031-04662-9_12(239-268)Online publication date: 16-Jun-2022
      • (2021)Data Collection for the Learn-OCaml Programming PlatformProceedings of the 52nd ACM Technical Symposium on Computer Science Education10.1145/3408877.3439579(1341-1341)Online publication date: 3-Mar-2021
      • (2019)Teaching the art of functional programming using automated grading (experience report)Proceedings of the ACM on Programming Languages10.1145/33417193:ICFP(1-15)Online publication date: 26-Jul-2019
      • (2018)Putting in all the stops: execution control for JavaScriptACM SIGPLAN Notices10.1145/3296979.319237053:4(30-45)Online publication date: 11-Jun-2018
      • (2018)Putting in all the stops: execution control for JavaScriptProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192370(30-45)Online publication date: 11-Jun-2018

      View Options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Login options

      Full Access

      Figures

      Tables

      Media

      Share

      Share

      Share this Publication link

      Share on social media