Translate

Search This Blog

Total Pageviews

Wednesday, December 5, 2018

BlueJ environment and Objects First approch

BlueJ is a Java development environment that is being developed and maintained by the Computing Education Research Group at the University of Kent in Canterbury, UK, explicitly as an environment for teaching introductory(1st, 2nd year) object-oriented programming.

It is better suited to introductory teaching than other environments for a variety of reasons:
  • The user interface is much simpler. Beginning students can typically use the BlueJ environment in a competent manner after 20 minutes of introduction. From then on, instruction can concentrate on the important concepts at hand—object orientation and Java—and no time needs to be wasted talking about environments, file systems, class paths, or DLL conflicts.
  • The environment supports important teaching tools not available in other environments. One of them is visualization of class structure. BlueJ automatically displays a UML-like diagram representing the classes and relationships in a project. Visualizing these important concepts is a great help to both teachers and students. It is hard to grasp the concept of an object when all you ever see on the screen is lines of code! The diagram notation is a simple subset of UML, again tailored to the needs of beginning students. This makes it easy to understand, but also allows migration to full UML in later courses.
  • One of the most important strengths of the BlueJ environment is the user’s ability to directly create objects of any class, and then to interact with their methods. This creates the opportunity for direct experimentation with objects, with little overhead in the environment. Students can almost “feel” what it means to create an object, call a method, pass a parameter, or receive a return value. They can try out a method immediately after it has been written, without the need to write test drivers. This facility is an invaluable aid in understanding the underlying concepts and language details.
  • BlueJ includes numerous other tools and characteristics that are specifically designed for learners of software development. Some are aimed at helping with understanding fundamental concepts (such as the scope highlighting in the editor), some are designed to introduce additional tools and techniques, such as integrated testing using JUnit, or teamwork using a version control system, such as Git, once the students are ready. Several of these features are unique to the BlueJ environment.
BlueJ is a full Java environment. It is not a cut-down, simplified version of Java for teaching. It runs on top of Oracle’s Java Development Kit, and makes use of the standard compiler and virtual machine. This ensures that it always conforms to the official and most up-to-date Java specification.

The authors of Objects First with JavaTM: A Practical Introduction Using BlueJ, have many years of teaching experience with the BlueJ environment (and many more years without it before that). We both have experienced how the use of BlueJ has increased the involvement, understanding, and activity of students in our courses. One of the authors() is also a developer of the BlueJ system.

                                 Real objects first

One of the reasons for choosing BlueJ was that it allows an approach where teachers truly deal with the important concepts first.

“Objects first” has been a battle cry for many textbook authors and teachers for some time.
Unfortunately, the Java language does not make this noble goal very easy. Numerous hurdles of syntax and detail have to be overcome before the first experience with a living object arises. The minimal Java program to create and call an object typically includes
  1. writing a class;
  2. writing a main method, including concepts such as static methods, parameters, and arrays in the signature;
  3. a statement to create the object (“new”);
  4. an assignment to a variable;
  5. the variable declaration, including variable type;
  6. a method call, using dot notation;
  7. possibly a parameter list.
As a result, textbooks typically either
  • have to work their way through this forbidding list, and only reach objects somewhere around Chapter 4; or
  • use a “Hello, world”-style program with a single static main method as the first example,thus not creating any objects at all.
With BlueJ, this is not a problem. A student can create an object and call its methods as the very first activity! Because users can create and interact with objects directly, concepts such as classes, objects, methods, and parameters can easily be discussed in a concrete manner before looking at the first line of Java syntax.

                                 An iterative approach

Another important aspect of a teaching book is that it follows an iterative style. In the computing education community, a well-known educational design pattern exists that states that important concepts should be taught early and often(The “Early Bird” pattern, in J. Bergin: “Fourteen pedagogical patterns for teaching computer science”, Proceedings of the Fifth European Conference on Pattern Languages of Programs (EuroPLop 2000),
Irsee, Germany, July 2000).
It is very tempting for textbook authors to try and say everything about a topic at the point where it is introduced. For example, it is common, when introducing types, to give a full list of built-in data types, or to discuss all available kinds of loop when introducing the concept of a loop.
These two approaches conflict: we cannot concentrate on discussing important concepts first, and at the same time provide complete coverage of all topics encountered. Our experience with
textbooks is that much of the detail is initially distracting, and has the effect of drowning the important points, thus making them harder to grasp.

In this book we touch on all of the important topics several times, both within the same chapter and across different chapters. Concepts are usually introduced at a level of detail necessary for
understanding and applying the task at hand. They are revisited later in a different context, and understanding deepens as the reader continues through the chapters. This approach also helps to
deal with the frequent occurrence of mutual dependencies between concepts.
Some teachers may not be familiar with an iterative approach. Looking at the first few chapters, teachers used to a more sequential introduction will be surprised about the number of concepts touched on this early. It may seem like a steep learning curve.
It is important to understand that this is not the end of the story. Students are not expected to understand everything about these concepts immediately. Instead, these fundamental concepts will be revisited again and again throughout the book, allowing students to get a deeper and deeper understanding over time. Since their knowledge level changes as they work their way forward, revisiting important topics later allows them to gain a deeper understanding
overall.
We have tried this approach with students many times. It seems that students have fewer problems dealing with it than some long-time teachers. And remember: a steep learning curve is not
a problem as long as you ensure that your students can climb it!

[to be continued..]

Resources

 Objects First with JavaTM: A Practical Introduction Using BlueJ

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.