Abstract
Introduction Undergraduate programming courses often have high drop-out rates and students have poorly developed programming skills. There has been a continual debate within programming education circles as to how to best solve these problems. The high abstraction level and complexity of the concepts to be learned is a serious impediment to students (for example, see (Rich, Perry, & Guzdial, 2004; Robins, Rountree, & Rountree, 2003) for reviews). However, even basic programming concepts such as and iteration are hard for many students to grasp. These problems had been encountered in the three university-level courses presented in this paper. The three courses vary in their contents, duration, and audience, but the changes made in the courses share two common issues: adoption of Python as the first programming language and the use of the of variables concept as an aid in understanding program behavior. The high drop-out rates (25-50%, (Herrmann et al., 2003; Nagappan et al., 2003; Rich et al., 2004)) and decreasing interest in computer science (Radenski, 2006) have recently been tackled in many universities by using Python as the first language. For example, in Georgia Institute of Technology a CS1 course was designed to attract the interests of women (Guzdial, 2003; Rich et al., 2004), and Chapman University attacked the perception that computer science is a dry and technically difficult discipline (Radenski, 2006)--and in both of the cases the Python language formed a central part of the new course implementation. There is also anecdotal evidence that Python makes programming more fun and thus attracts students (Reges, 2006). In any case, Python's simple syntax makes writing programs much easier than writing comparable programs in Java or C. Roles of (Sajaniemi, 2002) provide students with programming knowledge in a compact form, which they can then apply in authoring and understanding programs independently of the programming language used. In a classroom experiment, explicit teaching of roles has been found to result in better programming skills (Byckling & Sajaniemi, 2006) and in better mental models of programs (Sajaniemi & Kuittinen, 2005). It has also been confirmed that roles of do correspond to classifications naturally used by programming experts (Sajaniemi & Navarro Prieto, 2005), i.e., roles belong to experts' tacit knowledge. The rest of this paper is organized as follows. We first discuss Python as a first programming language and explain the role concept. Then we present the three introductory programming courses and summarize experiences obtained. Finally we discuss the applicability of the roles to Python and list changes and interpretations of individual roles as required by some Python peculiarities. Python and Roles of Variables Python as a First Programming Language Donald E. Knuth (2005) looked at programming languages over the past four decades, and concluded that every decade seems to have a favorite programming language. Although Knuth made no predictions about the favorite language of the current decade, the Python language is a strong candidate. It is clear that no new programming language will be generally accepted before it has been proven technically capable in many applications. In a comparison of seven programming languages (Prechelt, 2000) some key issues of those languages were studied, including the program length, programming effort, runtime efficiency, memory consumption, and reliability. In this comparison Python proved to be a technically capable solution when compared to C, C++, Java, Perl, Rexx, and Tcl. For example, the programs written in Python were among the shortest in length, the variation in their length was among the smallest, and the programming time was also amongst the shortest. As an interpreted language, the memory consumption and running times of Python are of concern, but in the Prechelt (2000) study Python was about average in those aspects. …
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
More From: Journal of Information Technology Education: Research
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.