Abstract
The ability to program is the “visible” competency to acquire in an introductory unit in computer science. However, before a student is able to write a program, he needs to understand the problem: before formalizing, the student must have to (be able) to think, (be able) to solve and (be able) to define. At an early stage of learning there are no significant differences between programming languages.
The discussion of the early programming language continues: probably never will be a consensus among academics. The Association for Computing Machinery (ACM) and Institute of Electrical and Electronics Engineers (IEEE) computer science curriculum recommendations haven’t clearly defined which programming language to adopt: it is the course directors and teachers who must make this choice, consciously and not only following the trends.
This article presents a set of items that should be considered when you make a programming language choice for the first programming unit in higher education computer science courses.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
Wikipedia is not a reliable source of information because it has collaborative features!
- 2.
(2-2-3) two hours of lectures and two hours of laboratory per week for a total of three semester hours of credit.
References
Knuth, D.: The Art of Computer Programming. Addison-Wesley, Reading (1968)
Gries, D.: The Science of Programming, Springer, New York (1981)
Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Englewood Cliffs (1976)
Aho, A., Ullman, J.D.: Foundations of Computer Science. Principles of Computer Science Series, C edn. Freeman, W. H. (1994)
Sobral, S.R.: B-learning em disciplinas introdutórias de programação. Universidade do Minho, Guimarães (2008)
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)
Sobral, S.R., Pimenta, P.: O ensino da programação: exercitar a distancia para combate às dificuldades. In: 4ª Conferência Ibérica de Sistemas e Tecnologias de Informação (2009)
Lima, J.R.: Programação de computadores, Porto Editora, Porto (1991)
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)
Mitchell, J.C.: Concepts in Programming Languages. Cambridge University Press, Cambridge (2003)
Sprankle, M.: Problem Solving and Programming Concepts, 9 edn. Pearson, London (2011)
Scott, M.L.: Programming Language Pragmatics, 3rd edn. Elsevier, Amsterdam (2009)
Stackoverflow.com: Stackoverflow (2019). https://insights.stackoverflow.com/survey/2019
TIOBE Software BV: TIOBE, Set (2019). https://www.tiobe.com/tiobe-index/
Wikipedia: Programming languages used in most popular websites, Setembro (2019). https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
Rice, J.R., Rosen, S.: History of the Computer Sciences Department at Purdue University. Department of Computer Science, Purdue University (1990)
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)
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)
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)
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 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., de Raadt, M.: An objective comparison of languages for teaching introductory programming. In: 6th Baltic Sea Conference on Computing Education Research: Koli Calling 2006 (2006)
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., London (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. Stud. 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.S., Khan, S.A., Ahmad, F., Islam, S., Abid, A.: An evaluation framework and comparative analysis of the widely used first programming languages. PLoS ONE (2014)
Sobral, S.R.: 30 years of CS1: programming languages evolution. In: 12th Annual International Conference of Education, Research and Innovation (2019)
Siegfried, R.M., Siegfried, J., Alexandro, G.: A longitudinal analysis of the Reid list of first. Inf. Syst. Educ. J. 10(4), 47–54 (2016)
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. Programm. 1(2) (2017)
Ezenwoye, O.: What language? - the choice of an introductory programming language. In: 48th Frontiers in Education Conference, FIE 2018 (2018)
Aleksić, V., Ivanović, M.: Introductory programming subject in European higher education. Inform. Educ. 15(2), 163–182 (2016)
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)
Dijkstra, E.W.: The humble programmer. Commun. ACM 15(10), 859–866 (1972)
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 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)
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 Not. 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)
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)
Koffman, E.B., Stemple, D., Wardle, C.E.: Recommended curriculum for CS2, 1984: a report of the ACM curriculum task force for CS2. Commun. ACM 28(8), 815–818 (1985)
The Joint Task Force for Computing Curricula 2005: Computing Curricula 2005: The Overview Report. ACM (2005)
The Joint Task Force on Computing Curricula: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. ACM (2004)
The Joint Task Force on Computing Curricula: SE2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. ACM (2004)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 The Editor(s) (if applicable) and The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Sobral, S.R. (2020). The First Programming Language and Freshman Year in Computer Science: Characterization and Tips for Better Decision Making. In: Rocha, Á., Adeli, H., Reis, L., Costanzo, S., Orovic, I., Moreira, F. (eds) Trends and Innovations in Information Systems and Technologies. WorldCIST 2020. Advances in Intelligent Systems and Computing, vol 1161. Springer, Cham. https://doi.org/10.1007/978-3-030-45697-9_16
Download citation
DOI: https://doi.org/10.1007/978-3-030-45697-9_16
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-45696-2
Online ISBN: 978-3-030-45697-9
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)