"Object-Oriented Programming Through The Lens of Computer Science Education
"Object-Oriented Programming Through The Lens of Computer Science Education
Amal Marea1
Abstract: Despite the fact that object-oriented programming has found its way into the industry
long time ago and relatively later into the education system, finding the right methodology to learn
it and to teach it is still a challenge. However, attempts are still being made to find the most effective
approach to introduce the object-oriented paradigm to students. In this paper, the concentration is
on designing an introductory level course by identifying the main concepts of object-oriented
programming, finding the right methodology to teach it and to bring to light ways to evaluate the
progress and performance of novice programmers, which is one of the most challenging aspect of
teaching programming in general.
Keywords: Object oriented language, novice programmer, introductory course, Minimally Invasive
programming course, object first, object last, industrial language, educational language, competency
model, concept map, item response theory.
1 Introduction
The spread of affordable personal computer in the 1980s had exposed many shortcomings
of the programming paradigm that was predominant at that time, namely the procedural
paradigm. Moreover the number of embedded system was increasing with time which
meant that the demand for secure software was also increased, which is after all not a
strength point of the imperative programs, since they are more prone to errors, which are
as well harder to debug. In opposition, object-oriented languages were designed to reduce
the likelihood of programming errors. Furthermore, the need for re-usability presented
itself and was met by introducing inheritance.
Nonetheless, the object orientation was not developed overnight, but rather through the
development of specific programming languages, each of which incorporated new
concepts and expanded the other object-oriented concepts of other languages. Simula was
the first object-oriented language to be developed whose development started 1962 and
ended with Simul67, which announced the central role of objects, classes and inheritance.
Several other object-oriented languages were form there on developed. For example,
Smalltalk that was developed in 1970s and Eiffel in 1980s.
1
Institut für Informatik/Freie Universität Berlin, [email protected]
Amal Marea
In the meanwhile, features of object orientation like object, class and inheritance were
added to some imperative languages like C and Pascal and by doing this, C++ and Trubo
Pascal were invented.
In the 1990s java was developed, which is another hybrid language that combines the
object-orientated and the procedural paradigms.
The main reference of this paper is the work of Marc-Pascal Berges, whose goal was to
design an experimental introductory course for object-oriented programming as a
preliminary course in the Department of Computer Science at the TU München.
The design of the course was conducted after a deep review of the literature on computer
science education to find out:
3.1 Concepts
There is a wide variety of views of object orientation and consequently there is a broad
variety of concepts related to this relatively new paradigm. To solve this problem a
literature review was done by Armstrong in 2006 to identify the main concepts of object-
oriented programming as it presented in the literature.
Armstrong identified 8 concepts, that appeared in more than 50% of the reviewed
literature, namely Inheritance, Object, Class, Encapsulation, Method, Message Passing,
Polymorphism, and Abstraction.
3.2 Methodology
After identifying the main concepts of object-oriented programming, the natural question
to ask would be: How to introduce them and which methodology to use?
The main approaches are object-first and object-last. Object-last is the more prominent
approach, in which algorithmic concepts and control flow and structure get introduced
first and then a transition to the object-orientation is made by introducing the modeling
aspect of object-orientation. This approach makes it harder for students to understand the
concepts of object-orientation, especially to differentiate between an object and a class.
As stated in the introduction, there are pure object-oriented languages like Smalltalk and
Eiffel and there are the industrial languages that are widely used but not purely object-
oriented like C++ and java.
Pure object-oriented languages are considered educational languages since they are more
suitable for educational purposes compared with the industrial languages which make it
more confusing for the students to understand the concepts of the object-orientation.
Amal Marea
Another important issue related to the choice of the suitable programming language is the
development environment. An environment that provides a graphical representation of the
objects and their relation to each other is very beneficial for the understanding of the
concepts of the object-oriented paradigm. An example of that is "ObjectDraw" which is a
java library that support the teaching of the language by aiding the development of
programs through drawing elementary graphics.
A focus on the modeling aspect is noticed, where the programming is used as a tool to
implement the object-oriented model, which shows that programming is of lower
importance in the standard curricula. The competency model focus as well on the
modeling aspect with less focus on the programming. Nevertheless, most concepts of
object-orientation are covered by both, the curricula and the competency model.
Meanwhile the object last or the classical procedural approach remains the main
methodology used to teach object-oriented programming.
The followings theories were taken into account when the introductory course mentioned
previously was designed.
4.1 Constructivism
Motivation is neither purely intrinsic, nor purely shaped by external stimuli, is what the
social cognitive theory argues for. After studying the influence of social interaction on the
learning process, it was noticed that human beings function in reciprocation with their
environment and that they have the following capabilities that affects the learning process:
As it was above in the last two points of the social cognitive theory disclosed, self-
regulation and self-reflection are part of human beings’ capabilities and are in general part
of the human psychological development. This on the other hand indicates that the
learning process can be initiated by individuals without interference of the environment or
others.
In practice, self-directed learning occurs in groups with the help of an instructor, a teacher
or a tutor. However, the student-teacher relationship is redefined as a cooperation between
the student and the teacher and does not conform to the classical model of teacher-centered
strategy, where the teacher is responsible for engaging the students, setting learning goals,
learning resources and strategies.
It worth mentioning that the success of this approach depends on the level of motivation
of the participating student, since the teachers’ only role is to facilitate the learning
process.
While most studies focus on learning to program through instruction, the introductory
course was designed to be minimally invasive with little direct instruction. The courses
material was available as well as a peer tutor. Even though the student were divided into
homogenous groups based of their previous programming knowledge, they had to work
individually.
Amal Marea
Evaluation is very important step to be able to measure the progress of the students and
the success of the methodologies used in the educational process to achieve the preplanned
didactic goals. Nevertheless, when it comes to programming, evaluating the abilities of
the programmers is challenging since computer science education is relatively new subject
and due to the lack of a competency model, which specifies the set of skills and abilities
needed to be gained by novices. Despite that, efforts are made to develop one and in the
research in hand two approaches were used, namely evaluating the knowledge gain and
evaluating the code.
By using concept maps the conceptual knowledge of the participates was evaluated. A
concept map is a graphical representation of knowledge as concepts and the relation
between them. The students were asked before the begging of the course and based on
their intuition or previous knowledge, in case they were already familiar with the concepts
of object-orientation, to draw a concept map. The same was done after the end of the
course. This tool didn't only show how much knowledge did the student gained but helped
as well to identify the misconceptions that they had. Moreover, the same maps were used
to compare the conceptual understanding to the programs' code, which helped to shed
some light on the questions:
1. Does knowing a concept lead to implement it in the code?
2. If concepts get implement in the code even though they were not really
understood?
Fig. 1: The map to the left was drawn before the course and the one to left after
Object-orientation in Education
The methodology used to evaluate the code is based on the item response theory, which is
a Paradigm for scoring to measure abilities or attitudes, based on the performance on a test
item versus the classical test-level. More specifically, a list of code items were created by
a direct mapping to the concepts of object-oriented programming. Furthermore, the
presence of a syntax element in the code indicates the use of a specific item, for example,
the syntax element “extends” indicates the use of the code item "inheritance" and the use
of the syntax element “new” shows an implementation of the code item "object" and so
on. In addition, for each of the code items the relative frequency of application in the
program code is calculated.
The result of the evaluation reflects the skills of the programmer gained, as well as those
skills that need more studying and practice. In comparison, the classical test-level
methodology does not give that information directly.
6 Conclusion
6.1 References