A Constructivist Framework for Integrating the Java Paradigm into the Undergraduate Curriculum Said Hadjerrouit Department of Mathematics Agder College 4604 Kristiansand, Norway (+47)38 141793 Said.Hadjerrouit@ To produce a new generation of studentsskilled in Java, all these courses are important, but in themselves they are insufficient if they are not taught from the perspective of developing a strong Java foundation. Java is a new technology designed to promote a new way of thinking about computing. What is occurring is a paradigm shift, a radical change away from conventional design and programming methodsbasedon stand-aloneapplications to a networked, concurrent, interactive and object-oriented computing paradigm, see [6]. To be completely adopted, the paradigm should be introduced at an early point and strengthened throughout the whole undergraduate curriculum. A single course is not enough. A sequenceof interdependentcoursesis needed.Given this background, it is useful to examine the pedagogical issues of paradigm shift. Following this examination, we believe that a pedagogical framework motivated by principles found in constructivism can make important contributions to the learning of the Java paradigm. Constructivism is an excellent point of reference,becauseit is widely considered to be a very important contribution to the learning process PI. 1. ABSTRACT The educational use of Java at the introductory level is still in its infancy and effective teaching strategies are only beginning to emerge. Java is a new technology designed to promote a new computing paradigm. To produce a new generation of students skilled in Java, undergraduate computer science should be taught from the perspective of developing a strong Java foundation. This paper describes a pedagogical framework motivated by principles found in the constructivist learning theory for integrating the Java paradigm into the undergraduate curriculum. 1.1 Keywords Javaparadigm, constructivism, undergraduatecurriculum. 2. INTRODUCTION For the past three semesters we have taught four undergraduatecomputer science coursesusing Java. In the fall semester of 1996 we began to teach object-oriented programming. This was followed in the spring of 1997 by a course in data structures and a programming laboratory project. To teach the basic concepts of the WWW and elementary Java, we designed an “Introduction to Computing” course in the fall semesterof 1997. Finally, we will develop two new courses based on Java, software engineering and computer graphics. 3. CONSTRUCTIVIST INTEGRATING JAVA PRINCIPLES FOR Constructivism representsthe most significant alternative to me traditional view of education which considers learning as the passive transmission of knowledge. From a constructivist point of view, knowledge is constructed, not transmitted.Learning is an active processin which learners construct new concepts based upon their prior knowledge. In order to be useful for problem solving, conceptsneed to be structured and integrated. To get students actively involved in problem solving, learning should focus around a set of realistic, intrinsically motivating problems. With the constructivist model, lectures are replaced by a set of activities designed to encouragestudentsto solve problems and to construct the concepts of the subject. The reader interested in more details is referred to [1,3,4,5]. Our approach is constructivist in nature, in that it takes into accountstudents’ prior knowledge, Java concepts,including 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 and/or a fee. ITiCSE ‘98 Dublin, Ireland 0 1998 ACM l-58113-000-7/98/0008... hia.no $5.00 105 the Java programming environment, as well as motivational aspects,and learning activities. difficult for the students to learn object-oriented design. One difficulty with these students was a tendency to use methods as procedures, or to expand methods into large procedures, while ignoring any adequate use of methods according to the object-oriented approach. In addition, students regarded the role of Java concepts in guiding problem solving as unnecessaryand did not integrate them into their programming practices. These observations are compatible with the constructivist learning theory which asserts that students construct new concepts based upon their prior knowledge. To avoid the difficulty of interference with prior experience, a constructivist methodology for learning Java should identify students’ prior knowledge, because many of the pre-existing conceptionsare persistentthroughout the whole curriculum. 3.1 Java Concepts It is critical to understand that Java is not only a programming language, but that it is also an emerging paradigm with a set of fundamental concepts that can be used 10 explore a wide range of problems that was previously beyond the reach of computing: . The concept of object for designing software as a set of interacting objects. . The concept of graphical user interface for modelling interactions with software systems. . The concept of concurrency for specifying parallel processesthat handle different tasks. . The concept of networking for creating distributed systemswithin the Internet. . The concept of multimedia for integrating text, colours, graphics, sounds,and images. By viewing Java as a computing paradigm organisedaround a set of fundamental concepts, constructivist methods for teaching and learning Java concepts become available for use. From a constructivist point of view, conceptscannot, in principle, be learned simply by decontextualised definitions independently of problem situations. To be fully understood, they must be constructed through inquiry and hands-on activities. These activities contain problem situations that motivate the students to construct the conceptsof the Java paradigm. 3.2 Java Programming Environment Java programs run in a rich computing environment that includes the Java Development Kit (JDK), the World Wide Web, visual application builder tools, and many other features.This environment has powerful tools that provide support for problem solving, but the class library of Java is very large so that many students get confused by the number of Java classes and methods, see [‘2]. Thus, trying to master Java tools while learning Java concepts can easily overwhelm students. However, from a constructivist point of view, the concern is not so much masteringthe tools, but rather using the tools to solve problems. This includes the ability to find the relevant tools, and to be able to use them to solve problems. In many ways, tools are similar to concepts: They can only be fully understood through activity and problem solving. 3.4 Students’ Motivation The goal of constructivism is to engagestudentsin effective learning. Activities that are more likely to result in effective learning are those that are perceived as interesting, important, and profitable. Accordingly, the learning of Java conceptsshould focus around a set of realistic, intrinsically interesting problems that motivate students to solve them. In addition to interesting content, there are plausible reasonsfor the studentsto learn Java. Firstly, Java opensup new possibilities on the Web. Secondly, it is suitable for job assignments.Moreover, it provides a strong foundation for further elaboration in subsequentcourses.Finally, Java can be used to explore a wide range of problems that was previously beyond the reach of computer science. Clearly, teachers should not undereslimate the importance of motivational aspects since the use of a technology that students enjoy furthers the learning process and increases the students’ acceptanceof the Javaparadigm. 3.5 Learning Activities Our problem solving approachis constructivist in nature, in that it is organised around a set of activities. Each activity includes a problem situation and open-endedquestions that probe students’ understanding and encourage them to construct the conceptsand techniquesof the Java paradigm. The activities are designed with the following goals: . 3.3 Prior Knowledge Understanding that prior knowledge can be detrimental to current learning is quite useful to know. When our students were introduced to Java, see [2], we observedLhatstudents’ prior experience in procedural languages was, to some extent, a significant epistemological obstacle that made it Identify students’ preconceptions. We know that preconceptions, e.g. procedural programming, interfere with the learning of Java concepts.This prior programming experience is, to some extent, a significant barrier that makesit difficult to understand the new concepts [2]. Our experience suggeststhat the best way to overcome these preconceptions is for students to confront them. Thus, learning activities should involve problem situations that lead studentsto recognise that their approach is manifestly inadequate. Then, we introduce Java concepts, e.g. objectoriented concepts, as a way to modify students’ prior knowledge. 106 l discuss the role of Java concepts in problem solving, many students often focus on programming issues rather than on the conceptual aspects.They perceive programming as being primary and the conceptual aspectsas being abstractions.However, they fail when asked questions that probe for understanding of the concepts underlying the problems’ solutions [2]. Clearly, to understand Java concepts properly, problem solving should begin at the conceptual level, not at the code level where programming becomesthe main issue. Furthermore, substantial attention should be devoted to the meta-level process required to develop solutions. This process is inextricably a product of higher-order reasoning, such as exploring the problem, designing a conceptual model, developing an algorithmic solution, evaluating and assessingthe outcome. Higher-order thinking skills cannot, in principle, be learned as abstract concepts independently of problem solving. . . . problem solving. There are many ways of integrating Java knowledge. Firstly, by constantly using Java concepts in new contexts in order to increase the number of connections between the concepts and problem situations. Secondly, by looking for connectionsbetween the concepts themselvesin order to develop a structured view of Java concepts.Finally, by learning to relate new concepts to previous ones to enablea gradual construction of Java knowledge. Emphasise the role of concepts and higher-order reasoning skills in problem solving. Although we Provide adequate and appropriate tools. Successful Java programming dependsupon the use of Java tools. However, learning how to use the tools involves more than a set of explicit rules. The conditions for using the tools arise directly out of the context of the activities. The concern is not so much mastering the tools, but rather learning to use the tools to solve problems. Thus, it is more important that studentsgain somepractical familiarity with the tools which would allow them to focus upon more complex issues of problem solving. The best way to do this is for students to use visual application builder tools right from the start, such as Java Workshop 2.0. Using visual tools is indeed a very exciting, but not difficult experience for most students. Focus on realistic, intrinsically motivating problems. To construct Java concepts, Java tools in themselves are not sufficient. To be profitable and effective, tools should be integrated into the larger task of problem solving. It is the practical problem that should motivate students to learn the tools and to construct the Java concepts, as opposed to presenting the conceptsand the tools with decontextualisedexamples and definitions independently of problem solving. Thus, a problem solving approach motivated by constructivism should begin with intellectually stimulating, realistic, and intrinsically motivating problems. Promote knowledge integration. Integrated knowledge is extremely useful for conceptual understanding and 4. CONCLUSION Java is increasingly becoming a paradigm for learning concurrency, networking, interactive computing and objectoriented design. To produce a new generation of students skilled in the paradigm, Java should be introduced at an early stage and strengthened throughout the whole undergraduate curriculum. To do this successfully, a pedagogical approach motivated by principles found in the constructivist learning theory is recommended. The approach should emphasisethe role of Java concepts, the Java programming environment, motivational aspects, students’ prior knowledge, and learning activities. Of late, on the basis of the ideas developed in this paper, we have been rethinking our strategy for integrating the Java paradigm into the undergraduate computer science curriculum. 5. REFERENCES [l] Duffy,T. M., Lowyck, J. and Jonassen, D.H. (eds.). Designing Environments for Constructive Learning, Springer-Verlag, Berlin 1993. [2] Hadjerrouit, S. Teaching Java as First Programming Language: A Critical Evaluation. Proceedings of the Norwegian Annual Conference on Computer Science, Tapir, Trondheim 1997, 183-194. [3] Kafai, Y. and Resnick, M. (eds.). Constructionism in Practice: Designing, Thinking, and Learning in a Digital World, Lawrence Erlbaum Associates, Publishers,New Jersey 1996. [4] Phye, G. D. (ed.). Handbook of Academic Learning: Construction of Knowledge, Academic Press,London 1997. [5] Steffe, L.P. and Gale, J. (eds.). Constructivism in Education, Lawrence Erlbaum Associates, Publishers, New Jersey 1995. [6] Stein, L.A. Beyond Objects, Educator’s Symposium. Conferenceon Object-Oriented Programming Systems, Languages, and Applications, Atlanta Georgia, October 1997. 107