Nothing Special   »   [go: up one dir, main page]

Teaching how to program using automated assessment and functional glossy games (experience report)

https://doi.org/10.1145/3236777 · Full text

Journal: Proceedings of the ACM on Programming Languages, 2018, № ICFP, p. 1-17

Publisher: Association for Computing Machinery (ACM)

Authors: José Bacelar Almeida, Alcino Cunha, Nuno Macedo, Hugo Pacheco, José Proença

Funder Fundação para a Ciência e a Tecnologia

Abstract

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. 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 game programming to keep students motivated, and following a methodology that hinges on test-driven development and continuous bidirectional feedback . We summarise successes and missteps, and how we have learned from our experience to arrive at a model for comprehensive and interactive functional game programming assignments and a general functionally-powered automated assessment platform , 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.

List of references

  1. 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.
  2. 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–504. 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–504.
  3. 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–304. 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–304.
  4. 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 & 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 & ACM.
  5. 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–265. 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–265.
  6. 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–89. 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–89.
  7. 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.
  8. 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 & 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 & IEEE.
  9. 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.
  10. Marco T. Morazán . 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–183. Marco T. Morazán. 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–183.
  11. 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–362. 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–362.
    https://doi.org/10.1145/792548.612006
  12. Ville Tirronen , Samuel Uusi-Mäkelä , and Ville Isomöttönen . 2015. Understanding beginners ’ mistakes with Haskell. J. Funct. Program . 25 ( 2015 ). Ville Tirronen, Samuel Uusi-Mäkelä, and Ville Isomöttönen. 2015. Understanding beginners’ mistakes with Haskell. J. Funct. Program. 25 (2015).

Publications that cite this publication

Zipping Strategies and Attribute Grammars

José Nuno Macedo, Marcos Viera, João Saraiva

https://doi.org/10.1007/978-3-030-99461-7_7 ·

2022, Functional and Logic Programming Lecture Notes in Computer Science, p. 112-132

Scopus

Zipper-based embedding of strategic attribute grammars

José Nuno Macedo, Emanuel Rodrigues, Marcos Viera, João Saraiva

https://doi.org/10.1016/j.jss.2024.111975 ·

2024, Journal of Systems and Software, p. 111975

Scopus
WoS

Engaging, Large-Scale Functional Programming Education in Physical and Virtual Space

Kevin Kappelmann, Jonas Rädle, Lukas Stevens

https://doi.org/10.4204/eptcs.363.6 ·

2022, Electronic Proceedings in Theoretical Computer Science, p. 93-113

Scopus
Find all citations of the publication
About this publication
Publication type Журнальна стаття
Number of citations 5
Number of works in the list of references 12
Journal indexed in Scopus Yes
Journal indexed in Web of Science Yes

Пошук