Skip to main content
×
×
Home

Infusing an HtDP-based CS1 with distributed programming using functional video games

  • MARCO T. MORAZÁN (a1)
Abstract

A Computer Science introduction course ought to focus on exciting students about the subject matter and on problem solving through the methodical design of programs. An effective way to achieve both is through the development of functional video games. As most students are interested in video games, their development adds an exciting domain to any introduction to programming. This article advocates that an exciting crowning achievement for students in such a course is the design and implementation of a multiplayer distributed video game. By exploiting a domain that is popular with students, they are taught about design principles, communication protocols, and pitfalls in distributed programming. This article puts forth a successfully used design recipe that places distributed programming well within the reach of beginning students and outlines the use of this design recipe in the classroom. For those teaching beginners, this article presents a model for developing their own distributed programming module. The success of the presented methodology is measured through student feedback on their distributed programming experience. The empirical results suggest that the design and implementation of distributed functional video games is effective and well-received by students. Furthermore, the data suggests that the presented methodology fails to exhibit the gender gap common in Computer Science and is effective regardless of the programming experience CS1 students bring to the classroom.

Copyright
References
Hide All
Achten, P. (2008) Teaching functional programming with soccer-fun. In Proceedings of the 2008 International Workshop on Functional and Declarative Programming in Education. FDPE '08. New York, NY, USA: ACM, pp. 61–72.
Adams, J. C., Brown, R. A. & Shoop, E. (2013) Patterns and exemplars: Compelling strategies for teaching parallel and distributed computing to CS undergraduates. In Proceeding of the 2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum, Cambridge, MA, USA, May 20–24, pp. 1244–1251.
Bice, F., DeMaio, R., Florence, S., Lin, F.-Y. M., Lindeman, S., Nussbaum, N., Peterson, E., Plessner, R., Horn, D. V., Felleisen, M. & Barski, C. (2013) In Proceeding of the Realm of Racket. No Starch Press.
Bolkan, S., Goodboy, A. K. & Griffin, D. J. (2011) Teacher leadership and intellectual stimulation: Improving students' approaches to studying through intrinsic motivation. Commun. Res. Rep. 28 (4), 337346.
Cooper, S., Dann, W. & Pausch, R. (2000) Alice: A 3-D tool for introductory programming concepts. J. Comput. Sci. Coll. 15 (5), 107116.
Courtney, A., Nilsson, H. & Peterson, J. (2003) The yampa arcade. In Proceedings of the 2003 ACM SIGPLAN Workshop on Haskell. Haskell '03. New York, NY, USA: ACM, pp. 7–18.
Dann, W. P., Cooper, S. & Pausch, R. (2011) Learning to Program with Alice. 3rd ed. Upper Saddle River, NJ, USA: Prentice Hall.
Danner, A. & Newhall, T. (2013) Integrating parallel and distributed computing topics into an undergraduate CS curriculum. In Proceedings of IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum, Cambridge, MA, USA, May 20–24, pp. 1237–1243.
Felleisen, M., Findler, R., Fisler, K., Flatt, M. & Krishnamurthi, S. (2008) How to Design Worlds. Accessed February 15, 2018. Available at: http://world.cs.brown.edu/1/.
Felleisen, M., Findler, R., Flatt, M. & Krishnamurthi, S. (2001) How to Design Programs: An Introduction to Programming and Computing. Cambridge, MA, USA: MIT Press.
Felleisen, M., Findler, R., Flatt, M. & Krishnamurthi, S. (2009) A functional I/O system or, fun for Freshman kids. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming, pp. 47–58.
Felleisen, M. & Krishnamurthi, S. (2009) Viewpoint: Why computer science doesn't matter. Commun. ACM 52 (7), 3740.
Felleisen, M., Findler, R. B., Flatt, M. & Krishnamurthi, S. (2015) (August) How to Design Programs. Accessed February 15, 2018. Available at: http://www.ccs.neu.edu/home/matthias/HtDP2e/.
Findler, R., Clements, J., Flanagan, C., Flatt, M., Krishnamurthi, S., Steckler, P. & Felleisen, M. (2002) DrScheme: A programming environment for scheme. J. Funct. Program. 12 (2), 159182.
Findler, R. B. (2008) CS 15100 Fall 2008 Project 3: ChatNoir. Dept. of Electr. Engr. and Comp. Sci., Northwestern University. Accessed February 15, 2018.
Friedman, D. P. & Wand, M. (2008) Essentials of Programming Languages. 3rd ed. MIT Press.
Gestwicki, P. V. (2007) Computer games as motivation for design patterns. In Proceedings of the 38th SIGCSE Technical Symposium on Computer Science Education. SIGCSE '07. New York, NY, USA: ACM, pp. 233–237.
Hennessy, J. L. & Patterson, D. A. (2011) Computer Architecture: A Quantitative Approach. 5th ed. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc.
Joint Task Force on Computing Curricula, Association for Computing Machinery (ACM) & IEEE Computer Society. (2013) Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science. New York, NY, USA: ACM. 999133.
McHoes, A. & Flynn, I. M. (2013) Understanding Operating Systems. Cengage Learning.
Morazán, M. T. (2011) 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, Page, R., Horváth, Z. & Zsók, V. (eds), Lecture Notes in Computer Science. Berlin, Heidelberg: Springer, pp. 166183.
Morazán, M. T. (2012) Functional video games in CS1 II. In Trends in Functional Programming: 12th International Symposium, TFP 2011, Madrid, Spain, May 16-18, 2011, Revised Selected Papers, Peña, R. & Page, R. (eds), Lecture Notes in Computer Science, vol. 7193. Berlin, Heidelberg: Springer, pp. 146–162.
Morazán, M. T. (2014) Functional video games in CS1 III. In Trends in Functional Programming: 14th International Symposium, TFP 2013, Provo, UT, USA, May 14–16, 2013, Revised Selected Papers, McCarthy, J. (ed), Lecture Notes in Computer Science, vol. 8322. Berlin, Heidelberg: Springer, pp. 149–167.
Morazán, M. T. (2015) Generative and accumulative recursion made fun for beginners. Comput. Lang. Syst. Struct. 44 (PB), 181197.
Prasad, S. K., Chtchelkanova, A., Dehne, F., Gouda, M., Gupta, A., Jaja, J., Kant, K., Salle, A. L., LeBlanc, R., Lumsdaine, M., Padua, D., Parashar, M., Prasanna, V., Robert, Y., Rosenberg, A., Sahni, S., Shirazi, B., Sussman, A., Weems, C. & Wu, J. (2012) NSF/IEEE-TCPP Curriculum Initiative on Parallel and Distributed Computing-Core Topics for Undergraduates. Tech. rept. Center for Parallel and Distributed Computing Curriculum Development and Educational Resources.
Pulimood, S. M. & Wolz, U. (2008) Problem solving in community: A necessary shift in CS pedagogy. SIGCSE Bull. 40 (1), 210214.
Sanglard, F. (2012 June) Quake 3 Source Code Review: Network Model. Accessed February 15, 2018. Available at: http://fabiensanglard.net/quake3/network.php.
Schanzer, E. & Fisler, K. (2015) Teaching algebra and computing through bootstrap and program by design. In Proceedings of the 46th ACM Technical Symposium on Computer Science Education. SIGCSE '15. New York, NY, USA: ACM, pp. 695–695.
Scott, M. L. (2000) Programming Language Pragmatics. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc.
Silberschatz, A., Galvin, P. B. & Gagne, G. (2010) Operating Systems Concepts With Java. 8th ed. John Wiley & Sons, Inc.
Stallings, W. (2016) Computer Organization and Architecture: Designing for Performance. 10th ed. Pearson Education Limited.
Sung, K. (2009) Computer games and traditional CS courses. Commun. ACM 52 (12), 7478.
Tanenbaum, A. S. & Bos, H. (2014) Modern Operating Systems. 4th ed. Upper Saddle River, NJ, USA: Prentice Hall.
Tucker, A. & Noonan, R. (2001) Programming Languages: Principles and Paradigms. 1st ed. McGraw-Hill Higher Education.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *
×

Metrics

Full text views

Total number of HTML views: 0
Total number of PDF views: 36 *
Loading metrics...

Abstract views

Total abstract views: 255 *
Loading metrics...

* Views captured on Cambridge Core between 6th March 2018 - 22nd August 2018. This data will be updated every 24 hours.

Infusing an HtDP-based CS1 with distributed programming using functional video games

  • MARCO T. MORAZÁN (a1)
Submit a response

Discussions

No Discussions have been published for this article.

×

Reply to: Submit a response


Your details


Conflicting interests

Do you have any conflicting interests? *