Emerging languages: An alternative approach to teaching programming languages

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.

[1]  Robert McCartney,et al.  Why Computing Students Learn on Their Own , 2016, ACM Trans. Comput. Educ..

[2]  Peter-Michael Osera,et al.  Uncommon Teaching Languages , 2016, SIGCSE.

[3]  Patricia Adams,et al.  Programming Languages: Principles and Practice , 1993 .

[4]  Judith Bishop,et al.  Approaches to teaching the programming languages course: a potpourri , 2006, ITICSE '06.

[5]  Steve Zacharias,et al.  Revenge of the Nerds , 2015 .

[6]  Bruce Tate Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages , 2010 .

[7]  Joakim Billstrand,et al.  Revenge of the Nerds , 2016 .

[8]  Jack Moffitt,et al.  Seven More Languages in Seven Weeks: Languages That Are Shaping the Future , 2014 .

[9]  Saverio Perugini The Design of an Emerging/Multi-Paradigm Programming Languages Course , 2018 .

[10]  Tim Budd A brief introduction to Smalltalk , 1993, HOPL-II.

[11]  Neil Savage Using functions for easier programming , 2018, Commun. ACM.

[12]  Kent D. Lee A Framework for Teaching Programming Languages , 2015, SIGCSE.

[13]  Kathi Fisler,et al.  Teaching Programming Languages by Experimental and Adversarial Thinking , 2017, SNAPL.

[14]  Robert W. Sebesta,et al.  Concepts of programming languages , 1973 .

[15]  Seymour Papert,et al.  Mindstorms: Children, Computers, and Powerful Ideas , 1981 .

[16]  Shriram Krishnamurthi,et al.  Programming languages - application and interpretation , 2003 .

[17]  K. Alesandrini,et al.  Teachers Bridge to Constructivism , 2002 .

[18]  Martin Odersky,et al.  Functional programming for all! scaling a MOOC for students and professionals alike , 2014, ICSE Companion.

[19]  Saverio Perugini,et al.  An Application of the Actor Model of Concurrency in Python: A Euclidean Rhythm Music Sequencer , 2018 .

[20]  Sam Tobin-Hochstadt,et al.  A programmable programming language , 2018, Commun. ACM.

[21]  Paul Butcher Seven Concurrency Models in Seven Weeks: When Threads Unravel , 2014 .

[22]  Christian Queinnec Lisp in small pieces , 1994 .

[23]  Sanjay Ghemawat,et al.  MapReduce: Simplified Data Processing on Large Clusters , 2004, OSDI.

[24]  Amruth N. Kumar Projects in the programming languages course , 2005, ITiCSE '05.

[25]  Michelle K. Smith,et al.  Active learning increases student performance in science, engineering, and mathematics , 2014, Proceedings of the National Academy of Sciences.

[26]  Timothy A. Budd,et al.  Multiparadigm programming in Leda , 1994 .

[27]  Michael L. Scott,et al.  Programming Language Pragmatics , 1999 .

[28]  Sally Fincher,et al.  Computer Science Curricula 2013 , 2013 .

[29]  Saverio Perugini,et al.  ChAmElEoN: A Customizable Language for Teaching Programming Languages , 2018 .

[30]  Judithe Sheard,et al.  Contributing student pedagogy , 2012, Comput. Sci. Educ..

[31]  Mark Guzdial,et al.  Programming programming languages, and analyzing Facebook's failure , 2018, Commun. ACM.

[32]  P. Pintrich A Motivational Science Perspective on the Role of Student Motivation in Learning and Teaching Contexts. , 2003 .

[33]  Mitchell Wand,et al.  Essentials of programming languages , 2008 .

[34]  Cristina V. Lopes,et al.  The Future of Programming Languages and Programmers , 2015, SPLASH.

[35]  Shriram Krishnamurthi Teaching programming languages in a post-linnaean age , 2008, SIGP.