A Formal Language Selection Process for Introductory Programming Courses

Introduction A cursory glance through back issues of computer-related journals makes it apparent that discussions about the introductory programming language course and the language appropriate for that course have been numerous and on-going (Smolarski, 2003). The selection of a programming language for instructional purposes is often viewed as a tedious chore because there is no well-established approach for performing the evaluation. However, the choice of a programming language has serious education repercussions (Schneider, 1978). Dijkstra (1972, p. 864) stated that "... the tools we are trying to use and the language or notation we are using to express or record our thoughts are the major factors determining what we can think or express at all! The analysis of the influence that programming languages have on the thinking habits of their users ... give[s] us a new collection of yardsticks for comparing the relative merits of various programming languages." The informal process may involve faculty discussion, with champions touting the advantages of their preferred language, and an eventual consensus, or at least surrender. Because the process must be repeated every three or four years it would be preferable to develop a structured approach to make the process more systematic. The goal of this study is to develop and refine an instrument to facilitate the selection of a programming language and to make the process more uniform and easily replicated. The original paper (Parker, Ottaway, & Chao, 2006) proposed an objective selection process. A pilot study was conducted to test the viability of the process. The following steps outline the proposed approach that guided the pilot study. 1. Compile a list of language selection criteria. 2. Weight each of the criteria. Ask each evaluator to weight, specific to the department's needs, the value of importance for each criterion. 3. Determine a list of candidate languages. The list should be comprised of languages nominated by the faculty rather than a complete list of available languages. 4. Evaluate the language. Each candidate language should be assigned a rating for each criterion. 5. Calculate weighted score. For each candidate language, a weighted score can be calculated by adding together the language score multiplied by the weight assigned to each criterion. The language with the highest weighted score is the optimal choice, given the evaluators' assessments. This paper first reviews a set of criteria designed for use in the selection of an appropriate programming language for introductory courses. It then describes the structure of the pilot study and resulting findings. Finally, the paper advances refinements in the process that should circumvent the problems that were discovered in our original proposal. Criteria A previous paper proposed criteria for the selection of a programming language for introductory courses. The criteria were derived by perusing over sixty papers relevant to language selection and justified by a brief review of the supporting literature in (Parker et al., 2006). Each of the criteria in Table 1 has been used in one or more previous studies that evaluate programming languages. A complete literature review and justification for each of the criterion can be found in (Parker et al., 2006), but a brief explanation of each follows. Reasonable Financial Cost This criterion refers to the price to acquire the programming language or the development environment. This may involve individual packages or a site license for a network version. There may be an academic discount for educational institutions, there may be an alliance in which the university or department can enroll, or there may even be a free, downloadable version. Availability of Student/ Academic Version The availability of a student version or academic version allows students to install the development environment on their personal machine, making it more convenient for them to work on their assignments when the computer lab is not accessible. …