Skip to main content

The Old Question: Which Programming Language Should We Choose to Teach to Program?

  • Conference paper
  • First Online:
Advances in Digital Science (ICADS 2021)

Part of the book series: Advances in Intelligent Systems and Computing ((AISC,volume 1352))

Included in the following conference series:

Abstract

When students enter higher education in computer courses, students have, in the first semester, to perceive and streamline computer (or computational) thinking . The names for the unit are diverse, usually algorithm and programming, introduction to programming or even Programming I or algorithm. In research we call CS1, or computer science 1, since that designation was used in an important document with curriculum recommendations prepared by the Association for Computing Machinery (ACM) in 1978. Despite different names, it is intended with these units that students start in the world of programming. However, if the learning objectives do not differ much, the same cannot be said of the adapted programming language. There is not, nor is it likely to be, a consensus regarding the programming language used by the student's startup in the programming world. The various documents with curriculum recommendations for computer science from ACM and the Institute of Electrical and Electronic Engineers (IEEE) do not clearly define which programming language to adopt. Those responsible for the courses have to make this choice, consciously and not just following industry trends. The purpose of this article is to draw a picture of the adoption of the different programming languages that have been used over time, as well as to help in choosing the most accurate and conscious option possible.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 129.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. Austing, R.H., Barnes, B.H., Bonnette, D.T., Engel, G.L., Stokes, G.: Curriculum ’78: recommendations for the undergraduate program in computer science—a report of the ACM curriculum committee on computer science. Commun. ACM 22(3), 147–166 (1979)

    Article  Google Scholar 

  2. Sobral, S.R.: The first programming language and freshman year in computer science: characterization and tips for better decision making. In: WorldCist'20 - 8th World Conference on Information Systems and Technologies, Budva, Montenegro (2020)

    Google Scholar 

  3. Knuth, D.: The Art of Computer Programming. Addison-Wesley, Boston (1968)

    MATH  Google Scholar 

  4. Gries, D.: The Science of Programming, Springer, Heidelberg (1981)

    Google Scholar 

  5. Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Upper Saddle River (1976)

    Google Scholar 

  6. Aho, A., Ullman, J.D.: Foundations of Computer Science: C Edition (Principles of Computer Science Series). W. H. Freeman (1994)

    Google Scholar 

  7. McCracken, M., Almstrum, V., Diaz, D., Guzdial, M., Hagan, D., Kolikant, Y.B.-D., Laxer, C., Thomas, L., Utting, I., Wilusz, T.: A multi-national, multi-institutional study of assessment of programming skills of first-year CS students. In: ITiCSE on Innovation and Technology in Computer Science Education (2001)

    Google Scholar 

  8. Bergin, S., Reilly, R.: Programming: factors that Influence SuccessSusan. In: Proceedings of the 36th SIGCSE Technical Symposium on Computer Science Education (2005)

    Google Scholar 

  9. Becker, B.A., Fitzpatrick, T.: What do CS1 syllabi reveal about our expectations of introductory programming students? In: 50th ACM Technical Symposium on Computer Science Education (2019)

    Google Scholar 

  10. Luxton-Reilly, A.: Learning to program is easy. In: ACM Conference on Innovation and Technology in Computer Science Education (2016)

    Google Scholar 

  11. Dijkstra, E.W.: The Humble Programmer. Commun. ACM 15(10), 859–866 (1972)

    Google Scholar 

  12. Mitchell, J.C.: Concepts in Programming Languages. Cambridge University Press, Cambridge (2003)

    Google Scholar 

  13. Sprankle, M.: Problem Solving and Programming Concepts. 9 edn. Pearson, London (2011)

    Google Scholar 

  14. Pigott, D.: Online Historical Encyclopaedia of Programming Languages (1995–2020). https://hopl.info/

  15. Scott, M.L.: Programming Language Pragmatics. 3rd edn. Elsevier, Amsterdam (2009)

    Google Scholar 

  16. Stackoverflow.com, “Stackoverflow” (2020). https://insights.stackoverflow.com/survey/2020

  17. TIOBE Software BV, “TIOBE,” Set. (2019). https://www.tiobe.com/tiobe-index/

  18. Smith, C., Rickman, J.: Selecting languages for pedagogical tools in the computer science curriculum. In: Proceedings of the Sixth SIGCSE Technical Symposium on Computer Science Education (1976)

    Google Scholar 

  19. Wexelblat, R.L.: First programming language: consequences (Panel, in Discussion) (1979)

    Google Scholar 

  20. Tharp, A.L.: Selecting the “right” programming language. In: SIGCSE 1982 Technical Symposium on Computer Science Education, Indianapolis, Indiana, USA (1982)

    Google Scholar 

  21. Duke, R., Salzman, E., Burmeister, J., Poon, J., Murray, L.: Teaching programming to beginners - choosing the language is just the first step. In: ACSE 2000 Proceedings of the Australasian Conference on Computing Education (2000)

    Google Scholar 

  22. Mannila, L., Raadt, M.D.: An objective comparison of languages for teaching introductory programming. In: 6th Baltic Sea Conference on Computing Education Research: Koli Calling 2006 (2006)

    Google Scholar 

  23. Atchison, W.F., Conte, S.D., Hamblen, J.W., Hull, T.E., Keenan, T.A., Kehl, W.B., McCluskey, E.J., Navarro, S.O., Rheinboldt, W.C., Schweppe, E.J., Viavant, W., Young Jr., D.M.: Curriculum 68: recommendations for academic programs in computer science: a report of the ACM curriculum committee on computer science. Commun. ACM 11(3), 151–197 (1968)

    Google Scholar 

  24. Koffman, E.B., Miller, P.L., Wardle, C.E.: Recommended curriculum for CS1, 1984. Commun. ACM 27(10), 998–1001 (1984)

    Google Scholar 

  25. Tucker, A.B., ACM/IEEE-CS Joint Curriculum Task Force: Computing Curricula 1991: Report of the ACM/IEEE-CS Joint Curriculum Task Force, p. 154. ACM Press (1990)

    Google Scholar 

  26. The Joint Task Force IEEE and ACM: CC2001 Computer Science, Final Report (2001)

    Google Scholar 

  27. Cassel, L., Clements, A., Davies, G., Guzdial, M., McCauley, R.: Computer Science Curriculum 2008: An Interim Revision of CS 2001. ACM (2008)

    Google Scholar 

  28. Task force ACM e IEEE: Computer Science Curricula 2013. ACM and the IEEE Computer Society (2013)

    Google Scholar 

  29. Giangrande Jr., E.: CS1 programming language options. J. Comput. Sci. Coll. 22(3), 153–160 (2007)

    Google Scholar 

  30. Kemeny, J.G., Kurtz, T.E.: BASIC - A Manual for BASIC, the elementary algebraic language, Dartmouth College (1964)

    Google Scholar 

  31. Parker, K., Davey, B.: The history of computer language selection. In: IFIP Advances in Information and Communication Technology, pp. 166–179 (2012)

    Google Scholar 

  32. Dijkstra, E.W.: Go to statement considered harmful. Commun. ACM 11(3), 147–148 (1968)

    Article  MathSciNet  Google Scholar 

  33. Knuth, D.: Structured programming with go to statements. Comput. Surv. 6(4), 261–301 (1974)

    Article  Google Scholar 

  34. Dahl, O., Dijkstra, E., Hoare, C.: Structured programming. Academic Press Ltd. (1972)

    Google Scholar 

  35. Wirth, N.: The programming language pascal. In: Pioneers and their Contributions to Software Engineering. Springer (1971)

    Google Scholar 

  36. Gupta, D.: What is a good first programming language?. Crossroads ACM Mag. Students 10(4), 7 (2004)

    Google Scholar 

  37. Levy, S.: Computer language usage in CS1: survey results. ACM SIGCSE Bull. 7(3), 21–26 (1995)

    Article  Google Scholar 

  38. McCauley, R., Manaris, B.: Computer science degree programs: what do they look like? A report on the annual survey of accredited programs. ACM SIGCSE Bull. 30(1), 15–19 (1998)

    Article  Google Scholar 

  39. Farooq, M., Khan, S., Ahmad, F., Islam, S., Abid, A.: An evaluation framework and comparative analysis of the widely used first programming languages. PLoS ONE 9(2), e88941 (2014)

    Google Scholar 

  40. Sobral, S.R.: 30 years of CS1: programming languages evolution. In: 12th Annual International Conference of Education, Research and Innovation (2019)

    Google Scholar 

  41. Siegfried, R., Greco, D., Miceli, N., Siegfried, J.: A longitudinal analysis of the reid list of first. Inf. Syst. Educ. J. 10(4), 47–54 (2016)

    Google Scholar 

  42. Scoy, F.L.V.: The Return of the Reid List (2001). https://home.adelphi.edu/~siegfried/ReidList/Reid%20List%2021.htm

  43. Siegfried, R., Liporace, D., Herbert-Berger, K.: What can the reid list of first programming languages teach us about teaching CS1? In: 50th ACM Technical Symposium on Computer Science Education (2019)

    Google Scholar 

  44. Sobral, S.R.: Bachelor's and master's degrees integrated in Portugal in the area of computing: a global vision with emphasis on programming UCS and programming languages used. In: 11th Annual International Conference of Education, Research and Innovation (2018)

    Google Scholar 

  45. Sobral, S.R.: Introduction to programming: portrait of higher education in computer science in Portugal. In: 11th International Conference on Education and New Learning Technologies (2019)

    Google Scholar 

  46. Murphy, E., Crick, T., Davenport, J.H.: An analysis of introductory programming courses at UK universities. Art Sci. Eng. Program. 1(2), 18 (2017)

    Google Scholar 

  47. Becker, B.A.: A survey of introductory programming courses in Ireland. In: ITiCSE 2019: 2019 ACM Conference on Innovation and Technology in Computer Science Education (2019)

    Google Scholar 

  48. Arcos, G., Aguirre, G.L., Hidalgo, B., Rosero, R.H., Gómez, O.S.: Current trends of teaching computer programming in undergraduate CS programs: a survey from ecuadorian universities. In: Ibero-American Symposium on Computer Programming (2018)

    Google Scholar 

  49. Aleksić, V., Ivanović, M.: Introductory programming subject in European higher education. Inform. Educ. 15(2), 163–182 (2016)

    Article  Google Scholar 

  50. Ezenwoye, O.: What language? - the choice of an introductory programming language. In: 48th Frontiers in Education Conference, FIE 2018 (2018)

    Google Scholar 

  51. Roberts, E.: The dream of a common language: the search for simplicity and stability in computer science education. In: 35th SIGCSE Technical Symposium on Computer Science Education (2004)

    Google Scholar 

  52. Laakso, M., Kaila, E., Rajala, T., Salakoski, T.: Define and visualize your first programming language. In: 8th IEEE International Conference on Advanced Learning (2008)

    Google Scholar 

  53. Stefik, A., Hanenberg, S.: The programming language wars: questions and responsibilities for the programming language community. In: 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (2014)

    Google Scholar 

  54. Goosen, L.: A brief history of choosing first programming languages. In: History of Computing and Education, vol. 3 (2008)

    Google Scholar 

  55. Guerreiro, P.: A mesma velha questão: como ensinar Programação? In: Quinto Congreso Iberoamericano de Educación Superior (1986)

    Google Scholar 

  56. Collberg, C.S.: Data structures, algorithms, and software engineering. In: Software Engineering Education - SEI Conference 1989 (1989)

    Google Scholar 

  57. Bruce, K., Freund, S.N., Harper, R., Larus, J., Leavens, G.: What a programming languages curriculum should include. In: SIGPLAN Workshop on Undergraduate Programming Language Curricula (2008)

    Google Scholar 

  58. Nanz, S., Furia, C.A.: A comparative study of programming languages in rosetta code. In: 2015 IEEE/ACM 37th IEEE International Conference on Software (2015)

    Google Scholar 

  59. Alzahrani, N., Vahid, F., Edgcomb, A., Nguyen, K., Lysecky, R.: Python versus C++: an analysis of student struggle on small coding exercises in introductory programming courses. In: 49th ACM Technical Symposium on Computer Science Education (2018)

    Google Scholar 

  60. Wainer, J., Xavier, E.: A controlled experiment on python vs C for an introductory programming course: students’ outcomes. ACM Trans. Comput. Educ. 18(3), 1–16 (2018)

    Google Scholar 

  61. McMaster, K., Sambasivam, S., Rague, R., Wolthuis, S.: Java vs. python coverage of introductory programming concepts: a textbook analysis. Inf. Syst. Educ. J. 15(3), 4–13 (2017)

    Google Scholar 

  62. Farag, W., Ali, S., Deb, D.: Does language choice influence the effectiveness of online introductory programming courses? In: 14th Annual ACM SIGITE Conference on Information Technology Education (2013)

    Google Scholar 

  63. Sobral, S.R.: CS1: C, JAVA or python? Tips for a conscious choice. In: International Conference of Education, Research and Innovation (2019)

    Google Scholar 

  64. King, K.N.: The evolution of the programming languages course. ACM SIGCSE Bull. 24(1), 213–219 (1992)

    Article  Google Scholar 

  65. Howatt, J.: A project-based approach to programming language evaluation. ACM SIGPLAN Notices 30(7), 37–40 (1995)

    Article  Google Scholar 

  66. Luker, P.A.: Never mind the language, what about the paradigm? In: Twentieth SIGCSE Technical Symposium on Computer Science Education (1989)

    Google Scholar 

  67. Budd, T.A., Pandey, R.K.: Never mind the paradigm, what about multiparadigm languages? ACM SIGCSE Bull. 27(2), 25–30 (1995)

    Article  Google Scholar 

  68. Parker, K.R., Chao, J.T., Ottaway, T.A., Chang, J.: A formal language selection process. J. Inf. Technol. Educ. 5(1), 133–151 (2006)

    Google Scholar 

  69. Mishra, A., Chandel, A., Motwani, D.: xtended MABAC method based on divergence measures for multi-criteria assessment of programming language with interval-valued intuitionistic fuzzy sets. Granular Comput. 5, 97–117 (2020)

    Article  Google Scholar 

  70. ACM - Association for Computing Machinery, Curricula Recommendations. ACM (2020) https://www.acm.org/education/curricula-recommendations

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Sónia Rolland Sobral .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Sobral, S.R. (2021). The Old Question: Which Programming Language Should We Choose to Teach to Program?. In: Antipova, T. (eds) Advances in Digital Science. ICADS 2021. Advances in Intelligent Systems and Computing, vol 1352. Springer, Cham. https://doi.org/10.1007/978-3-030-71782-7_31

Download citation

Publish with us

Policies and ethics