Difficulties in teaching and learning the Java programming ... - iNEER

Building on previous surveys of the perceived difficulties of Java programming
language topics [14] and, taking into account the points made in the previous ...
The hierarchy of problems associated with teaching and learning Java
programming needs to be established before performing the pair-wise
comparison of AHP.

Part of the document


Difficulties in Teaching and Learning the Java Programming Language

1D. Adair, 2M. Jaeger
Australian College of Kuwait, Mishref, Kuwait, d.adair@ack.edu.kw1;
Australian College of Kuwait, Mishref, Kuwait, m.jaeger@ack.edu.kw2



Abstract

This paper is part of an ongoing effort to improve teaching and learning of
the object-orientated Java programming language for novice programmers at
undergraduate level. An examination of what makes the skill of programming
in Java difficult to acquire is conducted using a method that integrates
triangular fuzzy numbers and the analytic hierarchy process to develop a
fuzzy evaluation model, which prioritizes the relative weights of
difficulties found in the teaching and learning of the Java programming
language. The results derived by the evaluation model can provide a
reference for course designers and teachers seeking to reduce the
difficulties of delivering Java programming courses.

Keywords: Object-orientated programming, learning effectiveness



1. Introduction

Java is an object-orientated, concurrent, distributed, platform-independent
programming language and the object-orientated approach facilitates
structuring programs through composition and inheritance. A design
objective for the Java programming language [1] was to combine a complete,
but minimal set of existing features, and it was specifically designed to
be a safe and simple language with obscure or dangerous language features,
such as pointer arithmetic and arbitrary pointer casts [2] purposely left
out.

Programming using the Java language is a combination of knowledge of the
programming tools and language, problem solving skills, and effective
strategies for program design and implementation. Students however, find
the skill of programming difficult to acquire in general [3, 4]. Teaching
to program using the Java programming language has also proved to be
problematic [5, 6]. This may be due to many factors ranging from
difficulties within the subject and methods used to teach it through to
expectations and attitudes of the teaching staff and their students.
Problems within the subject could be lack of aptitude, cognitive factors
such as learning styles and motivation, the difficulty of programming using
multiple skills and processes, and the choice of the initial programming
language [7]. It has also been found that unless instructors take special
care to introduce the teaching material in a way that limits the complexity
of the Java programming language, details can easily overwhelm introductory
students [8].

Other factors to cause students not to progress well and quickly [7], may
be that programming is a 'novel' subject, quite unlike other university
subjects; programming can be perceived as boring; programming may have a
bad reputation with the image of a "programmer" perceived as poor; and
quite often, programming is taught in an unreasonable compressed time-
scale.

A number of papers have been written which address some of the problems
that often occur when teaching the Java programming language. Experiences
have been related about teaching Java to first and second year
undergraduate courses [9]. The findings of Clark et al. (1998) and others
[10, 11] have identified object-orientated concepts as the fundamental
knowledge which students must know to perform well. Importantly, they state
that introducing students to programming using the simpler procedural
concepts only compounds this difficulty, as the need to always use some
aspect of object-based code in Java cannot be avoided and that attempting
to disguise this eventually causes frustration and confusion, even for good
students. Recent surveys of the views of those working in the field of
teaching Java programming have been provided by [12. 13].

Building on previous surveys of the perceived difficulties of Java
programming language topics [14] and, taking into account the points made
in the previous paragraphs, student surveys were carried out here to
investigate difficulties of teaching and learning Java using a nine-point
rating scale to express the perceived relative importance of any two
criteria at the same level. The first survey concerned the general
difficulties of teaching and learning the Java programming language while
the second concentrated on the difficulties students perceive concerning
the object-orientated aspects of Java. The results were analysed using the
fuzzy analytic hierarchy process (AHP). This is a useful method for solving
complex decision-making problems involving subjective judgment [15] (but
does not fully represent human perceptions and judgments. Fuzzy set theory
[16] does resemble human reasoning, and, by incorporating fuzzy set theory
into AHP, the resulting fuzzy AHP enables a more accurate description of
the multiple-attribute decision-making process [17]. The students surveyed
here were novice programmers taught in a more conventional manner.
Conventional here, means an approach to learning Java programming where the
basics of the programming language are first taught and the students are
then guided towards effective strategies for the more advanced programming
skills. Direct referral to object-orientated programming comes about half
way through the course. The survey was carried out at the end of a semester-
long programming module, while they were in the second-year of an
engineering undergraduate degree course.

The remainder of this paper is structured as follows: Section 2 briefly
describes the fuzzy AHP model, Section 3 giving the empirical analyses of
the surveys and Section 4 presents the research findings with discussion.


2. The Fuzzy AHP Approach

2.1 Hierarchical Structure and Uncertainty

The essential steps in the application of AHP is first to decompose a
general decision problem in a hierarchical fashion into sub- problems that
can be easily comprehended and evaluated, secondly to determine the
priorities of the elements at each level of the decision hierarchy, and,
thirdly to synthesize the priorities to determine the overall priorities of
the decision alternatives.

The hierarchy of problems associated with teaching and learning Java
programming needs to be established before performing the pair-wise
comparison of AHP. After constructing a hierarchy of problems, each
evaluator is asked to compare the elements at a given level on a pair-wise
basis to estimate the relative importance. To compare, the scale used here
is a nine-point scale which shows the participants' judgments among the
options as equally, moderately, strongly, very strongly or extremely
preferred. The discrete scale of 1-9 has the advantages of simplicity and
easiness of use, but does take into account the uncertainty associated with
the evaluator's judgment .

The AHP method [18] indicates that the eigenvector corresponding to the
largest eigenvalue of the pair-wise comparisons matrix provides the
relative priorities of the factors and preserves ordinal preferences among
the alternatives. This means that if an alternative is preferred to
another, its eigenvector component is larger than that of the other. A
vector of weights obtained from the pair-wise comparisons matrix reflects
the relative importance of the various factors. So assuming there are N
number of decision elements, denoted as (E1, ..., Ei, ... En), the judgment
matrix would be A = [aij], in which aij represents the relative importance
of Ei and Ej.

Then, by using the row vector average normalization, the weight of Ei is
calculated as,
[pic] i, j = 1, 2, ..., n
(1)

where wi denote the weight of the ith decision element, and weight vector w
= (wi), i =1, ..., n.

The uncertainty found in human perceptions and judgments is captured using
triangular fuzzy numbers,[pic]to[pic]to represent subjective pair-wise
student perceptions of the problems of programming. A fuzzy number is a
special fuzzy set [pic]where[pic]is a continuous mapping from the real line
R to the closed interval [0, 1]. A triangular fuzzy number denoted as
[pic], where a ? b ? c has the following triangular-type membership
function,
[pic] (2)

Here a and c stand for the smallest possible value and the largest possible
value of the support of[pic], respectively, and b is the most promising
value of[pic] that describe a fuzzy event [19]. The triangular fuzzy number
[pic] is shown on Figure 1.
[pic]
Figure 1: A triangular fuzzy number


In fuzzy AHP, triangular fuzzy numbers are utilized to improve the scaling
scheme in the judgment matrices [20], and interval arithmetic is used to
solve the fuzzy eigenvector [21].

2.2 Fuzzy AHP Algorithm

A computer algorithm for the above methodology was written following the
suggestions of [22]. The following briefly describes the components of the
algorithm.
1. The scores of pair-wise comparison returned on the questionnaires are
used to form
pair-wise comparison matrices for each of the evaluators.

2. Fuzzy judgment matrices are constructed according [16] as,

[pic] (3)

where [pic] is the fuzzy judgment matrix of evaluator k and [pic]are the
fuzzy assessments between the criteria i and j of evaluator k and [pic],
where,

[pic] and