TEACHING JAVA PROGRAMMING: DETERMINING THE NEEDS OF FIRST YEAR STUDENTS H.M. Sayers
M.A. Nicell
S.J. Hagan
University of Ulster University of Ulster University of Ulster Magee Campus Magee Campus Magee Campus Londonderry Londonderry Londonderry
[email protected] [email protected] [email protected] http://www.infm.ulst.ac.uk/~heather http://www.infm.ulst.ac.uk/~mairin http://www.infm.ulst.ac.uk/~stephen “male oriented” leading to perhaps less than optimistic expectations of success even before the students begin their studies.
ABSTRACT Java is used to teach introductory programming to a large cohort enrolled on a variety of degree programmes presented on the University of Ulster’s Magee Campus. Typically the class is composed of a medley of mixed ability students, ranging widely in age, experience (and motivation!). The module is taught through the traditional medium of lectures underpinned by tutorials and practical laboratory classes. Each year student performance in programming frequently presents a significant hurdle to their academic progression. In planning for the delivery of material, assumptions are made by the lecturer as to what students will find the most intellectually challenging aspects – but are these assumptions correct? This paper presents the findings from a study into student experiences with a first year programming module using Java, and records the teaching team’s response in drafting tailored self-study support material presented within a guided WebCT environment.
The effectiveness of the traditional lecture as a platform for teaching programming is a subject of much debate. Jenkins (1997) came to the conclusion that lectures are ineffective for teaching programming to novices - although they were found to be reasonably effective in conveying basic syntax and semantics to students, they were ineffective in preparing students to put the theory into practice – a problem deepened by the “tactical” or “strategic” student interested only in achieving grades and not in learning how to program (Jenkins, 1998). Undoubtedly, programming is best learned through practice – programming is a skill, not just a collection of information absorbed by the learner. Jenkins, in his later work of 2001 in which Biggs’ (1999) three levels of reflection on teaching are discussed, stresses the role of the teacher’s job as a motivator (level 3) and places the role of communicating information such as the basics of syntax firmly in second place (Jenkins, 2001). Attempts have been made to incorporate different methods of communicating information in traditional lectures in order to encourage more student participation and these are widely reported in current literature (Jenkins, 1998; Wolfman, 2002; nic Gearailt, 2002). There have also been efforts to categorise students into different learning/ability groups prior to orchestrating specific teaching techniques and assessment strategies towards each depending on identified needs (Davis et al., 2001; Jenkins & Davy, 2000). These efforts have enjoyed varying degrees of success. Further, their educational benefit is questioned as to whether they produce better results (i.e. an increased understanding of the subject) or merely increase the numbers of students who successfully pass the module.
Keywords Java programming, WebCT
1. INTRODUCTION Within the modular degree structure hosted by the School of Computing and Intelligent Systems at the University of Ulster, introductory computer programming is undertaken by approximately one hundred and fifty students every year. Of these, only around 40% are enrolled on mainstream computing degree courses. Teaching programming to a large and very diverse group poses a unique challenge which is compounded by a preconception within the student body that the topic is “hard” and Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission.
As class sizes increase, there seems to be no reasonable alternative to maintaining formal lectures as kernel within the delivery framework. The focus of this study is not, therefore, aimed at alternatives to this approach but at supplements
4th Annual LTSN-ICS Conference, NUI Galway © 2003 LTSN Centre for Information and Computer Sciences
106
Of the 15% who claimed previous programming experience, more than 50% rated their ability either poor or very poor. For the purposes of this study, therefore, approximately 93% of the class were considered to have little or no confidence in their programming skills prior to undertaking the module.
drafted in direct response to what students report as the most challenging aspects. The 2002/3 first year students (who formed the subjects of this work) receive three hours of lectures, two hours of practical sessions and one hour of tutorial each week. The practical sessions and the tutorials underpin the material covered in the lectures. Students are presented with staged programming problems which map to the material presented in the preceding lecture. This work is undertaken during supervised practical sessions, with the following tutorials affording the opportunity to ‘trouble shoot’ difficulties encountered.
100
40
Printing to the screen;
Reading in data from the keyboard;
Selection (if and switch statements);
Iteration (for, while and do..while loops);
Arrays;
Methods (parameter passing).
GENDER
Percent
20 15
14
Male
0
Female Yes
No
Have you any previous programming experience?
Figure 1: Previous Programming Experience 50
40
30
20
GENDER
10
Percent
Storing values in the computer’s memory;
85
60
The specific aim of the module of study is to present the concepts and techniques of programming (appropriate to year one of a taught three-year BSc(Hons) Computing Science degree) and how to express them in Java, not to teach the whole of the Java language. As such, the introductory topics covered included:
86
80
2. ASSUMPTIONS
8
3 Very Poor
Teaching experience of the topics above led to assumptions by lecturing staff about how difficult students would find the material. Arrays and parameter passing in methods were considered to be the most difficult topics to master, followed by iteration, selection and input/output.
Male
7
0 Poor
5
5
Average
2
Female
Good
If yes, how would you rate your skills?
Figure 2: Previous Programming Skill
4. THE EVALUATION The class was unevenly divided by gender with twothirds male, so it was decided to additionally split results by gender for comparative purposes. The end-of-semester questionnaire asked students to assess the difficulty of each of the topics listed in Section 1 above on a five point scale, higher scores indicating a higher level of difficulty. The results are graphed for both genders.
A qualitative study was undertaken to test these assumptions. Two questionnaires were distributed to the student group, one at the beginning and one at the end of the twelve-week semester. The first questionnaire was designed to ascertain the level of programming experience within the class, while the second was designed to assess students’ perception of the difficulty of each of the topics covered throughout the module. The results are presented in the following sections.
It is interesting to note from the data presented in Figures 3 and 4 that very little differences in the mean rating of difficulty were found by gender. As expected, students found the concepts presented increasingly difficult as the module progressed, with arrays and methods rated the most difficult. Iteration, while rated more difficult than variables/data types, input/output and selection, was still rated mainly “OK”. This confirmed the assumptions held by the module tutor at the outset.
3. THE STARTING POINT The majority of students (85%) within the 2002/3 cohort had no previous programming experience. The questionnaire invited students who had some experience to rate their ability on a scale of 1 to 4 with 1 being very poor, 2 poor, 3 average, and 4 good. The results are presented in Figures 1 and 2 below:
Having identified ‘arrays’ and ‘methods’ as the topics needing immediate attention, the authors
107
It was decided to divide the support material into three main sections: tutorials, worked examples and practice tests. The tutorials section aims to provide a more in-depth coverage of weekly lecture materials with further references and examples. The worked examples section aims to display further programming problems, with worked solutions demonstrated step-by-step. Further, more challenging problems are also presented for those “Rocket Scientists” (Jenkins, 2000) or “Space Cadets” (Davis et al., 2001) who are perhaps finding the module too easy.
moved to draft tailored online support for these topics. Difficulty Ratings 1=very easy,2=easy,3=OK,4=difficult,5=very difficult 5.0 4.5 4.0 3.5 variables/data types
3.0
output
2.5
Mean
The practice tests (which are not assessed) are presented as a means for students to gauge their own knowledge and progress. These can be repeated as many times as required. The opening page of the developed environment presents the students with links to all of the available resources. Figure 5 presents a sample of the tutorial on arrays, and Figure 6 presents a sample of the worked examples for methods. Practice Tests have been designed for both arrays and methods – an example of a test for methods is displayed in Figure 7 below.
input
2.0
if statements
1.5 1.0
switch statements Male
Female
GENDER
Figure 3: Variables, I/O and selection statements
Difficulty Ratings 1=very easy,2=easy,3=OK,4=difficult,5=very difficult 5.0
6. CONCLUSIONS AND FUTURE WORK
4.5 4.0 3.5 for loops
3.0
while loops
2.5
do-while loops
Mean
2.0
arrays
1.5 1.0
methods Male
Female
GENDER
Figure 4: Iteration, arrays and methods
5. SUPPLEMENTARY MATERIALS: ADDRESSING NEEDS
The aim of this study was to gather preliminary information about how students rate the difficulty of the programming concepts encountered during their first programming module. The findings confirmed the instructors’ initial assumptions. Students, both male and female, find arrays and methods the most challenging aspects of the material presented thus far. The challenge for us now is to structure examples and exercises in a meaningful and effective way in order to encourage students to think about the concepts. We are aware of the great diversity of backgrounds, ages, abilities, motivation etc. within the class and aim to try to accommodate these as much as possible through the provision of online support materials. The initial design of the support materials for arrays and methods is presented here and the intention is that this material will be further enriched and expanded for the next academic year. It remains, then, for an assessment of these resources to be conducted along with a more quantitative evaluation based on coursework and examination results obtained by the students.
It is our intention to provide online support materials for all the Java concepts covered in this first semester module in time for the next academic year and to subsequently ask students to assess their usefulness. The work currently completed for arrays and methods is presented here. The University of Ulster has purchased WebCT as an online teaching resource facilitator and has been encouraging its use as much as possible. Students already have online access to module information (lecture notes, practical exercises etc.), so it was decided to use WebCT to present our support materials and to provide a link to these resources from our existing website.
108
Figure 5: The Arrays Tutorial
Figure 6: A Worked Example for Methods
109
Figure 7: A Practice Test for Methods
2nd Annual Conference 2001, University of North London
7. REFERENCES [1] Davis, H.C., Carr, L., Cooke, E., & White, S., (2001) Managing Diversity: Experiences Teaching Programming Principles, LTSN-ICS 2nd Annual Conference 2001, University of North London
[4] Jenkins, T., & Davy, J., (2000) Dealing With Diversity in Introductory Programming, LTSNICS 1st Annual Conference 2000, Heriot-Watt University, Edinburgh [5] nic Gearailt, A. (2002) Using Java to increase Active Learning in Programming Courses, Principles and Practice of Programming in Java, Trinity College Dublin, June, 2002
[2] Jenkins, T. (1998) A Participative Approach to Teaching Programming, Integrating Technology into Computer Science Education, Dublin City University, 1998, ACM Press, 125129
[6] Wolfman, S., (2002) Making Lemonade: Exploring the Bright Side of Large Lecture Classes, 33rd SIGCSE Technical Symposium on Computer Science Education, 2002
[3] Jenkins, T. (2001) Teaching Programming – A Journey from Teacher to Motivator, LTSN-ICS
110