Skip to main content

The First Programming Language and Freshman Year in Computer Science: Characterization and Tips for Better Decision Making

  • Conference paper
  • First Online:

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

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.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   169.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   219.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

Learn about institutional subscriptions

Notes

  1. 1.

    Wikipedia is not a reliable source of information because it has collaborative features!

  2. 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

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

    Google Scholar 

  2. Gries, D.: The Science of Programming, Springer, New York (1981)

    Google Scholar 

  3. Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Englewood Cliffs (1976)

    Google Scholar 

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

    MATH  Google Scholar 

  5. Sobral, S.R.: B-learning em disciplinas introdutórias de programação. Universidade do Minho, Guimarães (2008)

    Google Scholar 

  6. 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 

  7. 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)

    Google Scholar 

  8. Lima, J.R.: Programação de computadores, Porto Editora, Porto (1991)

    Google Scholar 

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

    Google Scholar 

  10. 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 

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

    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. Scott, M.L.: Programming Language Pragmatics, 3rd edn. Elsevier, Amsterdam (2009)

    Google Scholar 

  15. Stackoverflow.com: Stackoverflow (2019). https://insights.stackoverflow.com/survey/2019

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

  17. Wikipedia: Programming languages used in most popular websites, Setembro (2019). https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites

  18. Rice, J.R., Rosen, S.: History of the Computer Sciences Department at Purdue University. Department of Computer Science, Purdue University (1990)

    Google Scholar 

  19. 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 

  20. 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)

    Google Scholar 

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

    Google Scholar 

  22. 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 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  26. 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 

  27. Wexelblat, R.L.: First programming language: consequences (panel discussion) (1979)

    Google Scholar 

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

    Google Scholar 

  29. 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 

  30. 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)

    Google Scholar 

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

    Google Scholar 

  32. Kemeny, J.G., Kurtz, T.E: BASIC - A Manual for BASIC, the Elementary Algebraic Language. Dartmouth College (1964)

    Google Scholar 

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

    Google Scholar 

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

    Article  MathSciNet  Google Scholar 

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

    Article  Google Scholar 

  36. Dahl, O., Dijkstra, E., Hoare, C.: Structured Programming. Academic Press Ltd., London (1972)

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Article  Google Scholar 

  40. 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 

  41. 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)

    Google Scholar 

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

    Google Scholar 

  43. 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)

    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. Programm. 1(2) (2017)

    Google Scholar 

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

    Google Scholar 

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

    Article  Google Scholar 

  49. 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 

  50. Dijkstra, E.W.: The humble programmer. Commun. ACM 15(10), 859–866 (1972)

    Google Scholar 

  51. 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 

  52. 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 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  56. 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 

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

    Article  Google Scholar 

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

    Article  Google Scholar 

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

    Google Scholar 

  60. 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 

  61. 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 

  62. 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 

  63. 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 

  64. 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 

  65. 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 

  66. 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)

    Article  Google Scholar 

  67. The Joint Task Force for Computing Curricula 2005: Computing Curricula 2005: The Overview Report. ACM (2005)

    Google Scholar 

  68. The Joint Task Force on Computing Curricula: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. ACM (2004)

    Google Scholar 

  69. The Joint Task Force on Computing Curricula: SE2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. ACM (2004)

    Google Scholar 

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

© 2020 The Editor(s) (if applicable) and 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. (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

Publish with us

Policies and ethics