forked from gdecuzzi/2014-Flamel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
introduction.tex
71 lines (57 loc) · 5.92 KB
/
introduction.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
\section{Introduction}
\label{sec:intro}
% Context
% (a) hay que arrancar introduciendo nuestra visión, contando por qué enseñamos objetos de determinada manera, por qué hicimos Ozono.
% La importancia de arrancar con objetos. -- No sé si arrancar con esto.
\emph{Object-oriented programming} (OOP) has become the \textit{de facto} standard programming paradigm in industrial software development.
Therefore, in the last years software engineering curricula have put more emphasis in object-oriented courses.
% Furthermore, opinion in the community is divided as if it should be the first programming model to be presented.
% Problem
Still, students often have difficulties in learning how to program in an object-oriented style which show up both in academic and in industrial environments.
Several causes have been blamed for the difficulties in OOP learning.
First, OO courses tend to focus too much on syntax and the particular characteristics of a language, instead of focusing on OOP distinctive characteristics.
Second, many OO languages used in introductory courses do require to grasp a lot of quite abstract concepts before being able to build a first program.
Finally, poor programming environments are used, although we are at a time where an unexperienced programmer could be making great use of the guidance a good programming environment could provide.
\np{En realidad algunos de estos problemas no son exclusivos de OOP, habría que ver si queremos decir algo al respecto.}
\medskip
% Known tracks for solutions
% here you want to show that you are not an idiot not knowing what have been around
% Primero hablar de lenguajes específicos para enseñar
There have been several proposals to address the difficulties in introductory OO courses
by defining a specific language which provides a simplified programming model such as Karel++ \cite{bergin_karel++:_1996} \np{¿otros?}.
This approach has been used even outside the OO world \cite{feurzeig_programming-languages_1970, pattis_karel_1981, lopez_nombre_2012}.
% Environments
A step further is to provide a whole programming environment specifically designed to aid novice programmers
such as Squeak \cite{ingalls_back_1997}, Traffic \cite{broy_outside-method_2003} and BlueJ \cite{bennedsen_bluej_2010}.
% Object first
The great differences between these programming languages and environments show that they have to be analyzed in the light of the pedagogical approaches behind them.
The tools are of little use without this pedagogical view.
For example, some educational languages and environments are designed to be used in \textit{object-first} approaches,
\ie for students without any previous programming knowledge \cite{arnow_introduction_1998, bruce_library_2001}.
% Children
Other languages are focused on teaching to children or teenagers, such as Scratch \cite{malan_scratch_2007} and Etoys \cite{lee_empowering_2011}.
% Visualization
Finally, there are many approaches which emphasize the importance of \emph{visualization tools}
to simplify the understanding of the underlying programming model \cite{cooper_teaching_2003, roberts_designing_1998}.
\medskip
% Nuestro trabajo
Previous works from our team \cite{lombardi_instances_2007,lombardi_carlos_alumnos_2008,griggio_programming_2011,spigariol_lucas_ensenando_2013} have described an approach consisting of
(a) a novel path to introduce OO concepts, focusing on objects, messages and polymorphism first, while delaying the introduction of classes and inheritance and
(b) a reduced and graphical programming environment which supports the order in which we introduce the concepts, by allowing to build OO programs without the need of classes.
Our approach focuses on the concepts of object, message, reference and object polymorphism, while delaying the introduction of more abstract concepts such as types, classes and inheritance.
These way of organizing a course provides a more gentle learning curve to students and allows them to write completely working programs from the first week.
% What our solution is \ct{Set} and \ct{OrderedCollection} (so that the reader knows where the paper is going)
% Contribution of the paper
% (b) lo que aprendimos en estos 8 años haciendo eso, que nos lleva a querer darle una vuelta más.
While this approach proved to be successful in providing the students with a more profound knowledge of OOP at the same time as raising pass rates,
we feel that there is still room for improvement, in four areas:
(a) integrating object-based and class-based programs together,
(b) creating automatic ways to produce a graphical user interface (GUI),
(c) enhancing the programming environment with a type inference tool \cite{Miln78a} that helps avoiding some common mistakes
and (d) narrowing the distance between our language and tools with those more frequently used in industrial development.
\np{No sé si hablar de los temas de colecciones, son un poco particulares de Ozono.
También del environment se podrían decir más cosas que sólo el sistema de tipos.}
\medskip
% Paper structure
The rest of the paper is structured as follows. In \secref{problem} we present the problems of learning Object Oriented programming, and the consequences of this difficulties to the students. \secref{wollokLanguage} describes the proposed language and the design goals and ideas we take in consideration for it. In \secref{environment} we describe the integrated development environment we have developed for Wollok and all the features it has and how they are useful for the teaching of programming skills. \secref{discussion} analyses the different design decisions we have taken, while \secref{related} compares our solution with another similar approaches. Finally, we summarize our contributions in \secref{conclusion},
along with some possible lines of further work derived from this initial ideas. As an appendix we have Sections \ref{sec:implementation}, \ref{sec:wollokSoftware} and \ref{sec:ChecksAndValidations} which give more details about the implementation.