π¬ The OCaml MOOC Benjamin Canou, Yann RΓ©gis-Gianas (joint work with Γagdas Bozman, Roberto Di Cosmo, GrΓ©goire Henry and Ralf Treinen) Canterbury, June 22, 2017 Trends in Functional Programming in Education 2017 1
π¬ The OCaml MOOC TFPIE 2017 1 / 22 A humble and ambitious journey 2
π¬ Humble? The OCaml MOOC TFPIE 2017 2 / 22 β Only 3 key notions of languages from the ML family : β Functional programming, β Static typing with full type inference, and β Algebraic datatypes. 3 β Write medium sized programs of reasonable complexity using OCaml.
π¬ β¦and Ambitious? The OCaml MOOC TFPIE 2017 3 / 22 β Ensure that the learners who completed the course master the 3 key notions. 4 β β¦in just 7 weeks.
π¬ The OCaml MOOC TFPIE 2017 4 / 22 A secret goal : Retain them all along the course. 5 ( )
π¬ Who were our students? Who were our students? The OCaml MOOC TFPIE 2017 5 / 22 6
π¬ Where are they from? The OCaml MOOC TFPIE 2017 6 / 22 β 7000 learners enrolled; β from more than 120 countries (France, US, Spain, UK, India and Germany being the top 6); β 2418 actually showed up when the course started. 7
π¬ 7 / 22 How old are they? 8 The OCaml MOOC TFPIE 2017 0.04 0.02 0.00 15 20 25 30 35 40 45 50 55 60 65 70 75 80 Age
π¬ 85.44 38.00 75 91.44 Elementary 7 26.43 1 100.0 Junior High 65 21.14 9 Other PhD 40 34.02 11 86.45 N/A 438 34.93 128 89.41 Total 2418 615 Unusual for a MOOC : a lot of students. 226 86.69 How educated are they? 32 The OCaml MOOC TFPIE 2017 8 / 22 Active Passed Numbers avg. success Numbers avg. success High School 255 20.93 90.19 242 Associate 45 21.29 4 86.50 Bachelor 567 26.70 113 87.12 Master 775 37.13 9
π¬ How did our students learn? How did our students learn? The OCaml MOOC TFPIE 2017 9 / 22 10
π¬ Study and PRACTICE! The OCaml MOOC TFPIE 2017 10 / 22 β State-of-the-art exercise environment; β One important pedagogical idea : No submission limit and deadlines on the exercises β The consequence : Students are working harder to get a score of 100% 11 β Classic material : slides and videos (42 capsules, βΌ 6 hours); β 55 exercises (7 quizz, 48 automatically graded exercices) and 2 projects. β The total length of our own solutions is around 1500 loc.
π¬ How good was the trip? How good was the trip? The OCaml MOOC TFPIE 2017 11 / 22 12
π¬ The OCaml MOOC Afuer week 2, we had gathered a stable group of students 13 TFPIE 2017 12 / 22 7000 Number of students 6000 5000 4000 3000 2000 1000 0 Enroll W 1 W 2 W 3 W 4 W 5 W 6 W Proj
π¬ per perceived difgiculty and spend 8 hours per week on the course! A majority of students found the difgiculty just right How hard was it for the learners? 14 Weekly efgort (hs/week) 13 / 22 TFPIE 2017 The OCaml MOOC Too Difficult Difficult Just Right Easy Too Easy 2 4 6 8 10
π¬ per degree Whatever the level of education, our students seem satisfied. How pleasant was the trip? 15 Distr. of appreciation 14 / 22 TFPIE 2017 The OCaml MOOC PhD Master Bachelor Associate High School 0 1 2 3 4
π¬ The Exercise Platform The Exercise Platform The OCaml MOOC TFPIE 2017 15 / 22 16
π¬ A beginnerβs IDE in the browser The OCaml MOOC TFPIE 2017 16 / 22 Main features β everything runs inside the browser, nothing to install; β syntax colouring and forced indentation; β OCaml runs inside a separate worker for responsiveness; β structured report with pretuy printed test cases; β interactive toplevel for quick testing. 17 β incremental, randomized automated grading system; We are building a standalone platform from this code : learn-ocaml.
DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO 18 TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO DEMO DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME TIME TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME DEMO TIME
π¬ 6 : 12 : </ol> </li> 11 : computes the height of the tree; 10 : <code>height: tree -> int</code> 9 : <li> 8 : </li> 7 : computes the number of tree elements. <code>size: tree -> int</code> A minimal grader 5 : <li> 4 : 3 : <ol> prelude , write the following function </p> 2 : 1 : <p>Given the type of binary tree in the Exercise text 17 / 22 TFPIE 2017 The OCaml MOOC 1 / 3 19
Recommend
More recommend