{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,10]],"date-time":"2026-01-10T18:44:20Z","timestamp":1768070660813,"version":"3.49.0"},"reference-count":35,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2018,7,30]],"date-time":"2018-07-30T00:00:00Z","timestamp":1532908800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/501100001871","name":"Funda\u00e7\u00e3o para a Ci\u00eancia e a Tecnologia","doi-asserted-by":"publisher","award":["POCI-01-0145-FEDER-006961"],"award-info":[{"award-number":["POCI-01-0145-FEDER-006961"]}],"id":[{"id":"10.13039\/501100001871","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,7,30]]},"abstract":"<jats:p>Our department has long been an advocate of the functional-first school of programming and has been teaching Haskell as a first language in introductory programming course units for 20 years. Although the functional style is largely beneficial, it needs to be taught in an enthusiastic and captivating way to fight the unusually high computer science drop-out rates and appeal to a heterogeneous population of students.<\/jats:p>\n          <jats:p>\n            This paper reports our experience of restructuring, over the last 5 years, an introductory laboratory course unit that trains hands-on functional programming concepts and good software development practices. We have been using\n            <jats:italic>game programming<\/jats:italic>\n            to keep students motivated, and following a methodology that hinges on\n            <jats:italic>test-driven development<\/jats:italic>\n            and\n            <jats:italic>continuous bidirectional feedback<\/jats:italic>\n            .\n          <\/jats:p>\n          <jats:p>\n            We summarise successes and missteps, and how we have learned from our experience to arrive at a model for comprehensive and interactive functional\n            <jats:italic>game programming assignments<\/jats:italic>\n            and a general functionally-powered\n            <jats:italic>automated assessment platform<\/jats:italic>\n            , that together provide a more engaging learning experience for students. In our experience, we have been able to teach increasingly more advanced functional programming concepts while improving student engagement.\n          <\/jats:p>","DOI":"10.1145\/3236777","type":"journal-article","created":{"date-parts":[[2018,7,31]],"date-time":"2018-07-31T19:41:18Z","timestamp":1533066078000},"page":"1-17","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":14,"title":["Teaching how to program using automated assessment and functional glossy games (experience report)"],"prefix":"10.1145","volume":"2","author":[{"given":"Jos\u00e9 Bacelar","family":"Almeida","sequence":"first","affiliation":[{"name":"University of Minho, Portugal \/ INESC TEC, Portugal"}]},{"given":"Alcino","family":"Cunha","sequence":"additional","affiliation":[{"name":"University of Minho, Portugal \/ INESC TEC, Portugal"}]},{"given":"Nuno","family":"Macedo","sequence":"additional","affiliation":[{"name":"University of Minho, Portugal \/ INESC TEC, Portugal"}]},{"given":"Hugo","family":"Pacheco","sequence":"additional","affiliation":[{"name":"University of Minho, Portugal \/ INESC TEC, Portugal"}]},{"given":"Jos\u00e9","family":"Proen\u00e7a","sequence":"additional","affiliation":[{"name":"University of Minho, Portugal \/ INESC TEC, Portugal"}]}],"member":"320","published-online":{"date-parts":[[2018,7,30]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1411260.1411270"},{"key":"e_1_2_2_2_1","volume-title":"Moss: A System for Detecting Software Similarity","author":"Aiken Alex","year":"1994","unstructured":"Alex Aiken . 1994 . Moss: A System for Detecting Software Similarity . http:\/\/theory.stanford.edu\/~aiken\/moss\/ . (1994). Accessed: 2018-03-14. Alex Aiken. 1994. Moss: A System for Detecting Software Similarity. http:\/\/theory.stanford.edu\/~aiken\/moss\/ . (1994). Accessed: 2018-03-14."},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1463673.1463674"},{"key":"e_1_2_2_4_1","volume-title":"Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education, SIGCSE 2006","author":"Jessica","year":"2006","unstructured":"Jessica D. Bayliss and Sean Strout. 2006. Games as a \"flavor\" of CS1 . In Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education, SIGCSE 2006 , Houston, Texas, USA , March 3-5, 2006 . ACM, 500\u2013504. Jessica D. Bayliss and Sean Strout. 2006. Games as a \"flavor\" of CS1. In Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education, SIGCSE 2006, Houston, Texas, USA, March 3-5, 2006. ACM, 500\u2013504."},{"key":"e_1_2_2_5_1","volume-title":"Proceedings of the 26th Annual WorkShop of the Psychology of Programming Interest Group","volume":"17","author":"Bergin Susan","year":"2005","unstructured":"Susan Bergin and Ronan Reilly . 2005 . The influence of motivation and comfort-level on learning to program . In Proceedings of the 26th Annual WorkShop of the Psychology of Programming Interest Group , Vol. 17 . PPIG, 293\u2013304. Susan Bergin and Ronan Reilly. 2005. The influence of motivation and comfort-level on learning to program. In Proceedings of the 26th Annual WorkShop of the Psychology of Programming Interest Group, Vol. 17. PPIG, 293\u2013304."},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3110247"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796803004805"},{"key":"e_1_2_2_8_1","volume-title":"CC2001: Computing Curricula 2001 Computer Science. Technical Report. IEEE &amp; ACM.","author":"Chang Carl","year":"2001","unstructured":"Carl Chang , Peter J. Denning , James H. Cross II, Gerald Engel , Robert Sloan , Doris Carver , Richard Eckhouse , Willis King , Francis Lau , Susan Mengel , Pradip Srimani , Eric Roberts , Russell Shackelford , Richard Austing , C. Fay Cover , Gordon Davies , Andrew McGettrick , G. Michael Schneider , and Ursula Wolz . 2001 . CC2001: Computing Curricula 2001 Computer Science. Technical Report. IEEE &amp; ACM. Carl Chang, Peter J. Denning, James H. Cross II, Gerald Engel, Robert Sloan, Doris Carver, Richard Eckhouse, Willis King, Francis Lau, Susan Mengel, Pradip Srimani, Eric Roberts, Russell Shackelford, Richard Austing, C. Fay Cover, Gordon Davies, Andrew McGettrick, G. Michael Schneider, and Ursula Wolz. 2001. CC2001: Computing Curricula 2001 Computer Science. Technical Report. IEEE &amp; ACM."},{"key":"e_1_2_2_9_1","volume-title":"Empirical Evaluation of Test Coverage for Functional Programs. In 2016 IEEE International Conference on Software Testing, Verification and Validation, ICST 2016","author":"Cheng Yufeng","year":"2016","unstructured":"Yufeng Cheng , Meng Wang , Yingfei Xiong , Dan Hao , and Lu Zhang . 2016 . Empirical Evaluation of Test Coverage for Functional Programs. In 2016 IEEE International Conference on Software Testing, Verification and Validation, ICST 2016 , Chicago, IL, USA , April 11-15, 2016. IEEE Computer Society, 255\u2013265. Yufeng Cheng, Meng Wang, Yingfei Xiong, Dan Hao, and Lu Zhang. 2016. Empirical Evaluation of Test Coverage for Functional Programs. In 2016 IEEE International Conference on Software Testing, Verification and Validation, ICST 2016, Chicago, IL, USA, April 11-15, 2016. IEEE Computer Society, 255\u2013265."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/871895.871897"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1863543.1863576"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1029994.1029995"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/949344.949390"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1596550.1596561"},{"key":"e_1_2_2_15_1","volume-title":"Proceedings of the 8th Australasian Conference on Computing Education-Volume 52","author":"Haden Patricia","year":"2006","unstructured":"Patricia Haden . 2006 . The incredible rainbow spitting chicken: teaching traditional programming skills through games programming . In Proceedings of the 8th Australasian Conference on Computing Education-Volume 52 . Australian Computer Society, Inc., 81\u201389. Patricia Haden. 2006. The incredible rainbow spitting chicken: teaching traditional programming skills through games programming. In Proceedings of the 8th Australasian Conference on Computing Education-Volume 52. Australian Computer Society, Inc., 81\u201389."},{"key":"e_1_2_2_16_1","unstructured":"HaskellWiki. 2018. Haskell as a First Language. https:\/\/wiki.haskell.org\/Haskell_in_education#Haskell_as_a_first_language . (2018). Accessed: 2018-03-12.  HaskellWiki. 2018. Haskell as a First Language. https:\/\/wiki.haskell.org\/Haskell_in_education#Haskell_as_a_first_language . (2018). Accessed: 2018-03-12."},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1930464.1930480"},{"key":"e_1_2_2_18_1","volume-title":"CE2016: Computer Engineering Curricula","author":"Impagliazzo John","year":"2016","unstructured":"John Impagliazzo , Susan Conry , Joseph L.A. Hughes , Liu Weidong , Lu Junlin , Andrew McGettrick , Victor Nelson , Eric Durant , Herman Lam , Robert Reese , and Lorraine Herger . 2016 . CE2016: Computer Engineering Curricula 2016. Technical Report. ACM &amp; IEEE. John Impagliazzo, Susan Conry, Joseph L.A. Hughes, Liu Weidong, Lu Junlin, Andrew McGettrick, Victor Nelson, Eric Durant, Herman Lam, Robert Reese, and Lorraine Herger. 2016. CE2016: Computer Engineering Curricula 2016. Technical Report. ACM &amp; IEEE."},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2538862.2538899"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/2610384.2628052"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.522"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2072598.2072607"},{"key":"e_1_2_2_23_1","volume-title":"Gloss: Painless 2D vector graphics, animations and simulations","author":"Lippmeier Ben","year":"2010","unstructured":"Ben Lippmeier . 2010 . Gloss: Painless 2D vector graphics, animations and simulations . http:\/\/gloss.ouroborus.net . (2010). Accessed: 2017-02-18. Ben Lippmeier. 2010. Gloss: Painless 2D vector graphics, animations and simulations. http:\/\/gloss.ouroborus.net . (2010). Accessed: 2017-02-18."},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796803004891"},{"key":"e_1_2_2_25_1","volume-title":"Trends in Functional Programming - 11th International Symposium, TFP","author":"Moraz\u00e1n Marco T.","year":"2010","unstructured":"Marco T. Moraz\u00e1n . 2010. Functional Video Games in the CS1 Classroom . In Trends in Functional Programming - 11th International Symposium, TFP 2010 , Norman, OK , USA, May 17-19, 2010. Revised Selected Papers (LNCS), Vol. 6546 . Springer , 166\u2013183. Marco T. Moraz\u00e1n. 2010. Functional Video Games in the CS1 Classroom. In Trends in Functional Programming - 11th International Symposium, TFP 2010, Norman, OK, USA, May 17-19, 2010. Revised Selected Papers (LNCS), Vol. 6546. Springer, 166\u2013183."},{"key":"e_1_2_2_26_1","doi-asserted-by":"crossref","unstructured":"Nachiappan Nagappan Laurie A. Williams Miriam Ferzli Eric Wiebe Kai Yang Carol Miller and Suzanne Balik. 2003. Improving the CS1 experience with pair programming. (2003) 359\u2013362.  Nachiappan Nagappan Laurie A. Williams Miriam Ferzli Eric Wiebe Kai Yang Carol Miller and Suzanne Balik. 2003. Improving the CS1 experience with pair programming. (2003) 359\u2013362.","DOI":"10.1145\/792548.612006"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/2899415.2899455"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1345375.1345441"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1227310.1227386"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2951913.2951927"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/1352135.1352241"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/2364506.2364524"},{"key":"e_1_2_2_33_1","volume-title":"Understanding beginners","author":"Tirronen Ville","year":"2015","unstructured":"Ville Tirronen , Samuel Uusi-M\u00e4kel\u00e4 , and Ville Isom\u00f6tt\u00f6nen . 2015. Understanding beginners \u2019 mistakes with Haskell. J. Funct. Program . 25 ( 2015 ). Ville Tirronen, Samuel Uusi-M\u00e4kel\u00e4, and Ville Isom\u00f6tt\u00f6nen. 2015. Understanding beginners\u2019 mistakes with Haskell. J. Funct. Program. 25 (2015)."},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1953163.1953196"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2462476.2462501"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3236777","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3236777","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:41:28Z","timestamp":1750282888000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3236777"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,7,30]]},"references-count":35,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2018,7,30]]}},"alternative-id":["10.1145\/3236777"],"URL":"https:\/\/doi.org\/10.1145\/3236777","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,7,30]]},"assertion":[{"value":"2018-07-30","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}