Factor To Consider When Selecting Web Programming Languages
Factor To Consider When Selecting Web Programming Languages
1/2, 2006
119
Criteria for the selection of a programming language for introductory courses Kevin R. Parker* and Thomas A. Ottaway
Idaho State University Campus Box 8020 Pocatello, ID 83209, USA E-mail: parkerkr@isu.edu E-mail: ottathom@isu.edu *Corresponding author
Joseph T. Chao
Bowling Green State University Bowling Green, OH 43403, USA E-mail: jchao@cs.bgsu.edu
Abstract: Historically, the selection of a programming language for an introductory programming course has been a process consisting of faculty evaluation, discussion, and consensus. As the number of faculty, students, and language options grows, this process is likely to become increasingly unwieldy. In addition, the process lacks structure and cannot be easily replicated. The selection process will, in all likelihood, be repeated every two to three years. Providing a structured approach to the selection of a programming language would yield a more thorough evaluation of the options available and a more easily justified selection. Developing and documenting an exhaustive set of selection criteria, and an approach for the application of these criteria, will allow the process of language selection to be more easily repeated in the future. This paper presents a comprehensive set of criteria that should be considered when selecting a programming language for a teaching environment, and proposes several approaches for the application of these criteria. Keywords: programming language selection; introduction to programming; teaching programming; programming language evaluation. Reference to this paper should be made as follows: Parker, K.R., Ottaway, T.A. and Chao, J.T. (2006) Criteria for the selection of a programming language for introductory courses, Int. J. Knowledge and Learning, Vol. 2, Nos. 1/2, pp.119139. Biographical notes: Dr. Kevin R. Parker is Professor of Computer Information Systems at Idaho State University, having previously held an academic appointment at Saint Louis University. He has taught both Computer Science and Information Systems courses over the course of his 14 years in academia. Dr. Parkers research interests include e-commerce marketing, competitive intelligence, knowledge management, the semantic web, and extreme programming. He has published in such journals as Journal of Information Technology Education, Journal of Information Systems Education, International Journal of Internet and Enterprise Management, and Journal of Issues in Informing Science and Information Technology. Dr. Parkers teaching Copyright 2006 Inderscience Enterprises Ltd.
120
Introduction
The programming language used in teaching an introductory programming course can have a great impact on how the course is taught as well as its effectiveness. Language selection has long been a difficult and unstructured process. Fewer issues in the world of software development are as strategic, political, and contentious as the choice of programming language (Jensen, 2004). Over the years various languages have been viewed as contenders for the primary programming languages in IS and CS programmes, as seen in Wiles (2002) timeline of the succession of programming languages (and language types) throughout their evolution. Programming language selection is usually no more systematic than a series of faculty meetings focusing on informal language assessment, debate, and eventual consensus. With the diversity of high-level programming languages available, selecting the right language for a computing-focused curriculum or course can be a perplexing process (Tharp, 1982). For many reasons, such as the manner in which students approach problems or scarce computing resources, the selection of a programming language has ramifications throughout the curriculum (Tharp, 1982). As the number of faculty, students, and language options grows, language selection is likely to become increasingly complex. Furthermore, the selection process currently lacks structure and thus cannot be easily replicated. Because the selection
121
process is often repeated every two to three years, developing and documenting a set of selection criteria, and a process for the application of these criteria, will result in a process that will be more easily repeated in the future. A structured approach to the selection of a programming language will enable a more thorough evaluation of the available options and a more easily validated selection. Several factors must be considered when selecting a programming language, and whilst different curricula place greater emphasis on different factors, all must be considered. We seek to develop a comprehensive set of selection criteria and a process for the application of these criteria to evaluate programming languages to be used in programming classes. The selection criteria must take into account the programming features of each language under consideration, the appropriateness of each of these features for beginning (and perhaps advanced) programming courses, the present and future industry acceptance of each language, the availability and quality of textbooks, the costs associated with adopting each language, the infrastructure and support implications of each language, and the impact of the decision on the tactical and strategic direction of the department and curriculum.
Literature review
The literature review begins by discussing the lack of experimental comparisons of the usability of programming languages, accompanied by a brief mention of those that do exist. It then points out that many factors must be considered when selecting a language, even before formal criteria can be considered. Note that whilst some of these factors will be included in the criterion, they may also be used as a pre-evaluation tool to narrow the field of choices. McIver (2002) indicates that although there are very strong feelings on the subject of first programming languages, few evaluative studies of languages or development environments for introductory programming classes exist. Further, there have been few, if any, empirical tests comparing different languages (McIver, 2000). Wilson (1997) agrees that whilst debates over the relative merits of various programming languages are quite common, there have been relatively few experimental comparisons of the usability of different programming languages. Wilson (1997) was able to find only one such study, an experiment by Szafron and Schaeffer (1996) to measure the usability of parallel programming systems. Another study, conducted by Murtagh and Hamilton (1998), performed a one-on-one comparison of the impact of two languages on the success of students in an introductory programming class, but their approach requires an instructor proficient in both languages and is not easily extended to more than two languages at a time. Various arguments have been made for the use of a particular language or particular paradigm in introductory classes (Klling et al., 1995; Conway, 1993). However, McIver (2002) points out that whilst anecdotal evidence from introductory programming courses is widely available (Reed, 2001; Allen et al., 1996; Popyack and Herrmann, 1993), and individual language features have been studied from a cognitive point of view (Soloway et al., 1989; Sime et al., 1973), the determination of which language should be used for teaching introductory programming remains a contentious issue.
122
One explanation offered for the scarcity of studies is that the variability among programmers would render any study meaningless (Wilson, 1997). Another is that the differences between domains are too great to perform a meaningful study. Wilson (1997) disagrees with the premise that such studies are not possible but does not offer any solutions. Comparing languages is a difficult task, especially when the languages do not share the same paradigm (McIver, 2000). Establishing proper criteria for the comparison is difficult not only because a question of what to measure exists, but also because the criteria may favour one language over another (McIver, 2000). McIver (2002) points out that in educational settings the demands of various courses and curricula make it problematical, if not impossible, to compare different languages. Further, different courses generally have sufficiently different objectives to make language comparisons virtually meaningless (McIver, 2002).
123
them for nontrivial programmes, whilst other educators attempt to show students the breadth of the programming field by exposing the student to as many languages as possible (King, 1992).
Selection criteria
The programming language selection criteria appear in Table 1. These criteria were derived through a thorough review of the literature, and each will be justified by a brief review of the supporting literature. Each of the criteria in Table 1 has been used in one or more previous studies that evaluate programming languages.
124
Table 1 Criterion
Reasonable financial cost for setting up the teaching environment Availability of student/academic version Availability of textbooks Languages stage in life cycle System requirements of student/academic/full version Operating system dependence Open source (versus proprietary) Academic acceptance Industry acceptance Marketability (regional and national) of graduates Easy to use development environment Ease of learning basic concepts Support for target application domain (such as scientific or business) Full-featured language (versus scripting) Support for teaching approach (function first, object first or object early) Object-oriented support Good debugging facilities Support of web development Support for safe programming Advanced features for subsequent programming courses Availability of support Training required for instructors and support staff Anticipated programming experience level for incoming students
125
126
biological domain, but in the case of languages the main forces are efficiency of expression versus profitable adoption. New languages compete with older languages. If a language is general purpose, functional, expressive, and marketed, then it will most likely be adopted. Once adopted, the application market drives language evolution. Sharps programming language life cycle begins with the conception stage, when a language is conceived to fill deficiencies not met by existing languages. That is followed by the adoption phase, as programmers perceive that the language will improve their efficiency. As the language stabilises and exhibits fewer defects, there is general acceptance. The maturation stage is characterised by a greater demand for functionality than for efficiency, which leads to the inefficiency stage, characterised by increased functionality but also a market fragmented by disparate vendor implementation of standards. The decline continues in the deprecation stage as development becomes more costly and inefficiencies lead to consideration of alternatives. Finally, in the decay stage, newer languages that lack some features but are faster and more efficient appear on the scene and displace their precursors.
127
spectrum, PHP is an open-source language and can be easily implemented by any member of the open-source community. Both Stephenson (2000) and Riehle (2003) include open source in their criteria.
128
want. Not only are marketable skills important in future employability, but students are more enthusiastic when studying a language they feel will increase their employability (de Raadt et al., 2003). This criterion is stressed in several studies. The census of introductory programming courses conducted by de Raadt et al. (2003) emphasises the importance of employability. In fact, the most commonly listed factor in language selection (by 56% of the participants) was the desire to teach a language that provides graduates with marketable skills. Watt (2000) discusses the need for transferable skills that will be useful in whatever career the student chooses to pursue. Emigh (2001) agrees that the primary concern in language evaluation must be the demand in the workplace and argues that when deciding on a new language one must take into account employers expectations of graduates. Further, graduates marketability can be improved by exposing them to several languages (de Raadt et al., 2003). They cite, for example, that a progression from C to C++ to Java will qualify a graduate for more advertised positions than exposure to any single language in isolation. Emigh (2001) points out a caveat that must be considered when assessing both industry acceptance and marketability. Generally, four to five years pass between a students beginning a programme of study and attaining a position using his or her programming skills. Even if a curriculum teaches a newer programming language, there is no guarantee that employers will still be looking for that language when the student enters the workforce.
129
manipulation. Klling et al. (1995) note that a language should support clean, simple, and well-defined concepts; the language should have an easily readable, consistent syntax. The ease of learning fundamental programming concepts is cited in several studies as a crucial factor in language selection. The first programming language must serve as a vehicle for exploring fundamental programming design concepts of sequence, selection, iteration, variables, and arrays (Wolz, 1997; Bishop-Clark and Donohue, 1999), so educators must select a language that supports and clearly expresses those fundamental concepts (Watt, 2000). Wang (2001) and Traxler (1994) also discuss the importance of fundamental programming concepts. In addition to ease of learning, the language must be characterised by concise syntax and straightforward semantics (Conway, 1993). Clarity of syntax and semantics are cited by McIver and Conway (1996), Tolmach (1999), Paprzycki (2002), and Fergusson (2003) as essential considerations in the selection of a language. Milbrandts (1993) criteria include both simplicity of syntax and ease of use. Ease of use and learning is also cited by both Howatt (1995) and Cunningham (2004). In a survey conducted by Stephenson (2000), 13.1% of the respondents indicated ease of use as a primary factor in language selection. The Ad Hoc AP CS Committee (2000) cites a need for a language and a programming environment that are reasonably simple, noting that students can be easily sidetracked by awkward syntax, complex language semantics, or expansive programming environments. The committee report suggests that a simple and clear context can encourage students to develop high-level thinking skills.
130
Python because they offer sufficient richness to cover most of the requirements of an introductory course whilst reducing the complexity of the development environment and avoiding many other implementation issues. Warren (2001,p.214) states that JavaScript has sufficient richness to cover most of what is required in an elementary course and it is a real language with immediate application for the student. He goes on to point out that JavaScript also uses a simple editing environment, reduces language complexity, and improves consistency. Full-featured languages, however, offer a more complete set of language features that an instructor may want to incorporate. Some of these issues may be related to the next criterion, the choice between teaching basic concepts and teaching a specific language. Full-featured or conventional programming languages like C++ and Java are compiled rather than interpreted, and they require typed variable declarations (Prechelt, 2000). On the other hand, scripting languages such as Perl, Python, Rexx, and Tcl are generally interpreted rather than compiled, at least during the programme development phase, and they typically do not require variable declarations (Prechelt, 2000). MVI Solutions (2004) points out that whilst scripting languages are growing in popularity among professional programmers, serious questions arise about performance, software reuse, and integration with components written in other languages. Some debate exists as to whether scripting languages support the learning of core programming concepts (Stephenson, 2000). However, Prechelts (2000) comparison of the two language types reports that designing and writing programmes in scripting languages takes less than half as much time as conventional languages, and the resulting programmes are generally half as long. Prechelt (2000) also observes no clear differences in programme reliability among the language groups but notes that the typical script programme consumes about twice as much memory as a C or C++ programme, although Java programmes consume three or four times as much memory as C or C++ programmes. Although web development features are the focus of a later criterion, a discussion of scripting languages must mention client-side or server-side scripting. As future professionals, students in the computing disciplines have to learn to develop internet applications; skills that can be acquired only when students understand client-server computing through learning HTML, JavaScript, and Java applets (Wang, 2001). As the internet continues to grow, demand for skills in scripting and markup languages also increases (de Raadt et al., 2002; 2003). The many job postings requiring scripting/markup languages indicate that the modern programming degree should include these languages and the web-related concepts surrounding them (de Raadt et al., 2002).
131
Many studies echo the importance of concepts over language. Tomblin (2002) states that the focus of programming classes should not be so much the language as it should be the concepts and good programming practices that need to be taught. Klling et al. (1995) note that the aim of their programming courses is to educate students in such a way that they understand the underlying concepts, and are thus able to write good programmes in any language. Other studies discuss the use of Java from this perspective. Warren (2001) reflects that whilst many features offered by Java are necessary for industrial-strength programmes, they are simply gratuitous complexity in teaching programming concepts. Collins (2002) discusses Javas suitability to demonstrate and convey the concepts that are important across a programming curriculum. Other programmes take the alternate approach and stress teaching individual language features over programming concepts. Lee and Phillips (2002) assert that most students regard training in a specific language more useful than an education in programming concepts. Further, Emigh (2001) notes that many universities are reacting to student demand to be taught the technicalities of a particular language rather than programming concepts.
132
133
languages in their curriculum, other programmes prefer to introduce basic programming language features in an introductory course and defer advanced features of the language, like multithreading, to a subsequent course. Lee and Stroud (1996) include whether a language provides a basis for subsequent courses that require use of a programming language, e.g., compiler construction, operating systems, and concurrent programming. In either case, introductory programming courses cannot be considered in isolation from the remainder of the courses required in a curriculum (de Raadt et al., 2003).
Lee and Phillips (2002) include training as one of the overheads associated with language adoption, as do Tolmach (1999) and Wile (2002). Stephenson (2000) reflects on a need for continuous training to aid instructors in keeping up with constantly changing technology. Lawlis (1997) says that there is no substitute for good education and training, so the availability of language-related education and/or training courses must be a part of language selection.
134
computer programming course in high school (CollegeBoard.com, 2004). Lee and Phillips (2002) and Klling et al. (1995) discuss the increase in student experience levels. The proportion of students with programming experience has increased significantly over time although not sufficiently to require prior experience as a prerequisite for the course (Lee and Stroud, 1996). Still, if a programme consistently sees students with uniform programming experience, it may be able to adjust its requirements and its programming language selection accordingly.
Practical aspects
Although language selection is highly subjective, a thorough list of criteria makes an objective selection process possible. However, the process may still vary drastically due to the differences in culture, strategy, or even politics at each institution. The following steps provide a systematic approach in a general selection process: 1 Compile a list of criteria The criteria proposed by this study can be adapted to fit the needs of most departments or programmes. 2 Weight each of the criteria Ask each evaluator to weight, specific to the departments needs, the value of importance for each criterion. For example, the weight may range from zero (do not care) to ten (extremely important). If there are multiple evaluators, either a consensus can be reached or the weights assigned by each evaluator can be averaged. 3 Determine a list of candidate languages The list should comprise of languages nominated by the faculty rather than a complete list of available languages. Having sub-lists may be desirable so that a subset of candidate languages can be compared at one time to narrow down the choices, and comparing several similar languages may also be desirable. 4 Rate the language Each candidate language should be assigned a rating for each criterion. The score may range from zero (extremely low) to ten (extremely high). Again, with more than one evaluator, a consensus should be reached or average scores could be calculated. 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 based on the evaluators assessments.
135
The process is fairly mechanical and can be easily adapted to fit the needs of individual departments. It may be better to begin the selection process with a brief introduction to the procedure. A language selection committee may be formed to evaluate and adapt the selection criteria and to assign a weight to each criterion for the department. Not every faculty member in the department may have expertise in or even familiarity with all the languages to be evaluated. One solution is to provide evaluators with programme code samples for each language to be evaluated, or different groups of evaluators could assess each subset of language candidates. Another alternative would be to require each evaluator to state his or her confidence level on each language evaluated.
In this paper we have presented the relevant and extant literature on the selection of a programming language for use in an introductory programming course. We have developed a comprehensive set of criteria to be used in evaluating a programming language. Finally, we have proposed a process by which these criteria may be used to compare programming languages to facilitate the selection of a language. By constructing an exhaustive set of evaluation criteria and using these criteria in a structured manner we have set forth a means by which much of the subjectivity in the selection process may be removed. In addition, the approach presented is extensible. As new programming paradigms and languages are introduced and old ones fall out of favour, the criteria and associated process may easily be revised. The objectivity and extensibility of this approach yield the repeatability sought in the original research objectives. In practice, the choice of a programming language for an introductory course is often a compromise. Economic, political, and pedagogical factors may all be relevant to the decision-making process. Whilst the importance of each of these factors may depend on the specific aims and priorities of the institution, educator, or course, educators must be certain that the factors in the above criteria are not neglected or sacrificed to more highly visible concerns (McIver and Conway, 1996). Future research will include refinement of the selection criteria, formalisation of the selection process, and application of the process in a variety of settings. A large number of selection criteria have been presented so as to develop the most comprehensive selection instrument possible. Some of these criteria are likely more relevant than others. Future research will capture the relative importance of each of these criteria across different languages, decision makers, and decision-making environments. Formalisation of the selection mechanism will draw on methods used in multicriteria decision-making. Finally, the refined selection criteria and process will be applied and evaluated in a variety of academic settings and the results will be evaluated for use in further refining both the process and the instrument.
136
References
Ad Hoc AP CS Committee (2000) Round 2: Potential Principles Governing Language Selection for CS1-CS2, http://www.cs.grinnell.edu/~walker/sigcse-ap/99-00-principles.html AlGhamdi, J. and Urban, J. (1993) Comparing and assessing programming languages: basis for a qualitative methodology, Proceedings of the 1993 ACM/SIGAPP Symposium on Applied Computing: States of the Art and Practice, Indianapolis, Indiana, pp.222229. Allen, R.K., Grant, D.D. and Smith, R. (1996) Using Ada as the first programming language: a retrospective, Proceedings of Software Engineering: Education and Practice, Dunedin, New Zealand, pp.234241. Bishop-Clark, C. and Donohue, C. (1999) Comparing changes in attitude in three different introductory computing courses, Journal of Educational Technology Systems, Vol. 27, No. 4, pp.305317. Bowman, H. (1994) A perspective on language wars, 2nd All-Ireland Conference on the Teaching of Computing, Dublin, Ireland, http://www.ulst.ac.uk/cticomp/papers/ bowman.html CollegeBoard.com (2004) 2004 college-bound seniors: a profile of SAT test takers, College Entrance Examination Board, Online, http://www.collegeboard.com/prod_downloads/about/ news_info/cbsenior/yr2004/2004_CBSNR_total_group.pdf Collins, D. (2002) Java second. The suitability of Java as a first programming language, The Sixth Java and the Internet in the Computing Curriculum Conference Proceedings, London, UK, http://www.ics.ltsn.ac.uk/pub/jicc6/collins.doc Conway, D. (1993) Criteria and considerations in the selection of a first programming language, Technical Report 93/192, Department of Computer Science, Monash University. Courte, J.E. (2004) The difficulties of incorporating web development into a university curriculum, Paper Presented at the New Society of the WWW Conference, Rose-Hulman Institute of Technology, Terre Haute, Indiana, USA, 30 September2 October, http://www10.cs.rose-hulman.edu/Papers/Courte.pdf Cunningham, W. (2004) Language comparison framework, Portland Pattern Repository, 29 November, http://c2.com/cgi/wiki?LanguageComparisonFramework Eisenstadt, M. and Lewis, M.W. (1992) Errors in an interactive programming environment: causes and cures, in M. Eisenstadt, M.T. Keane, and T. Rajan (Eds.) Novice Programming Environments: Explorations in Human-Computer Interaction and Artificial Intelligence, Hillsdale, NJ: Lawrence Erlbaum Associates, http://citeseer.ist.psu.edu/cache/papers/cs/3586 /http:zSzzSzkmi.open.ac. ukzSzmarczSzpaperszSzBookCh5.pdf/errors-in-an-interactive.pdf Emigh, K.L. (2001) The impact of new programming languages on university curriculum, Proceedings of ISECON 2001, Vol. 18, Cincinnati, Ohio, http://isedj.org/isecon/2001/16c/ ISECON.2001.Emigh.pdf Esendal, H.T. (1994) The selection of first programming language, 2nd All-Ireland Conference on the Teaching of Computing, Dublin, Ireland, http://www.ulst.ac.uk/cticomp/esendal.html Fergusson, K. (2003) Anti compiler: an educational tool for first year programming, Honors Thesis, Department of Computer Science, Monash University, http://www.nifwlseirff.net /honours/litreview/final/lit-review.pdf Haga, W.A. and Fustos, J.T. (2002) Weaving a web development curriculum, Proceedings of Informing Science and IT Education Conference, Cork, Ireland, pp.629643, http://proceedings.informingscience.org/IS2002Proceedings/papers/ Haga155Weavi.pdf Howatt, J.W. (1995) A project-based approach to programming language evaluation, ACM SIGPLAN Notices, Vol. 30, No. 7, pp.3740, http://academic.luther.edu/~howaja01/v/lang.pdf Howland, J.E. (1997) Its all in the language: yet another look at the choice of programming language for teaching computer science, Journal of Computing in Small Colleges, Vol. 12, No. 4, pp.5874, http://www.cs.trinity.edu/~jhowland/ccsc97/ccsc97/ Jensen, C. (2004) Choosing a language for .NET development, Borland Developer Network, http://bdn.borland.com/article/0,1410,31849,00.html
137
King, K.N. (1992) The evolution of the programming languages course, Proceedings of the Twenty-Third SIGCSE Technical Symposium on Computer Science Education, Kansas City, Missouri, pp.213219. Klling, M., Koch, B. and Rosenberg, J. (1995) Requirements for a first year object oriented teaching language, Proceedings of the Twenty-Sixth SIGCSE Technical Symposium on Computer Science Education, Nashville, Tennessee, pp.173177. Lawlis, P.K. (1997) Guidelines for Choosing a Computer Language: Support for the Visionary Organization, 2nd edition, Ada Information Clearinghouse, http://archive.adaic.com/docs /reports/lawlis/content.htm Lee, P.A. and Phillips, C. (2002) An assessment of c++ as an introductory teaching language, Technical Report CS-TR: 777, Department of Computing Science, University of Newcastle, http://www.cs.ncl.ac.uk/research/pubs/trs/papers/777.pdf Lee, P.A. and Stroud, R.J. (1996) C++ as an introductory programming language, in M. Woodman (Ed.) Programming Language Choice: Practice and Experience, London: International Thomson Computer Press, pp. 6382, http://www.cs.ncl.ac.uk/old/publications /books/apprentice/InstructorsManual/C++_Choice.html Martin, M. (2003) PHP: putting perl in a jam? The battle for web programming, Computer Bits, Vol. 13, No. 4, http://www.mindbridge.com/news/PerlinaJam.htm McAllister, N. (2004) What do developers want?, InfoWorld, http://www.infoworld.com /article/04/09/24/39FErrdev_1.html McIver, L. (2000) The effect of programming language on error rates of novice programmers, Proceedings of the Twelfth Annual Meeting of the Psychology of Programming Interest Group, Corigliano Calabro, Italy, pp.181192, http://www.ppig.org/papers/12th-mciver.pdf McIver, L. (2002) Evaluating languages and environments for novice programmers, Proceedings of the Fourteenth Annual Meeting of the Psychology of Programming Interest Group, London, UK, pp.100110, http://www.ppig.org/papers/14th-mciver.pdf McIver, L. and Conway, D.M. (1996) Seven deadly sins of introductory programming language design, Proceedings of Software Engineering: Education and Practice (SE:E&P'96), Dunedin, NZ, pp.309316. Milbrandt, G. (1993) Using problem solving to teach a programming language in computer studies, Journal of Computer Science Education, Vol. 8, No. 2, pp.1419. Murtagh, J.L. and Hamilton, J.A. (1998) A comparison of Ada and Pascal in an introductory computer science course, Proceedings of the Annual ACM SIGAda International Conference on Ada, Washington, DC, pp.7580. MVI Solutions (2004) Computer Programming, http://www.mediavue.net/programming /programLanguage/computer_programming.html Paprzycki, M. (2002) Programming Languages, http://www.cs.okstate.edu/~marcin/mp/teach /spring01/408/csc408.html Popyack, J.L. and Herrmann, N. (1993) Mail merge as a first programming language, Proceedings of the 24th SIGCSE Technical Symposium on Computer Science Education, Indianapolis, Indiana, pp.136140. Prechelt, L. (2000) An empirical comparison of C, C++, Java, Perl, Python, Rexx and Tcl, IEEE Computer, Vol. 33, No. 10, http://page.mi.fu-berlin.de/~prechelt/Biblio/jccpprt _computer2000.pdf Princeton Secure Internet Programming Team (1998) Programming Language Support for Security, http://www.cs.princeton.edu/sip/language/ de Raadt, M., Watson, R. and Toleman, M. (2002) Language trends in introductory programming courses, Proceedings of Informing Science and IT Education Conference, Cork, Ireland, pp. 329337, http://www.proceedings.informingscience.org/IS2002Proceedings /papers/deRaa136Langu.pdf
138
de Raadt, M., Watson, R. and Toleman, M. (2003) Introductory programming languages at Australian universities at the beginning of the twenty first century, Journal of Research and Practice in Information Technology, Vol. 35, No. 3, pp.163167. Reed, D. (2001) Rethinking CS0 with JavaScript, Proceedings of the 32nd SIGCSE Technical Symposium on Computer Science Education, Charlotte, North Carolina, pp.100104. Riehle, R. (2003) SEPR and programming language selection, CrossTalk The Journal of Defense Software Engineering, Vol. 16, No. 2, pp. 1317, http://www.stsc.hill.af.mil /crosstalk/2003/02/Riehle.html Roberts, E. (2004) Resources to support the use of java in introductory computer science, Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education, Norfolk, Virginia, pp.233234. Sharp, R. (2002) Programming language lifecycles wheres Java at?, Software Reality, http://www.softwarereality.com/programming/language_lifecycles.jsp Shaw, M., Almes, G.T., Newcomer, J.M., Reid, B.K. and Wulf, W.A. (1981) A comparison of programming languages for software engineering, Software Practice and Experience, Vol. 11, No. 1, pp.152. Sime, M.E., Green, T.R.G. and Guest, D.J. (1973) Psychological evaluation of two conditional constructions used in computer languages, International Journal of Man-Machine Studies, Vol. 5, No. 1, pp.105113. Soloway, E., Bonar, J. and Ehrlich, K. (1989) Cognitive strategies and looping constructs: an empirical study, in E. Soloway and J.C. Spohrer (Eds.) Studying the Novice Programmer, Hillsdale, NJ: Lawrence Erlbaum Associates, pp.853860. Stephenson, C. (2000) A report on high school computer science education in five US states, http://www.holtsoft.com/chris/HSSurveyArt.pdf Stephenson, C. and West, T. (1998) Language choice and key concepts in introductory computer science courses, Journal of Research on Computing in Education, Vol. 31, No. 1, pp.8995. Szafron, D. and Schaeffer, J. (1996) An experiment to measure the usability of parallel programming systems, Concurrency: Practice and Experience, Vol. 8, No. 2, pp.147166. Tharp, A.L. (1982) Selecting the right programming language, Proceedings of the 13th SIGCSE Technical Symposium on Computer Science Education, Indianapolis, Indiana, pp.151155. Tiobe Software (2005) TIOBE Programming Community Index for April 2005, http://www.tiobe .com/tpci.htm Tolmach, A.P. (1999) Evaluating Programming Languages, http://www.cs.pdx.edu/~apt /cs301_1999/lecture3/ Tomblin, S. (2002) Summary of MIS and programming responses, ISWorld Listserv, 19 April, http://www.marshall.edu/ctc/ctc2/MIS_programming_responses.htm Traxler, J. (1994) Teaching programming languages and paradigms, 2nd All-Ireland Conference on the Teaching of Computing, Dublin, Ireland, http://www.ulst.ac.uk/cticomp/traxler.html Voegele, J. (2004) Programming Language Comparison, http://www.jvoegele.com/software /langcomp.html Wallace, C., Martin, P. and Lang, B. (1997) Not whether Java but how Java, CTI Computing Monitor, No. 8, http://www.scism.sbu.ac.uk/jfl/conference/uwe.html Wang, S. (2001) An approach to teaching multiple computer languages, Journal of Information Systems Education, Vol. 12, No. 4, pp.201211. Warren, P. (2001) Teaching programming using scripting languages, The Journal of Computing in Small Colleges, Vol. 17, No. 2, pp.205216. Watson, H. (2002) Programming languages summary, ISWorld Listserv, 28 December http://www.isworld.org/isworldarchives/Teachingmessagedisplay.asp?message=237 Watt, D.A. (2000) Programming languages trends in education, Proceedings of Simposio Brasileiro de Linguagens de Programacao, Recife, Brazil, http://www.dcs.gla.ac.uk/~daw /publications/PLTE.ps
139
Wharton, L. (1995) Should C Replace FORTRAN as the Language of Scientific Programming?, http://www.cs.colorado.edu/~zorn/cs5535/Fall-1995/projects/wharton.ps Wile, D.S. (2002) Programming languages, in J.J. Marciniak (Ed.) Encyclopedia of Software Engineering, 2nd edition, Hoboken, NJ: John Wiley and Sons, pp.10101023. Wilson, G.W. (1997) Tools, languages, and interacting with machines, Dr. Dobbs Journal, July, http://www.ercb.com/ddj/1997/ddj.9707.html Wolz, U. (1997) Language considerations in a goal-centered approach to CS I and II: Java, C, or what?, Journal of Computing in Small Colleges, Vol. 12, No. 5, pp.1220.