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.
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- Koen Claessen and John Hughes. 2000. QuickCheck: a lightweight tool for random testing of Haskell programs, See [ Odersky and Wadler 2000 ], 268–279. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Jack Hollingsworth. 1960. Automatic Graders for Programming Classes. Commun. ACM 3, 10 (Oct. 1960), 528–529. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- Robin Milner. 1978. A Theory of Type Polymorphism in Programming. J. Comput. Syst. Sci. 17, 3 (1978), 348–375. Google Scholar
Cross Ref
- Dejan S. Milojicic. 2011. Autograding in the Cloud: Interview with David O’Hallaron. IEEE Internet Computing 15, 1 (2011), 9–12. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Andrei Papancea, Jaime Spacco, and David Hovemeyer. 2013. An open platform for managing short programming exercises. In International Computing Education Research Conference, ICER. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Christian Queinnec. 2010. Invited Talk : On Automated Grading. In Journées francophones des langages applicatifs (JFLA). http://www.paracamplus.com/ .Google Scholar
- 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 Scholar
- Rishabh Singh, Sumit Gulwani, and Armando Solar-Lezama. 2013. Automated feedback generation for introductory programming assignments, See [ Boehm and Flanagan 2013 ], 15–26. Google Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
Scaling up functional programming education: under the hood of the OCaml MOOC
Recommendations
Teaching the art of functional programming using automated grading (experience report)
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 ...
a functional programming system SFP: sisal 3.1 language structures decomposition
PaCT'07: Proceedings of the 9th international conference on Parallel Computing TechnologiesThe paper describes equivalent transformations of structures of the Sisal 3.1 programming language (based on Sisal 90). These transformations are aimed to decompose the complex language structures into more simple ones that can be directly expressed by ...
Perception of MOOC Pedagogical Tools and Learners' Learning Styles in MOOC Blended Teaching: a Case Study
ICEBT '19: Proceedings of the 2019 3rd International Conference on E-Education, E-Business and E-TechnologyRapid development has been achieved since the emergence of MOOC in 2008, but there are still many defects in the popularization of MOOC. Developing blended teaching by utilizing is considered to be one of effective means to overcome these shortcomings. ...






Comments