Hostname: page-component-78c5997874-xbtfd Total loading time: 0 Render date: 2024-11-11T14:23:44.773Z Has data issue: false hasContentIssue false

Emerging languages: An alternative approach to teaching programming languages

Published online by Cambridge University Press:  26 September 2019

SAVERIO PERUGINI*
Affiliation:
University of Dayton, 45469–2160USA (e-mail: saverio@udayton.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.

We challenge the idea that a course intended to convey principles of languages should be structured according to those principles, and present an alternate approach to teaching a programming language course. The approach involves teaching emerging programming languages. This approach results in a variety of course desiderata including scope for instructor customization; alignment with current trends in language evolution, practice, and research; and congruence with industrial needs. We discuss the rationale for, the course mechanics supporting, and the consequences of this approach.

Type
Educational Column
Copyright
© Cambridge University Press 2019 

References

Adams, E., Baldwin, D., Bishop, J., English, J., Lawhead, P., & Stevenson, D. (2006). Approaches to teaching the programming languages course: A potpourri. In Proceedings of the 11th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (ITiCSE). New York, NY: ACM, pp. 299300.CrossRefGoogle Scholar
Alesandrini, K. & Larson, L. (2002) Teachers bridge to constructivism. Clearing House 75(3), 119121.CrossRefGoogle Scholar
Arnold, Z. L. & Perugini, S. (To appear) An introduction to concatenative programming in Factor. J. Comput. Sci. Coll. 35.Google Scholar
Budd, T. (1993) A brief introduction to Smalltalk. ACM SIGPLAN Not. 28(3), 367368.CrossRefGoogle Scholar
Budd, T. (1995) Multiparadigm Programming in Leda. Boston, MA, USA: Addison-Wesley.Google Scholar
Butcher, P. (2014) Seven Concurrency Models in Seven Weeks: When Threads Unravel. Dallas, TX: Pragmatic Bookshelf.Google Scholar
Cass, S. (2018) The 2018 top programming languages. IEEE Spectrum. Accessed June 19, 2019. Available at: https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages Google Scholar
CRLT. (2016) Teaching strategies: Large classes and lectures. Accessed June 19, 2019 http://www.crlt.umich.edu/tstrategies/tsllc Google Scholar
Dean, J. & Ghemawat, S. (2004). MapReduce: Simplified data processing on large clusters. Proceedings of the 6th Conference on Symposium on Operating Systems Design and Implementation (OSDI), vol. 6. Berkeley, CA, USA: USENIX Association.Google Scholar
Felleisen, M., Findler, R. B., Flatt, M., Krishnamurthi, S., Barzilay, E., McCarthy, J. & Tobin-Hochstadt, S. (2018). A programmable programming language. Commun. ACM 61(3), 6271.CrossRefGoogle Scholar
Fraser, S. D., Bak, L., DeLine, R., Feamster, N., Kuper, L., Lopes, C.V. & Wu, P. (2015) The future of programming languages and programmers. In Companion Proceedings of the 2015 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity (SPLASH). New York, NY, USA: ACM, pp. 6366.CrossRefGoogle Scholar
Freeman, S., Eddy, S. L., McDonough, M., Smith, M. K., Okoroafor, N., Jordt, H. & Wenderoth, M. P. (2014) Active learning increases student performance in science, engineering, and mathematics. Proc. Nat. Acad. Sci. USA 111(23), 84108415.CrossRefGoogle ScholarPubMed
Friedman, D. P., Wand, M. & Haynes, C. T. (2001) Essentials of Programming Languages. 2nd ed. Cambridge, MA, USA: MIT.Google Scholar
Graham, P. (2004). Revenge of the Nerds. Beijing: O’Reilly. Accessed June 19, 2019. Available at: http://www.paulgraham.com/icad.html Google Scholar
Guzdial, M. & Landau, S. (2018) Programming programming languages, and analyzing facebook’s failure. Commun. ACM 61(6), 89.CrossRefGoogle Scholar
Hamer, J., Cutts, Q., Jackova, J., Luxton-Reilly, A., McCartney, R., Purchase, H., Riedesel, C., Saeli, M., Sanders, K. & Sheard, J. (2008) Contributing student pedagogy. SIGCSE Bull . 40(4), 194212.CrossRefGoogle Scholar
Krishnamurthi, S. (2008) Teaching programming languages in a post-Linnaean age. ACM SIGPLAN Not . 43(11), 8183.CrossRefGoogle Scholar
Krishnamurthi, S. (2012). Programming languages: Application and interpretation. Accessed June 19, 2019. Available at: https://cs.brown.edu/~sk/Publications/Books/ProgLangs Google Scholar
Kumar, A. N. (2005). Projects in the programming languages course. In Proceedings of the 10th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (ITiCSE). New York, NY, USA: ACM, p. 395.CrossRefGoogle Scholar
Kumar, V. (2019) 9 new programming languages to learn in 2019. Accessed June 19, 2019. Available at: https://www.rankred.com/new-programming-languages-to-learn Google Scholar
Lee, K. D. (2015) A framework for teaching programming languages. In Proceedings of the 46th ACM Technical Symposium on Computer Science Education (SIGCSE). New York, NY: ACM, pp. 162167.Google Scholar
Lewis, M. C., Blank, D., Bruce, K. & Osera, P.- M. (2016) Uncommon teaching languages. Proceedings of the 47th ACM Technical Symposium on Computer Science Education (SIGCSE). New York, NY: ACMs, pp. 492493.CrossRefGoogle Scholar
Louden, K. C. (2002) Programming Languages: Principles and Practice, 2nd ed. Pacific Grove, CA, USA: Brooks/Cole.Google Scholar
McCartney, R., Boustedt, J., Eckerdal, A., Sanders, K., Thomas, L., & Zander, C. (2016) Why computing students learn on their own: Motivation for self-directed learning of computing ACM Trans. Comput. Educ. 16(1), 2:12:18.CrossRefGoogle Scholar
Miller, H., Haller, P., Rytz, L. & Odersky, M. (2014) Functional programming for all! Scaling a MOOC for students and professionals alike. In Companion Proceedings of the 36th International Conference on Software Engineering (ICSE). New York, NY, USA: ACM, pp. 256263.Google Scholar
NCAT. (2014) How to redesign a college course using NCAT’s methodology. Accessed June 19, 2019. Available at: http://thencat.org/Guides/AllDisciplines/How%20to%20Redesign%20A%20College%20Course.pdf. Chap. VI: How to Create Small within Large.Google Scholar
Papert, S. (1980) Mindstorms: Children, Computers, and Powerful Ideas. New York, NY, USA: Basic Book, Inc. Google Scholar
Papert, S. (1987) Constructionism: A new opportunity for elementary science education. Accessed June 19, 2019.Available at: https://nsf.gov/awardsearch/showAward?AWD_ID=8751190. National Science Foundation Award Abstract #8751190.Google Scholar
Perugini, S. (2018a) The design of an emerging/multi-paradigm programming languages course. J. Comput. Sci. Coll. 34(1), 5262.Google Scholar
Perugini, S. (2018b) Programming languages: Concepts and implementation. Accessed June 19, 2019. Draft. 1,240 pages. Course notes developed in conjunction with and for this textbook. Available at: http://academic.udayton.edu/SaverioPerugini/PLCI.Google Scholar
Perugini, S. & Watkin, J. L. (2018) ChAmElEoN: A customizable language for teaching programming languages. J. Comput. Sci. Coll. 34(1), 4453.Google Scholar
Pintrich, P. R. (2003). A motivational science perspective on the role of student motivation in learning and teaching contexts. J. Educ. Psychol. 95(4), 667686.CrossRefGoogle Scholar
Pombrio, J., Krishnamurthi, S. & Fisler, K. (2017) Teaching programming languages by experimental and adversarial thinking. In Proceedings of the 2nd Summit on Advances in Programming Languages (SNAPL), Lerner, B.S., Bodík, R., & Krishnamurthi, S. (eds), Germany: Leibniz International Proceedings in Informatics Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl Publishing, pp. 13:113:9.Google Scholar
Prince, D. G. & Perugini, S. (2018). An application of the Actor model of concurrency in Python: Euclidean rhythm music sequencer. J. Comput. Sci. Coll. 34(1), 3546.Google Scholar
Queinnec, C. (2003). LISP in Small Pieces. Cambridge, UK: Cambridge University.Google Scholar
Ray, B., Posnett, D., Devanbu, P. & Filkov, V. (2017) A large-scale study of programming languages and code quality in GitHub. Commun. ACM 60(10), 91100.CrossRefGoogle Scholar
Savage, N. (2018) Using functions for easier programming. Commun. ACM 61(5), 2930.CrossRefGoogle Scholar
Scott, M. L. (2009) Programming Language Pragmatics. 3rd ed. Amsterdam: Morgan Kaufmann.Google Scholar
Sebesta, R. W. (2015) Concepts of Programming Languages. 11 ed. Boston, MA, USA: Addison Wesley.Google Scholar
Tate, B. A. (2010) Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages. Dallas, TX, USA: Pragmatic Bookshelf.Google Scholar
Tate, B. A., Daoud, F., Dees, I. & Moffit, J. (2014) Seven More Languages in Seven Weeks: Languages That are Shaping the Future. Dallas, TX, USA: Pragmatic Bookshelf.Google Scholar
The Joint Task Force on Computing Curricula: Association for Computing Machinery (ACM) and IEEE Computer Society. (December 20, 2013). Computer science curricula 2013: Curriculum guidelines for undergraduate degree programs in computer science. Tech. rept. Association for Computing Machinery (ACM) and IEEE Computer Society. Accessed June 19, 2019. Available at: https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf.Google Scholar
Wexelblat, R. L. (ed) (1993). ACM SIGPLAN Not., vol. 28. New York, NY, USA: ACM.Google Scholar

Perugini supplementary material

Perugini supplementary material

Download Perugini supplementary material(Video)
Video 23.8 MB
Submit a response

Discussions

No Discussions have been published for this article.