Skip to main content Accessibility help
×
Home

Emerging languages: An alternative approach to teaching programming languages

  • SAVERIO PERUGINI (a1)

Abstract

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.

Copyright

References

Hide All
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.
Alesandrini, K. & Larson, L. (2002) Teachers bridge to constructivism. Clearing House 75(3), 119121.
Arnold, Z. L. & Perugini, S. (To appear) An introduction to concatenative programming in Factor. J. Comput. Sci. Coll. 35.
Budd, T. (1993) A brief introduction to Smalltalk. ACM SIGPLAN Not. 28(3), 367368.
Budd, T. (1995) Multiparadigm Programming in Leda. Boston, MA, USA: Addison-Wesley.
Butcher, P. (2014) Seven Concurrency Models in Seven Weeks: When Threads Unravel. Dallas, TX: Pragmatic Bookshelf.
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
CRLT. (2016) Teaching strategies: Large classes and lectures. Accessed June 19, 2019 http://www.crlt.umich.edu/tstrategies/tsllc
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.
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.
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.
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.
Friedman, D. P., Wand, M. & Haynes, C. T. (2001) Essentials of Programming Languages. 2nd ed. Cambridge, MA, USA: MIT.
Graham, P. (2004). Revenge of the Nerds. Beijing: O’Reilly. Accessed June 19, 2019. Available at: http://www.paulgraham.com/icad.html
Guzdial, M. & Landau, S. (2018) Programming programming languages, and analyzing facebook’s failure. Commun. ACM 61(6), 89.
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.
Krishnamurthi, S. (2008) Teaching programming languages in a post-Linnaean age. ACM SIGPLAN Not . 43(11), 8183.
Krishnamurthi, S. (2012). Programming languages: Application and interpretation. Accessed June 19, 2019. Available at: https://cs.brown.edu/~sk/Publications/Books/ProgLangs
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.
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
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.
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.
Louden, K. C. (2002) Programming Languages: Principles and Practice, 2nd ed. Pacific Grove, CA, USA: Brooks/Cole.
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.
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.
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.
Papert, S. (1980) Mindstorms: Children, Computers, and Powerful Ideas. New York, NY, USA: Basic Book, Inc.
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.
Perugini, S. (2018a) The design of an emerging/multi-paradigm programming languages course. J. Comput. Sci. Coll. 34(1), 5262.
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.
Perugini, S. & Watkin, J. L. (2018) ChAmElEoN: A customizable language for teaching programming languages. J. Comput. Sci. Coll. 34(1), 4453.
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.
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.
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.
Queinnec, C. (2003). LISP in Small Pieces. Cambridge, UK: Cambridge University.
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.
Savage, N. (2018) Using functions for easier programming. Commun. ACM 61(5), 2930.
Scott, M. L. (2009) Programming Language Pragmatics. 3rd ed. Amsterdam: Morgan Kaufmann.
Sebesta, R. W. (2015) Concepts of Programming Languages. 11 ed. Boston, MA, USA: Addison Wesley.
Tate, B. A. (2010) Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages. Dallas, TX, USA: Pragmatic Bookshelf.
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.
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.
Wexelblat, R. L. (ed) (1993). ACM SIGPLAN Not., vol. 28. New York, NY, USA: ACM.

Emerging languages: An alternative approach to teaching programming languages

  • SAVERIO PERUGINI (a1)

Metrics

Altmetric attention score

Full text views

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

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed

Emerging languages: An alternative approach to teaching programming languages

  • SAVERIO PERUGINI (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? *