skip to main content
research-article
Open Access

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

Authors Info & Claims
Published:30 July 2018Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

a82-pacheco.webm

References

  1. Peter Achten. 2008. Teaching functional programming with soccer-fun. In Proceedings of the 2008 international workshop on Functional and declarative programming in education, [email protected] 2008, Victoria, BC, Canada, September 20 - 28, 2008. ACM, 61–72. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Alex Aiken. 1994. Moss: A System for Detecting Software Similarity. http://theory.stanford.edu/~aiken/moss/ . (1994). Accessed: 2018-03-14.Google ScholarGoogle Scholar
  3. Tiffany Barnes, Eve Powell, Amanda Chaffin, and Heather Richter Lipford. 2008. Game2Learn: improving the motivation of CS1 students. In Proceedings of the 3rd International Conference on Game Development in Computer Science Education, GDCSE 2008, Miami, FL, USA, February 28 - March 3, 2008. ACM, 1–5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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.Google ScholarGoogle Scholar
  5. 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.Google ScholarGoogle Scholar
  6. Joachim Breitner and Chris Smith. 2017. Lock-step simulation is child’s play (experience report). PACMPL 1, ICFP (2017), 3:1–3:15. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Manuel M. T. Chakravarty and Gabriele Keller. 2004. The risks and benefits of teaching purely functional programming in first year. J. Funct. Program. 14, 1 (2004), 113–123. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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.Google ScholarGoogle Scholar
  9. 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.Google ScholarGoogle Scholar
  10. Antony Courtney, Henrik Nilsson, and John Peterson. 2003. The Yampa arcade. In Proceedings of the ACM SIGPLAN Workshop on Haskell, Haskell 2003, Uppsala, Sweden, August 28, 2003. ACM, 7–18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Marcus Crestani and Michael Sperber. 2010. Experience report: growing programming languages for beginning students. In Proceeding of the 15th ACM SIGPLAN international conference on Functional programming, ICFP 2010, Baltimore, Maryland, USA, September 27-29, 2010. ACM, 229–234. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Stephen H. Edwards. 2003a. Improving student performance by evaluating how well students test their own programs. ACM Journal of Educational Resources in Computing 3, 3 (2003), 1:1–1:24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Stephen H. Edwards. 2003b. Rethinking computer science education from a test-first perspective. In Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2003, October 26-30, 2003, Anaheim, CA, USA. ACM, 148–155. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. 2009. A functional I/O system or, fun for freshman kids. In Proceeding of the 14th ACM SIGPLAN international conference on Functional programming, ICFP 2009, Edinburgh, Scotland, UK, August 31 - September 2, 2009. ACM, 47–58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. HaskellWiki. 2018. Haskell as a First Language. https://wiki.haskell.org/Haskell_in_education#Haskell_as_a_first_language . (2018). Accessed: 2018-03-12.Google ScholarGoogle Scholar
  17. Petri Ihantola, Tuukka Ahoniemi, Ville Karavirta, and Otto Seppälä. 2010. Review of recent systems for automatic assessment of programming assignments. In 10th Koli Calling International Conference on Computing Education Research, Koli Calling ’10, Koli, Finland, October 28-31, 2010. ACM, 86–93. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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.Google ScholarGoogle Scholar
  19. Alexandru Iosup and Dick H. J. Epema. 2014. An experience report on using gamification in technical higher education. In The 45th ACM Technical Symposium on Computer Science Education, SIGCSE ’14, Atlanta, GA, USA - March 05 - 08, 2014. ACM, 27–32. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Duc Le, Mohammad Amin Alipour, Rahul Gopinath, and Alex Groce. 2014. MuCheck: an extensible tool for mutation testing of haskell programs. In International Symposium on Software Testing and Analysis, ISSTA ’14, San Jose, CA, USA - July 21 -26, 2014. ACM, 429–432. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. José Paulo Leal and Fernando M. A. Silva. 2003. Mooshak: a Web-based multi-site programming contest system. Softw., Pract. Exper. 33, 6 (2003), 567–581. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Frederick W. B. Li and Christopher Watson. 2011. Game-based concept visualization for learning programming. In Proceedings of the 3rd international ACM workshop on Multimedia technologies for distance learning. ACM, 37–42. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Ben Lippmeier. 2010. Gloss: Painless 2D vector graphics, animations and simulations. http://gloss.ouroborus.net . (2010). Accessed: 2017-02-18.Google ScholarGoogle Scholar
  24. Christoph Lüth. 2003. Haskell in Space. J. Funct. Program. 13, 6 (2003), 1077–1085.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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.Google ScholarGoogle Scholar
  26. 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.Google ScholarGoogle Scholar
  27. Ilias O. Pappas, Michail N. Giannakos, and Letizia Jaccheri. 2016. Investigating Factors Influencing Students’ Intention to Dropout Computer Science Studies. In Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education, ITiCSE 2016, Arequipa, Peru, July 9-13, 2016. ACM, 198–203. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Arnold Pears, Stephen Seidman, Lauri Malmi, Linda Mannila, Elizabeth S. Adams, Jens Bennedsen, Marie Devlin, and James Paterson. 2007. A survey of literature on the teaching of introductory programming. SIGCSE Bulletin 39, 4 (2007), 204–223. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Kris Powers, Stacey Ecott, and Leanne M. Hirshfield. 2007. Through the looking glass: teaching CS0 with Alice. In Proceedings of the 38th SIGCSE Technical Symposium on Computer Science Education, SIGCSE 2007, Covington, Kentucky, USA, March 7-11, 2007. ACM, 213–217. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Ilya Sergey. 2016. Experience report: growing and shrinking polygons for random testing of computational geometry algorithms. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming, ICFP 2016, Nara, Japan, September 18-22, 2016. ACM, 193–199. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Kelvin Sung, Michael Panitz, Scott A. Wallace, Ruth Anderson, and John Nordlinger. 2008. Game-themed programming assignments: the faculty perspective. (2008), 300–304. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. David Terei, Simon Marlow, Simon L. Peyton Jones, and David Mazières. 2012. Safe Haskell. In Proceedings of the 5th ACM SIGPLAN Symposium on Haskell, Haskell 2012, Copenhagen, Denmark, 13 September 2012. ACM, 137–148. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Ville Tirronen, Samuel Uusi-Mäkelä, and Ville Isomöttönen. 2015. Understanding beginners’ mistakes with Haskell. J. Funct. Program. 25 (2015).Google ScholarGoogle Scholar
  34. Arto Vihavainen, Matti Paksula, and Matti Luukkainen. 2011. Extreme apprenticeship method in teaching programming for beginners. In Proceedings of the 42nd ACM technical symposium on Computer science education, SIGCSE 2011, Dallas, TX, USA, March 9-12, 2011. ACM, 93–98. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Arto Vihavainen, Thomas Vikberg, Matti Luukkainen, and Martin Pärtel. 2013. Scaffolding students’ learning using test my code. In Innovation and Technology in Computer Science Education conference 2013, ITiCSE ’13, Canterbury, United Kingdom - July 01 - 03, 2013. ACM, 117–122. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

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

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!