Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

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

Published: 30 July 2018 Publication History

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.

Supplementary Material

WEBM File (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, FDPE@ICFP 2008, Victoria, BC, Canada, September 20 - 28, 2008. ACM, 61–72.
[2]
Alex Aiken. 1994. Moss: A System for Detecting Software Similarity. http://theory.stanford.edu/~aiken/moss/ . (1994). Accessed: 2018-03-14.
[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.
[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.
[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.
[6]
Joachim Breitner and Chris Smith. 2017. Lock-step simulation is child’s play (experience report). PACMPL 1, ICFP (2017), 3:1–3:15.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[23]
Ben Lippmeier. 2010. Gloss: Painless 2D vector graphics, animations and simulations. http://gloss.ouroborus.net . (2010). Accessed: 2017-02-18.
[24]
Christoph Lüth. 2003. Haskell in Space. J. Funct. Program. 13, 6 (2003), 1077–1085.
[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.
[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.
[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.
[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.
[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.
[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.
[31]
Kelvin Sung, Michael Panitz, Scott A. Wallace, Ruth Anderson, and John Nordlinger. 2008. Game-themed programming assignments: the faculty perspective. (2008), 300–304.
[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.
[33]
Ville Tirronen, Samuel Uusi-Mäkelä, and Ville Isomöttönen. 2015. Understanding beginners’ mistakes with Haskell. J. Funct. Program. 25 (2015).
[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.
[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.

Cited By

View all
  • (2024)Automated Grading and Feedback Tools for Programming Education: A Systematic ReviewACM Transactions on Computing Education10.1145/363651524:1(1-43)Online publication date: 19-Feb-2024
  • (2024)Zipper-based embedding of strategic attribute grammarsJournal of Systems and Software10.1016/j.jss.2024.111975211(111975)Online publication date: May-2024
  • (2023)Efficient Embedding of Strategic Attribute Grammars via MemoizationProceedings of the 2023 ACM SIGPLAN International Workshop on Partial Evaluation and Program Manipulation10.1145/3571786.3573019(41-54)Online publication date: 15-Jan-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages  Volume 2, Issue ICFP
September 2018
1133 pages
EISSN:2475-1421
DOI:10.1145/3243631
Issue’s Table of Contents
This work is licensed under a Creative Commons Attribution International 4.0 License.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 30 July 2018
Published in PACMPL Volume 2, Issue ICFP

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. automated assessment
  2. gamification
  3. programming education
  4. test-driven development

Qualifiers

  • Research-article

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)89
  • Downloads (Last 6 weeks)18
Reflects downloads up to 01 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Automated Grading and Feedback Tools for Programming Education: A Systematic ReviewACM Transactions on Computing Education10.1145/363651524:1(1-43)Online publication date: 19-Feb-2024
  • (2024)Zipper-based embedding of strategic attribute grammarsJournal of Systems and Software10.1016/j.jss.2024.111975211(111975)Online publication date: May-2024
  • (2023)Efficient Embedding of Strategic Attribute Grammars via MemoizationProceedings of the 2023 ACM SIGPLAN International Workshop on Partial Evaluation and Program Manipulation10.1145/3571786.3573019(41-54)Online publication date: 15-Jan-2023
  • (2023)What Exactly is a Laboratory in Computer Science?2023 IEEE Global Engineering Education Conference (EDUCON)10.1109/EDUCON54358.2023.10125259(1-9)Online publication date: 1-May-2023
  • (2023)Exploration of Online-offline Blended Teaching and Assessing in University Programming Courses2023 5th International Conference on Computer Science and Technologies in Education (CSTE)10.1109/CSTE59648.2023.00027(112-116)Online publication date: Apr-2023
  • (2022)Engaging, Large-Scale Functional Programming Education in Physical and Virtual SpaceElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.363.6363(93-113)Online publication date: 26-Jul-2022
  • (2022)Zipping Strategies and Attribute GrammarsFunctional and Logic Programming10.1007/978-3-030-99461-7_7(112-132)Online publication date: 3-May-2022
  • (2021)cardComposer: A Functional Programming Card GameProceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education V. 210.1145/3456565.3460029(635-636)Online publication date: 26-Jun-2021
  • (2020)ROSY: An elegant language to teach the pure reactive nature of robot programming2020 Fourth IEEE International Conference on Robotic Computing (IRC)10.1109/IRC.2020.00045(240-247)Online publication date: Nov-2020

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media