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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- Jack Hollingsworth. 1960. Automatic Graders for Programming Classes. Commun. ACM 3, 10 (Oct. 1960), 528–529. Google ScholarDigital 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 ScholarDigital 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 ScholarCross 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 ScholarCross 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 ScholarDigital Library
- Robin Milner. 1978. A Theory of Type Polymorphism in Programming. J. Comput. Syst. Sci. 17, 3 (1978), 348–375. Google ScholarCross Ref
- Dejan S. Milojicic. 2011. Autograding in the Cloud: Interview with David O’Hallaron. IEEE Internet Computing 15, 1 (2011), 9–12. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarCross 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 ScholarDigital 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 ScholarDigital 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 ...
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. ...
Self-Regulation for High School Learners in a MOOC Computer Science Course
SIGCSE '20: Proceedings of the 51st ACM Technical Symposium on Computer Science EducationCourses designed for Massive Open Online Courseware (MOOC)platforms provide learners worldwide with extensive learning opportunities. Previous research has explored learner motivation in MOOC courses using self-regulated learning (SRL) theory. How-ever; ...
Comments