Hostname: page-component-76fb5796d-vvkck Total loading time: 0 Render date: 2024-04-25T10:06:39.341Z Has data issue: false hasContentIssue false

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

Published online by Cambridge University Press:  06 March 2018

MARCO T. MORAZÁN*
Affiliation:
Department of Computer Science, Seton Hall University, South Orange, NJ, USA (e-mail: morazanm@shu.edu)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

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.

Type
Educational Column
Copyright
Copyright © Cambridge University Press 2018 

References

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.Google Scholar
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.Google Scholar
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.Google Scholar
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.Google Scholar
Cooper, S., Dann, W. & Pausch, R. (2000) Alice: A 3-D tool for introductory programming concepts. J. Comput. Sci. Coll. 15 (5), 107116.Google Scholar
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.Google Scholar
Dann, W. P., Cooper, S. & Pausch, R. (2011) Learning to Program with Alice. 3rd ed. Upper Saddle River, NJ, USA: Prentice Hall.Google Scholar
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.Google Scholar
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/.Google Scholar
Felleisen, M., Findler, R., Flatt, M. & Krishnamurthi, S. (2001) How to Design Programs: An Introduction to Programming and Computing. Cambridge, MA, USA: MIT Press.Google Scholar
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.Google Scholar
Felleisen, M. & Krishnamurthi, S. (2009) Viewpoint: Why computer science doesn't matter. Commun. ACM 52 (7), 3740.Google Scholar
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/.Google Scholar
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.Google Scholar
Findler, R. B. (2008) CS 15100 Fall 2008 Project 3: ChatNoir. Dept. of Electr. Engr. and Comp. Sci., Northwestern University. Accessed February 15, 2018.Google Scholar
Friedman, D. P. & Wand, M. (2008) Essentials of Programming Languages. 3rd ed. MIT Press.Google Scholar
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.Google Scholar
Hennessy, J. L. & Patterson, D. A. (2011) Computer Architecture: A Quantitative Approach. 5th ed. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc.Google Scholar
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.Google Scholar
McHoes, A. & Flynn, I. M. (2013) Understanding Operating Systems. Cengage Learning.Google Scholar
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.Google Scholar
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.Google Scholar
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.Google Scholar
Morazán, M. T. (2015) Generative and accumulative recursion made fun for beginners. Comput. Lang. Syst. Struct. 44 (PB), 181197.Google Scholar
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.Google Scholar
Pulimood, S. M. & Wolz, U. (2008) Problem solving in community: A necessary shift in CS pedagogy. SIGCSE Bull. 40 (1), 210214.Google Scholar
Sanglard, F. (2012 June) Quake 3 Source Code Review: Network Model. Accessed February 15, 2018. Available at: http://fabiensanglard.net/quake3/network.php.Google Scholar
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.Google Scholar
Scott, M. L. (2000) Programming Language Pragmatics. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc.Google Scholar
Silberschatz, A., Galvin, P. B. & Gagne, G. (2010) Operating Systems Concepts With Java. 8th ed. John Wiley & Sons, Inc. Google Scholar
Stallings, W. (2016) Computer Organization and Architecture: Designing for Performance. 10th ed. Pearson Education Limited.Google Scholar
Sung, K. (2009) Computer games and traditional CS courses. Commun. ACM 52 (12), 7478.Google Scholar
Tanenbaum, A. S. & Bos, H. (2014) Modern Operating Systems. 4th ed. Upper Saddle River, NJ, USA: Prentice Hall.Google Scholar
Tucker, A. & Noonan, R. (2001) Programming Languages: Principles and Paradigms. 1st ed. McGraw-Hill Higher Education.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.