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 code, allowing them to to fix bugs and addre...
Saved in:
| Published in: | Proceedings of ACM on programming languages Vol. 3; no. ICFP; pp. 1 - 15 |
|---|---|
| Main Authors: | , |
| Format: | Journal Article |
| Language: | English |
| Published: |
01.08.2019
|
| ISSN: | 2475-1421, 2475-1421 |
| Online Access: | Get full text |
| Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
| Abstract | 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 code, allowing them to to fix bugs and address errors in their understanding right away. However, these graders tend to focus heavily on the functional correctness of a solution, neglecting other aspects of students' code and thereby causing students to miss out on a significant amount of valuable feedback.
In this paper, we recount our experience in using the Learn-OCaml online programming platform to teach functional programming in a second-year university course on programming languages and paradigms. Moreover, we explore how to leverage Learn-OCaml's automated grading infrastructure to make it easy to write more expressive graders that give students feedback on properties of their code beyond simple input/output correctness, in order to effectively teach elements of functional programming style. In particular, we describe our extensions to the Learn-OCaml platform that evaluate students on test quality and code style.
By providing these tools and a suite of our own homework problems and associated graders, we aim to promote functional programming education, enhance students' educational experience, and make teaching and learning typed functional programming more accessible to instructors and students alike, in our community and beyond. |
|---|---|
| AbstractList | 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 code, allowing them to to fix bugs and address errors in their understanding right away. However, these graders tend to focus heavily on the functional correctness of a solution, neglecting other aspects of students' code and thereby causing students to miss out on a significant amount of valuable feedback.
In this paper, we recount our experience in using the Learn-OCaml online programming platform to teach functional programming in a second-year university course on programming languages and paradigms. Moreover, we explore how to leverage Learn-OCaml's automated grading infrastructure to make it easy to write more expressive graders that give students feedback on properties of their code beyond simple input/output correctness, in order to effectively teach elements of functional programming style. In particular, we describe our extensions to the Learn-OCaml platform that evaluate students on test quality and code style.
By providing these tools and a suite of our own homework problems and associated graders, we aim to promote functional programming education, enhance students' educational experience, and make teaching and learning typed functional programming more accessible to instructors and students alike, in our community and beyond. |
| Author | Hameer, Aliya Pientka, Brigitte |
| Author_xml | – sequence: 1 givenname: Aliya surname: Hameer fullname: Hameer, Aliya organization: McGill University, Canada – sequence: 2 givenname: Brigitte surname: Pientka fullname: Pientka, Brigitte organization: McGill University, Canada |
| BookMark | eNplkE9LAzEQxYNUsGrxK-SmHlYzSbabHKX4DwpeqtdlnCTtSnezZFPQb28XexC9vHm8-TEM75RNuth5xi5A3ADo8lYpDRXYIzaVuioL0BImv_wJmw3DhxACrNJG2Sl7W3mkTdOted54jinzGHjYdZSb2OGW9ymuE7btSOyGUXGXY4vZO75fuDG58p-9T43vyPPk-5jy9Tk7Drgd_Owwz9jrw_1q8VQsXx6fF3fLgmRpciFBWfIajSBnAhpbuRIBcG4JhHQa5u8KUZRggyFXuormMoSKvCEZtNDqjBU_dynFYUg-1NRkHH_PCZttDaIee6kPvez5yz98n5oW09c_8huEgGQf |
| CitedBy_id | crossref_primary_10_1002_cae_70026 crossref_primary_10_1145_3636515 crossref_primary_10_1145_3749996 crossref_primary_10_1017_S0956796824000182 |
| Cites_doi | 10.1145/3009837.3009900 10.1145/1122018.1122050 10.1109/C-M.1978.218136 10.1145/367415.367422 10.1109/TE.2004.825220 10.5555/786773.787159 10.1007/s40593-015-0080-x 10.1145/2843043.2843070 10.1145/2676723.2677279 10.1109/TSE.2010.62 10.1145/1163405.1163407 10.1145/1599410.1599414 10.1145/1597849.1384371 10.1007/978-3-642-31424-7_64 10.1145/268085.268210 10.1145/3110248 10.1080/08993400500150747 10.1145/2676723.2677226 10.1145/3009837.3009842 |
| ContentType | Journal Article |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3341719 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 15 |
| ExternalDocumentID | 10_1145_3341719 |
| GroupedDBID | AAKMM AAYFX AAYXX ACM AEFXT AEJOY AIKLT AKRVB ALMA_UNASSIGNED_HOLDINGS CITATION EBS GUFHI LHSKQ M~E OK1 ROL |
| ID | FETCH-LOGICAL-c258t-2139ce4a80cd8fa897d5a11a69c102d416b3aa0519f8cd5d7c62ff7ce8c2f4043 |
| ISICitedReferencesCount | 12 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000685201900038&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| ISSN | 2475-1421 |
| IngestDate | Sat Nov 29 07:50:23 EST 2025 Tue Nov 18 21:02:26 EST 2025 |
| IsDoiOpenAccess | false |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | ICFP |
| Language | English |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-c258t-2139ce4a80cd8fa897d5a11a69c102d416b3aa0519f8cd5d7c62ff7ce8c2f4043 |
| OpenAccessLink | https://dl.acm.org/doi/pdf/10.1145/3341719 |
| PageCount | 15 |
| ParticipantIDs | crossref_citationtrail_10_1145_3341719 crossref_primary_10_1145_3341719 |
| PublicationCentury | 2000 |
| PublicationDate | 2019-08-01 |
| PublicationDateYYYYMMDD | 2019-08-01 |
| PublicationDate_xml | – month: 08 year: 2019 text: 2019-08-01 day: 01 |
| PublicationDecade | 2010 |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationYear | 2019 |
| References | e_1_2_2_5_1 e_1_2_2_23_1 e_1_2_2_7_1 e_1_2_2_22_1 e_1_2_2_21_1 e_1_2_2_1_1 e_1_2_2_20_1 e_1_2_2_2_1 e_1_2_2_3_1 e_1_2_2_27_1 e_1_2_2_26_1 Cong Youyou (e_1_2_2_6_1) 2016 Schleimer Saul (e_1_2_2_24_1) 2003 e_1_2_2_14_1 e_1_2_2_13_1 e_1_2_2_12_1 e_1_2_2_11_1 e_1_2_2_10_1 Cosmo Roberto Di (e_1_2_2_8_1) 2015 e_1_2_2_19_1 e_1_2_2_18_1 e_1_2_2_17_1 e_1_2_2_16_1 Edwards Stephen H (e_1_2_2_9_1) 2003; 3 e_1_2_2_15_1 Sherman Mark (e_1_2_2_25_1) 2013; 28 Canou Benjamin (e_1_2_2_4_1) 2016 |
| References_xml | – ident: e_1_2_2_21_1 doi: 10.1145/3009837.3009900 – ident: e_1_2_2_2_1 doi: 10.1145/1122018.1122050 – ident: e_1_2_2_7_1 doi: 10.1109/C-M.1978.218136 – volume-title: Implementing a stepper using delimited continuations. contract 1 year: 2016 ident: e_1_2_2_6_1 – volume-title: Winnowing. Proceedings of the 2003 ACM SIGMOD international conference on on Management of data - SIGMOD âĂŹ03 year: 2003 ident: e_1_2_2_24_1 – volume: 28 start-page: 6 year: 2013 ident: e_1_2_2_25_1 article-title: Impact of Auto-grading on an Introductory Computing Course publication-title: J. Comput. Sci. Coll. – ident: e_1_2_2_16_1 doi: 10.1145/367415.367422 – volume-title: An Online Learning Center for OCaml. In OCaml Users and Developers Workshop year: 2016 ident: e_1_2_2_4_1 – ident: e_1_2_2_5_1 doi: 10.1109/TE.2004.825220 – ident: e_1_2_2_20_1 doi: 10.5555/786773.787159 – ident: e_1_2_2_11_1 doi: 10.1007/s40593-015-0080-x – ident: e_1_2_2_12_1 doi: 10.1145/2843043.2843070 – ident: e_1_2_2_22_1 doi: 10.1145/2676723.2677279 – ident: e_1_2_2_18_1 doi: 10.1109/TSE.2010.62 – volume: 3 volume-title: International Conference on Education and Information Systems: Technologies and Applications (EISTA’03) year: 2003 ident: e_1_2_2_9_1 – ident: e_1_2_2_26_1 – ident: e_1_2_2_19_1 doi: 10.1145/1163405.1163407 – ident: e_1_2_2_23_1 doi: 10.1145/1599410.1599414 – ident: e_1_2_2_10_1 doi: 10.1145/1597849.1384371 – ident: e_1_2_2_14_1 doi: 10.1007/978-3-642-31424-7_64 – ident: e_1_2_2_17_1 doi: 10.1145/268085.268210 – ident: e_1_2_2_13_1 – ident: e_1_2_2_3_1 doi: 10.1145/3110248 – ident: e_1_2_2_1_1 doi: 10.1080/08993400500150747 – volume-title: Introduction to Functional Programming in OCaml. (October year: 2015 ident: e_1_2_2_8_1 – ident: e_1_2_2_27_1 doi: 10.1145/2676723.2677226 – ident: e_1_2_2_15_1 doi: 10.1145/3009837.3009842 |
| SSID | ssj0001934839 |
| Score | 2.1972632 |
| Snippet | Online programming platforms have immense potential to improve students' educational experience. They make programming more accessible, as no installation is... |
| SourceID | crossref |
| SourceType | Enrichment Source Index Database |
| StartPage | 1 |
| Title | Teaching the art of functional programming using automated grading (experience report) |
| Volume | 3 |
| WOSCitedRecordID | wos000685201900038&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVHPJ databaseName: ROAD: Directory of Open Access Scholarly Resources customDbUrl: eissn: 2475-1421 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0001934839 issn: 2475-1421 databaseCode: M~E dateStart: 20170101 isFulltext: true titleUrlDefault: https://road.issn.org providerName: ISSN International Centre |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV07T8MwELZ4DSy8EeUlDwjBEEidpLZHVIFgAHUAxFa5fkgVJUV9IFj47ZyTSxoKEjCwRJFjR1Hu093n8z0IOZCJ7gAPbgQMdmpB7GQYdJjPAg6NkSqWPHRh1myC39yIhwfZwuOCYdZOgKepeH2Vz_8qahgDYfvU2T-Iu3wpDMA9CB2uIHa4_k7wRXykp5Tw3NNBb73Q6YcBWU9-xjhzFKjxqA-8FZgnPDDoOrBlCWQ8VihcBkhkW6Xhy2JBzprX_tih-vLCEzqcKLkni72ze9230hy0fEbmY94B2nfpKkKP0BXhs59E4YrINBaLeRLU4zzl-cR-M4YqN6og66p50apo0HrFFOeJnl-VfOzrYURgfzmq209ltKfMWxl0mKdgJ21cOEvmGYftlA_3fK_45WQUi6wBXfnlea61X3uKayskpsJGblfIEm4j6Fku_lUyY9M1sly06KCosdfJfYEGCmiggAbad3SCBloRGM3QQEs0UEQDPZpggeZYON4gdxfnt83LAFtpBJolYhQwIPraxkqE2ginhOQmUfW6akgNDNMAK-9ESnk674Q2ieG6wZzj2grNnC_AtEnm0n5qtwgNIy2UjFwSGzAAxggTsUgbGwqVyNDqGjks_k1bY5153-6k154SQI3QcuJzXlplesr2z1N2yOIEirtkbjQY2z2yoF9G3eFgP5PtB6blbZI |
| linkProvider | ISSN International Centre |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Teaching+the+art+of+functional+programming+using+automated+grading+%28experience+report%29&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Hameer%2C+Aliya&rft.au=Pientka%2C+Brigitte&rft.date=2019-08-01&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=3&rft.issue=ICFP&rft.spage=1&rft.epage=15&rft_id=info:doi/10.1145%2F3341719&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3341719 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon |