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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
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)
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)
Knuth, D.: The Art of Computer Programming. Addison-Wesley, Boston (1968)
Gries, D.: The Science of Programming, Springer, Heidelberg (1981)
Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Upper Saddle River (1976)
Aho, A., Ullman, J.D.: Foundations of Computer Science: C Edition (Principles of Computer Science Series). W. H. Freeman (1994)
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)
Bergin, S., Reilly, R.: Programming: factors that Influence SuccessSusan. In: Proceedings of the 36th SIGCSE Technical Symposium on Computer Science Education (2005)
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)
Luxton-Reilly, A.: Learning to program is easy. In: ACM Conference on Innovation and Technology in Computer Science Education (2016)
Dijkstra, E.W.: The Humble Programmer. Commun. ACM 15(10), 859–866 (1972)
Mitchell, J.C.: Concepts in Programming Languages. Cambridge University Press, Cambridge (2003)
Sprankle, M.: Problem Solving and Programming Concepts. 9 edn. Pearson, London (2011)
Pigott, D.: Online Historical Encyclopaedia of Programming Languages (1995–2020). https://hopl.info/
Scott, M.L.: Programming Language Pragmatics. 3rd edn. Elsevier, Amsterdam (2009)
Stackoverflow.com, “Stackoverflow” (2020). https://insights.stackoverflow.com/survey/2020
TIOBE Software BV, “TIOBE,” Set. (2019). https://www.tiobe.com/tiobe-index/
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)
Wexelblat, R.L.: First programming language: consequences (Panel, in Discussion) (1979)
Tharp, A.L.: Selecting the “right” programming language. In: SIGCSE 1982 Technical Symposium on Computer Science Education, Indianapolis, Indiana, USA (1982)
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)
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)
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)
Koffman, E.B., Miller, P.L., Wardle, C.E.: Recommended curriculum for CS1, 1984. Commun. ACM 27(10), 998–1001 (1984)
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)
The Joint Task Force IEEE and ACM: CC2001 Computer Science, Final Report (2001)
Cassel, L., Clements, A., Davies, G., Guzdial, M., McCauley, R.: Computer Science Curriculum 2008: An Interim Revision of CS 2001. ACM (2008)
Task force ACM e IEEE: Computer Science Curricula 2013. ACM and the IEEE Computer Society (2013)
Giangrande Jr., E.: CS1 programming language options. J. Comput. Sci. Coll. 22(3), 153–160 (2007)
Kemeny, J.G., Kurtz, T.E.: BASIC - A Manual for BASIC, the elementary algebraic language, Dartmouth College (1964)
Parker, K., Davey, B.: The history of computer language selection. In: IFIP Advances in Information and Communication Technology, pp. 166–179 (2012)
Dijkstra, E.W.: Go to statement considered harmful. Commun. ACM 11(3), 147–148 (1968)
Knuth, D.: Structured programming with go to statements. Comput. Surv. 6(4), 261–301 (1974)
Dahl, O., Dijkstra, E., Hoare, C.: Structured programming. Academic Press Ltd. (1972)
Wirth, N.: The programming language pascal. In: Pioneers and their Contributions to Software Engineering. Springer (1971)
Gupta, D.: What is a good first programming language?. Crossroads ACM Mag. Students 10(4), 7 (2004)
Levy, S.: Computer language usage in CS1: survey results. ACM SIGCSE Bull. 7(3), 21–26 (1995)
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)
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)
Sobral, S.R.: 30 years of CS1: programming languages evolution. In: 12th Annual International Conference of Education, Research and Innovation (2019)
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)
Scoy, F.L.V.: The Return of the Reid List (2001). https://home.adelphi.edu/~siegfried/ReidList/Reid%20List%2021.htm
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)
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)
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)
Murphy, E., Crick, T., Davenport, J.H.: An analysis of introductory programming courses at UK universities. Art Sci. Eng. Program. 1(2), 18 (2017)
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)
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)
Aleksić, V., Ivanović, M.: Introductory programming subject in European higher education. Inform. Educ. 15(2), 163–182 (2016)
Ezenwoye, O.: What language? - the choice of an introductory programming language. In: 48th Frontiers in Education Conference, FIE 2018 (2018)
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)
Laakso, M., Kaila, E., Rajala, T., Salakoski, T.: Define and visualize your first programming language. In: 8th IEEE International Conference on Advanced Learning (2008)
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)
Goosen, L.: A brief history of choosing first programming languages. In: History of Computing and Education, vol. 3 (2008)
Guerreiro, P.: A mesma velha questão: como ensinar Programação? In: Quinto Congreso Iberoamericano de Educación Superior (1986)
Collberg, C.S.: Data structures, algorithms, and software engineering. In: Software Engineering Education - SEI Conference 1989 (1989)
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)
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)
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)
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)
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)
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)
Sobral, S.R.: CS1: C, JAVA or python? Tips for a conscious choice. In: International Conference of Education, Research and Innovation (2019)
King, K.N.: The evolution of the programming languages course. ACM SIGCSE Bull. 24(1), 213–219 (1992)
Howatt, J.: A project-based approach to programming language evaluation. ACM SIGPLAN Notices 30(7), 37–40 (1995)
Luker, P.A.: Never mind the language, what about the paradigm? In: Twentieth SIGCSE Technical Symposium on Computer Science Education (1989)
Budd, T.A., Pandey, R.K.: Never mind the paradigm, what about multiparadigm languages? ACM SIGCSE Bull. 27(2), 25–30 (1995)
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)
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)
ACM - Association for Computing Machinery, Curricula Recommendations. ACM (2020) https://www.acm.org/education/curricula-recommendations
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
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
DOI: https://doi.org/10.1007/978-3-030-71782-7_31
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-71781-0
Online ISBN: 978-3-030-71782-7
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)