skip to main content
research-article
Open Access

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

Published:29 August 2017Publication History
Skip Abstract Section

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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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=2491956Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  4. Koen Claessen and John Hughes. 2000. QuickCheck: a lightweight tool for random testing of Haskell programs, See [ Odersky and Wadler 2000 ], 268–279. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Jack Hollingsworth. 1960. Automatic Graders for Programming Classes. Commun. ACM 3, 10 (Oct. 1960), 528–529. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Robin Milner. 1978. A Theory of Type Polymorphism in Programming. J. Comput. Syst. Sci. 17, 3 (1978), 348–375. Google ScholarGoogle ScholarCross RefCross Ref
  16. Dejan S. Milojicic. 2011. Autograding in the Cloud: Interview with David O’Hallaron. IEEE Internet Computing 15, 1 (2011), 9–12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Andrei Papancea, Jaime Spacco, and David Hovemeyer. 2013. An open platform for managing short programming exercises. In International Computing Education Research Conference, ICER. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Christian Queinnec. 2010. Invited Talk : On Automated Grading. In Journées francophones des langages applicatifs (JFLA). http://www.paracamplus.com/ .Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  23. Rishabh Singh, Sumit Gulwani, and Armando Solar-Lezama. 2013. Automated feedback generation for introductory programming assignments, See [ Boehm and Flanagan 2013 ], 15–26. Google ScholarGoogle ScholarCross RefCross Ref
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

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

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader