ABSTRACT
Computer science education is drastically affected the
object-oriented paradigm. This can be seen in the numerous new teachers
being attracked to programming languages such as C++, and particularly
Java. Object-orientation provides not simply a new way of pogramming, but
a new of thinking about computing. To promote the object-oriented paradigm,
a re-examination of the teaching practice is needed. This article describes
a new teaching approach rooted in the constructivist epistemology for rethinking
programming in a way that is more consistent with the object-oriented approach.
Keywords
Constructivism, Java, object-oriented programming
1. INTRODUCTION
This article describes a new teaching approach to programming
motivated by principles found in the constructivist epistemology. The need
for developing a new teaching method arose when we realized that the predominant
model of instruction in computer science education - the objectivist
model of learning - was inadequate for most students to learn
object-oriented concepts, because it does not engage the mind appropriately
to successfully tackle the challenges of the object-oriented approach.
Learning the object-oriented paradigm is indeed difficult for most
novice students, mostly because it is more abstract than the procedural
approach. Moreover it requires new ways of thinking and more depth to grasp,
particularly with regard to the analysis and design activities prior to
program coding, and when the problems to be solved were different from
those whose solution was explained previously. The constructivist view
is more appropriate to deal with the pedagogical problems encountered in
switching from the procedural approach to programming to the object-oriented
paradigm, since it takes into account students' prior knowledge in programming
and students' prior experiences in problem solving [5,6]. Moreover, constructivism
offers a potentially powerful way to rethink the pedagogical practice at
the introductory level by stressing the need for the learner to play an
active role in constructing object-oriented knowledge. Constructivism
has been successfully implemented in mathematics and science education
[9,10]. It can be adopted to our field with slight modifications.
The remainder of this article is organized as follows. In section 2 we give an overview over the objectivist and the constructivist model of learning. In section 3 we reconceptualize object-oriented knowledge within the constructivist epistemology. In section 4 we outline a constructivist approach for learning object-oriented programming at the introductory level. Finally, some remarks on further work conclude the article.
2. PARADIGMS OF LEARNING
2.1 The Objectivist Model of Learning
Basically, computer science education relies on the objectivist model of learning which views learning as the passive transmission of knowledge from the teacher to the learner. This model does not suggest that prior knowledge, e.g. procedural programming, can affect current learning, e.g. object-oriented concepts, since its metaphor of mind is that of a blank page, a tabula rasa, waiting to be filled with knowledge [10]. Clearly, the objectivist model of learning does not engage the mind appropriately to go beyond inappropriate prior knowledge [4]. The result is, even after one year of instruction, a lack of conceptual understanding, bad programming habits and serious misconceptions about object-oriented program development. Programming is understood as an art rather than a discipline with principles which guide the development of readable, modular, extensible, and reusable objects [8]. This situation is, to some extent, the result of passive learning: listening to lectures, reading textbooks, and doing programming work without engaging the mind appropriately ito successfully tackle the object-oriented paradigm [5,8].
2.2 The Constructivist Model of Learning
In stark contrast to the objectivist view, the constructivist
perspective regards learning less as the product of passive transmission
than a process of active construction. Learning is an active process
in which learners construct new knowledge based upon their prior knowledge.
Consequently, a constructivist approach to learning needs to probe prior
knowledge and evaluate whether it conflicts with the knowledge being taught.
Similarly, a constructivist methodology needs to evaluate how the procedural
model of programming conflicts with the object-oriented approach. If it
does, new ways must be found of reconstructing the object-oriented concepts;
otherwise there is no guarantee that the object-oriented approach will
be adopted. The constructivist perspective is clearly divergent from the
objectivist model of learning which presumes that knowledge can be
put directly into the learner's head. Interested readers should consult
[1,4,6,7,8,9,10,12] for more details. There are basic principles for
designing a constructivist learning strategy for object-oriented programming.
3.2 Skills for Constructing Object-oriented Knowledge
Structures
The constructivist view asserts the construction of
useful knowledge structures necessitates higher-order thinking skills.
This is consistent with research and the practical experiences of expert
software designers. Insights from software engineers indicate that designers
focus on the overall structure of the software system, that is on the general
functions of the parts and how they interrelate with each other to form
the whole. Moreover, the analysis of the problem domain and the design
of a conceptual model are more central to the development of software than
the code. This means that building interrelated knowledge structures requires
thinking at a higher level than the code level, see [11]. Given this background,
we can distinguish the following categories of higher-order thinking
skills:.
4. A CONSTRUCTIVIST APPROACH TO OBJECT-ORIENTED PROGRAMMING
The goal of a constructivist approach to object-oriented
programming is to help each student to build useful knowledge structures
that can be used for efficient problem solving. When knowledge is structured,
conceptual understanding of problems is enhanced, design, and implementation
ability improves, because object-oriented concepts may be used to understand
problem situations, to design conceptual models, and to choose appropriate
means of implementation. To be successful, a pedagogical approach motivated
by constructivism needs to be organized around a set of activities where
students are actively engaged in the knowledge being learned.
4.1 Characteristics of Activities
The goal of the activities is to motivate the students
to construct useful knowledge structures in the course of problem solving.
Each activity includes four integrated parts:
REFERENCES
[1] Ben-Ari, M. Constructivism in Computer Science.
Proceedings of the 29th SIGCSE Technical Symposium on Computer Science
Education, March 1998, 257-261.
[2] Berg, D.J., and Fritzinger, J.S. Advanced Techniques
for Java Developers, John Wiley & Sons, New York 1998.
[3] Brauer, W. The New Paradigm of Informatics
in: Mauer (ed.). New Results and New Trends in Computer Science, Springer-Verlag,
1991, 15-24.
[4] Floyd, C., et al. (eds.). Software Development
and Reality Construction, Springer-Verlag, 1992, 86-100.
[5] Hadjerrouit, S. Teaching Java as First Programming
Language: A Critical Evaluation. SIGCSE Bulletin, Volume 30, Number
2, June 1998, 43-47.
[6] Hadjerrouit. S. A Constructivist Approach for
Integrating the Java Paradigm into the Undergraduate Curriculum. Proceedings
of the 3th Annual Conference on ITiCSE, August 1998, 105-107.
[7] Hadjerrouit, S. Educational Impacts of the New
Paradigm of Informatics.Proceedings of the Norwegian Annual Conference
on Computer Science, Tapir 1998, pp. 185-194.
[8] Kafai, Y., and Resnick, M. (eds.). Constructionism
in Practice: Designing, Thinking, and Learning in a Digital World,
Lawrence Erlbaum Associates, New Jersey, 1996.
[9] Mereno-Seco, F., and Forcada, M.L. Learning Compiler
Design as Research Activity. Computer Science Education 7, 73-98, 1996.
[10] Phye, G..D. (ed.). Handbook of Academic Learning:
Construction of Knowledge, Academic Press, London 1997.
[11] Steffe, L.P., and Gale, J. (eds.). Constructivism
in Education, Lawrence Erlbaum Associates, New Jersey 1995.
[12] Sims-Knight, J.E., and Upchurch, R.L. Teaching
Object-Oriented Design Without Programming: A Progress Report. Computer
Science Education 4, 135-156, 1993.
[13] Spivey, N. N. The Constructivist Metaphor: Reading,
Writing, and the Making of Meaning, Academic Press, London 1997.
[14] Tewari, R., and Friedman, F. L. A Framework for
Incorporating Object-Oriented Software Engineering in the Undergraduate
Curriculum. Computer Science Education 4, 45-62, 1993.
[13] Stein, L.A. Interactive Programming: Revolutionizing
Introductory Computer Science. ACM Computing Surveys, 28A(4), December
1996.
[14] Sun Microsystems. http://java.sun.com/
-----------------
Traditional modes of instruction based on passive learning are not adequate for the construction of useful knowledge.
Object-orientation is the common pattern of Java conceptual knowledge
Being able to develop solutions at this level becomes fundamental for paradigm shift.
From a constructivist position, there is no objective, fixed knowledge. This means that we do not apply predefined concepts, but we construct them based upon our prior knowledge. Secondly, we do not refer to fixed means of implementation. Instead the meaningful use of means is constructed in the course of problem solving. Finally, problem requirements are not given, but constructed to suit the situation in hand. Moreover,
The constructivist view is more adequate for learning new concepts.
This view of learning relies on the traditional scientific paradigm - often called rationalism or positivism - which assumes that scientific knowledge exits independently of the mind of the observer, and is therefore objective. Consequently, this model does not suggest that prior knowledge can affect current learning, since its metaphor of mind is that of a blank page, a tabula rasa, waiting to be filled with knowledge [10]. As a result, the objectivist model of learning does not engage the mind appropriately to reorganize knowledge into a useful system. Instead, it emphasizes mathematical problem solving and technical ideals detached from the characteristics of the learner [4].
There are basic principles for how to design a constructivist teaching and learning strategy. First, knowledge is actively constructed by learners, not passively transmitted by teachers. Second, learners construct new knowledg, e.g. objects, based upon their prior knowledge. Third, the learning process is more important than the result. Moreover, knowledge needs to be structured in order to be useful for problem solving. The process of building knowledge structures requires higher-order thinking skills. In addition, to get students actively involved in problem solving, learning should focus around a set of realistic, intrinsically motivating problems. Finally, traditional modes of instruction such as lectures should be replaced by a set of activities where learners are actively engaged in the knowledge being constructe
To develop a constructivist approach to programming, object-oriented
knowledge must be reconceptualized within the constructivist epistemology.