Choosing a first programming language

14Citations
Citations of this article
32Readers
Mendeley users who have this article in their library.
Get full text

Abstract

Today, among other challenges, teaching students how to write computer programs for the first time can be an important criterion for whether students in computing will remain in their program of study, i.e. Computer Science or Information Technology. Not learning to program a computer as a computer scientist or information technologist can be compared to a mathematician not learning algebra. For a mathematician this would be an extremely limiting situation. For a computer scientist, not learning to program imposes a similar severe limitation on the budding computer scientist. Therefore it is not a question as to whether programming should be taught rather it is a question of how to maximize aspects of teaching programming so that students are less likely to be discouraged when learning to program. Different criteria have been used to select first programming languages. Computer scientists have attempted to establish criteria for selecting the first programming language to teach a student. This paper examines the criteria used to select first programming languages and the issues that novices face when learning to program in an effort to create a more comprehensive model for selecting first programming languages. When choosing a programming language to teach students as their first programming language, which one should be chosen? There are approximately 2000 to 3000 known programming languages documented on the World Wide Web. Which one would be the best to (1) teach students the proper concepts of programming, and (2) maintain student's interest in programming as an aspect of computer science? As we all know this latter is a serious consideration and also a problem because students, after having their first or second programming course usually don't want to program as part of their career. All but the most technically oriented students are drawn to programming. Yet, as was mentioned earlier, programming is a fundamental skill for the computer scientist. Although there are examples of bonified "novice" or "beginner" programming languages these languages still represent what can be considered to be general purpose programming languages that have been chosen as the basis for instruction in computer science and information technology. The parade of languages used for instructing novices represents one that is driven by the next "best" language, industry trends, and thirdly one that allows for the explication of the abstract concepts of programming. This has led largely to the continual problems that we see today with teaching programming and will continue to see if we continue to choose programming languages as we have. There has been significant research into the issues, considerations, effectiveness, and characteristics of what may make a programming language that meets the educational needs of teachers and students. On the one hand teachers must be able to teach the foundational concepts of computer science and the programming language must support these foundational concepts. On the other hand, a programming language for novices must enable the novice to learn these concepts without interference from the details and minutae of the programming language. A desirable outcome of learning this programming language would be to come away with a feeling of competence and liking the practice of programming. It seems reasonable to suggest that it is time for a novice programming language to be created that is designed around not only technical concepts but also educational and psychological concepts. We know for example that programming is a skill that involves problem solving. And we know quite a bit about problem solving - so why not incorporate some of the notions of problem solving into the programming language design. Likewise, programming is about creating algorithms. Why not incorporate aspects of algorithm writing into the programming language? It may seem that these suggestionas will largely result in yet another language of many features none of which are formulated or executed well. This is not a conclusion that we are suggesting. Rather, we are suggesting taking these elements into consideration when we design a novice programming language to promote success in creating new programmers as opposed to the failures we see now.

Cite

CITATION STYLE

APA

Kaplan, R. (2010). Choosing a first programming language. In SIGITE’10 - Proceedings of the 2010 ACM Conference on Information Technology Education (pp. 163–164). https://doi.org/10.1145/1867651.1867697

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free