Вы находитесь на странице: 1из 417

Uso do Second Life no Suporte à Aprendizagem Contextualizada de Programação

Tese de Doutoramento apresentada por

Maria Micaela Gonçalves Pinto Dinis Esteves

Sob orientação do Professor Doutor Benjamim Fonseca e do Professor Doutor Leonel Morgado

Universidade de Trás-os-Montes e Alto Douro Escola de Ciências e Tecnologia Departamento de Engenharias

2010

Tese apresentada por Maria Micaela Gonçalves Pinto Dinis Esteves à Universidade de Trás-os-Montes e Alto Douro para cumprimento dos requisitos necessários à obtenção do grau de Doutor em Informática, sob orientação do Professor Doutor José Benjamim Ribeiro da Fonseca, Professor Auxiliar do Departamento de Engenharias, da Escola de Ciências e Tecnologia da Universidade de Trás-os-Montes e Alto Douro e co-orientado pelo Professor Doutor Leonel Caseiro Morgado, Professor Auxiliar do Departamento de Engenharias, da Escola de Ciências e Tecnologia da Universidade de Trás-os-Montes e Alto Douro.

Agradecimentos

A presente tese resultou do trabalho, esforço e dedicação da sua autora e do conjunto de pessoas que de alguma forma a incentivaram, apoiaram e colaboraram para que esta se concretizasse. Por isso pretendo expressar nesta nota o meu agradecimento a todos aqueles que directa ou indirectamente me ajudaram.

Aos Professores Doutores Benjamim Fonseca e Leonel Morgado, orientadores desta tese, a quem expresso a minha gratidão e agradecimento, pelo precioso apoio na orientação e no incansável trabalho de acompanhamento prestado ao longo de todo este processo, sem os quais seria impossível concluí-lo com êxito.

Aos professores Doutores Bulas Cruz e Paulo Martins pelo apoio constante na realização deste trabalho.

Ao Professor Doutor António Pereira pelo carinho e incentivo manifestado ao longo desta jornada.

Aos alunos que se voluntariaram para participar neste projecto, sem a sua disponibilidade este estudo não existiria.

À Ivone Lopes e ao Luís Mendes pelo apoio e incentivo dado especialmente nas

revisões do Inglês dos artigos e pelas sugestões interessantes que forneceram.

Ao Instituto Politécnico de Leiria e à Escola Superior de Tecnologia e Gestão (ESTG) por todas as facilidades concedidas.

Aos colegas do Departamento de Engenharia Informática da ESTG pela compreensão e apoio que sempre me ofereceram, em especial aos colegas do grupo dos mundos virtuais, nomeadamente ao Ricardo Antunes, pelo suporte e incentivo nesta longa caminhada.

A toda a minha família em especial ao Manuel, Simão e Tiago não apenas pela

compreensão, apoio e incentivo, mas essencialmente por todo o tempo de convívio que

lhes roubei para concretizar esta tese.

Finalmente, os meus agradecimentos a todos aqueles que das mais variadas formas ofereceram contributos para que o desenvolvimento deste trabalho fosse possível.

A todos agradeço sinceramente.

Resumo

Nesta tese apresenta-se o trabalho desenvolvido cujo objectivo consistiu na análise do modo como o ensino e a aprendizagem introdutória da programação, a alunos nos primeiros anos de cursos de informática do ensino superior, pode ser desenvolvido dentro de um mundo virtual tridimensional online. Neste contexto, efectuou-se a revisão da literatura, discutindo-se as questões das teorias de aprendizagem e respectivas metodologias, nas quais se destaca a aprendizagem baseada em problemas, bem como, a problemática da aprendizagem da programação e dos mundos virtuais tridimensionais online, com o intuito de fundamentar a opção pelo mundo virtual adoptado.

O estudo realizado no contexto desta tese foi regido pela metodologia investigação-

acção, tendo a autora desempenhado os papéis de investigadora e de professora. No

trabalho de campo, que decorreu desde Março de 2007 até Julho de 2008, abrangendo o

2º semestre do ano lectivo 2006/2007 e o 1º e 2º semestres do ano lectivo 2007/2008,

foi utilizado o mundo virtual Second Life®. Os resultados demonstram que é possível usar este mundo para o ensino e aprendizagem da programação nos primeiros anos de cursos de informática do ensino superior. Os principais resultados atingidos foram a identificação de problemas que dificultam a intervenção do professor neste mundo

virtual e a detecção de soluções eficazes para permitir a utilização deste mundo como plataforma viável para o ensino e aprendizagem da programação de computadores. É ainda apresentada uma proposta de um modelo que consolida os resultados integrando-

os num conjunto de factores relevantes para o ensino e aprendizagem de programação de computadores nestes mundos, no contexto dos primeiros anos dos cursos de informática do ensino superior.

Palavras-chave: aprendizagem da programação; ambientes virtuais colaborativos; investigação-acção; mundos virtuais; Second Life; aprendizagem baseada em problemas.

Abstract

This thesis’ presents an analysis of how teaching and learning an introductory computer programming at the university level could be developed within three-dimensional virtual worlds. In this context, a revision of literature was made, the learning theories and methods were presented and discussed, in which the problem-base learning was highlighted; the difficulties reported in learning and teaching to programming; as well as the review of the three-dimensional virtual worlds in order to substantiate the option made.

This research adopted an action research methodology to the analysis of how teaching and learning of computer programming at the university level could be developed within the Second Life virtual world. Four cycles were employed in this study, from March 2007 to July 2008. Pre-exploratory research took place during the second semester of the academic year 2006/2007, the first and second cycles of action research during the first semester of 2007/2008, and the third and fourth cycles in the second semester of that same academic year.

Results support the notion that it is possible to use this environment for a better effectiveness in the learning of programming. The main results were the identification of problems hampering the teacher’s intervention in this virtual world and the detection of solutions for those problems that were found effective to the success in using this environment for teaching-learning computer programming. It was also proposed a framework for teaching-learning computer programming in these worlds, by highlighting the factors that emerged as relevant in the analysis made.

Keywords: learning programming; collaborative virtual environments; action research; virtual worlds; Second Life; project-based learning.

Índice

1. Introdução

 

2

1.1.

Fundamentos da escolha do tema

4

1.1.

Abordagem ao problema

5

1.2.

Objectivos e contributos fundamentais

7

1.3.

Estrutura da tese

8

2. Aprendizagem – fundamentos teóricos

10

2.1.

Teorias de aprendizagem

12

2.1.1.

Behaviorismo

12

2.1.1.1. Ivan Pavlov

 

12

2.1.1.2. John Broadus Watson

13

2.1.1.3. Burrhus Frederic Skinner

14

2.1.2.

Construtivismo/Cognitivismo

14

2.1.2.1. Jean Piaget

 

15

2.1.2.2. Lev Vygotski

17

2.1.2.3. Jerome Bruner

18

2.1.3.

Teoria da aprendizagem situada

20

2.2.

Metodologias

de aprendizagem

21

2.2.1.

Aprendizagem baseada em problemas

22

2.2.1.1. A implementação da PBL

23

2.2.1.2. O papel do professor e dos alunos na PBL

25

3. Ensino da Programação

 

26

3.1. Programar, o que è?

28

3.2. Dificuldades na aprendizagem da programação

29

3.3. Soluções propostas na literatura para o ensino da programação

39

3.3.1. Programação modular

40

3.3.2. Abordagem

gramatical

41

3.3.3. Abordagem em espiral

41

3.3.4. Protocolo “pensar em voz alta”

42

3.3.5. Programação de jogos

42

3.3.6. Programar do concreto para o abstracto

43

3.3.7. Padrões de programação

43

3.3.8. Programação aos pares

44

3.3.9. Programação por exemplos

46

3.3.10. Abordagem “bricolage”

46

3.3.11. Sistemas de suporte ao ensino da programação

47

3.4.

Ferramentas de suporte ao ensino da programação

47

3.4.1.

Ferramentas de animação

48

3.4.1.1. Ferramentas de animação de algoritmos

48

3.4.1.2. Ferramentas de animação de programas

51

3.4.1.3. Discussão

53

3.4.2.

Mundos programáveis

56

3.4.2.1.

Discussão

57

3.4.3.

Ambientes de desenvolvimento controlado

58

3.4.3.1. BlueJ

58

3.4.3.2. Alice

59

3.4.3.3. Discussão

61

3.5.

A programação e os mundos virtuais

63

4. Mundos Virtuais

68

4.1.

Caracterização dos mundos virtuais

70

4.1.1 Representação física

71

4.1.2 Interactividade

73

4.1.3 Persistência

77

4.2. Os antecessores dos mundos virtuais

78

4.3. Categorização dos mundos virtuais

82

4.3.1

Mundos virtuais de competição

84

4.3.2

Mundos virtuais sociais

85

4.3.4

Mundos virtuais de formação

92

4.3.5

Plataformas de desenvolvimento

92

4.3.6

Mundos virtuais profissionais

95

4.4.

Mundo virtual adoptado

96

5. Second Life

98

5.1. Introdução ao Second Life

100

5.2. Avatares no SL

102

5.3. Comunicação

105

5.4. Construção de objectos 3D

109

5.5. Programar no Second Life

117

5.5.1 Como se desenvolve um programa no SL

117

5.5.2 A linguagem de programação LSL

119

6. Metodologia de investigação

124

6.1. Opções metodológicas

126

6.2. O que é a investigação-acção?

128

6.2.1

Estrutura metodológica da investigação-acção

129

7.

Aplicação do método de investigação

134

7.1. Sumário

 

136

7.2. Participantes

138

7.3. Recolha da informação

 

140

7.3.1. Relatórios diários

 

140

7.3.2. Registos electrónicos

 

141

7.3.3. Questionários

 

141

7.3.4. Entrevistas

142

7.4. Análise da informação

 

143

7.5. Preparação da intervenção preliminar

144

7.5.1. Caracterização dos alunos

 

145

7.5.2. Projectos propostos

146

 

7.5.2.1. Projecto

de

Lab.

I

147

7.5.2.2. Projecto

de

Lab.

III

148

 

7.5.3. Procedimento

 

148

7.5.4. Metodologia a usar nas aulas

150

7.5.5. Plano da aula

 

152

7.6.

Resultados e reflexões da fase preliminar

152

7.6.1. Início da programação – Lab. I

154

7.6.2. Aulas

de Lab. III

 

157

7.6.3. Professora

158

7.6.4. Questionários

160

7.7.

Plano do 1.º ciclo de investigação-acção

162

7.7.1. Caracterização dos alunos

 

162

7.7.2. Planeamento das aulas

163

7.8.

Resultados e reflexão do 1.º ciclo

167

7.8.1. Programação alunos de Lab. II

168

7.8.2. Alunos de Proj. I

 

171

7.9. Plano do 2.º ciclo de investigação-acção

173

7.10. Resultados e reflexões do 2.º ciclo

173

7.10.1. Professora

 

176

7.10.2. Questionários

178

7.11. Plano do 3.º ciclo de investigação-acção

180

7.12. Resultados e reflexões do 3.º e 4.º ciclos de investigação-acção

183

7.12.1.

Questionários

188

7.13.

Conclusão do projecto de investigação

189

8. Análise dos resultados

190

8.1.

Análise e discussão dos resultados

192

8.1.1. Comunicação

192

8.1.2. Projecto

195

8.1.3. Processo de aprendizagem

198

8.1.3.1. Dificuldades dos alunos

198

8.1.3.2. Motivação dos alunos em participar neste projecto

204

8.1.3.3. Avaliação feita pelos alunos ao SL

205

8.1.4.

O processo de ensino no SL

208

9. Proposta de um modelo para o ensino da programação de computadores em

mundos virtuais

212

9.1. Proposta de um modelo

214

9.2. Linhas orientadoras para o ensino da programação utilizando o SL

214

9.2.1. Suporte técnico e emotivo

215

9.2.2. Contexto lúdico para a programação

219

9.2.3. A importância dos exemplos

223

9.2.4. Comunidade que enfatiza a aprendizagem

224

10.

Conclusões

230

10.1. Conclusões

232

10.2. Considerações finais e propostas de trabalho futuro

234

11. Referências Bibliográficas

236

12. Anexos I

274

13. Anexos II

278

14. Anexos III

292

15. Anexos IV

316

16. Anexos V

320

Índice de Figuras

Figura 2.1: Diferença entre o Behaviorismo e o

15

Figura 3.1: Ambiente de programação Eclipse IDE

38

Figura 3.2: Exemplo de um padrão para a estrutura de repetição while

44

Figura 3.3: Exemplo da animação de um algoritmo no sistema Algorithma 98, representado na figura da esquerda e no sistema ANIMAL na figura da

49

Figura 3.4: Exemplo do sistema

50

Figura 3.5: Ambiente de trabalho do

51

Figura 3.6: Ambiente do animador de programas da

52

Figura 3.7: Ambiente de trabalho do Jeliot 3

53

Figura 3.8: Um exemplo do mundo de o Karel the

57

Figura 3.9 : Ambiente de trabalho do BlueJ

59

Figura 3.10: O ambiente de trabalho do Alice

60

Figura 3.11: Uma imagem de um mundo virtual criado com o Alice

61

Figura

4.1:

Avatares do

71

Figura 4.2: À esquerda: avatar da investigadora no SL, “Micaela Korobase”. À direita:

um avatar do mundo virtual NeoPets

72

Figura 4.3: À esquerda: edição do aspecto visual do avatar da autora no mundo virtual The Palace. À direita: edição da aparência de um avatar no mundo virtual MTV’s Virtual

Worlds – The Virtual

Figura 4.4: Mapa de algumas áreas do Second Life, referenciando, nos pontos verdes, o

73

número de pessoas que se encontram em cada

74

Figura 4.5: Exemplo de interacção com outro avatar do mundo Thinking

75

Figura 4.6: Exemplo de uma converção textual pública com vários avatares em simultâneo no mundo virtual MTV

75

Figura 4.7: Exemplo de uma conversa privada no Entropia

76

Figura 4.8: Seminário Ambientes Virtuais 3D em Educação na ilha da Universidade de Aveiro no SL Figura 4.9: O interface do Jogo MUD Figura 4.10: O interface do Meridian 59 Figura 4.11: À esquerda: aspecto gráfico do Ultima Online original. À direita: aspecto

77

79

81

82

Figura 4.12: Exemplos de mundos virtuais de competição: Lineage II na imagem da esquerda, World of Warcraft na imagem à direita

84

Figura 4.13: Exemplo de uma conversa textual pública;

86

Figura 4.14:Um avatar a experimentar

87

Figura 4.15: Exemplo de uma conversa textual entre dois amigos no

88

Figura 4.16: O browser do Active Worlds Educational Universe

89

Figura 4.17: Na imagem da direita uma réplica da Praça do Comércio de Lisboa no SL;

Na imagem da esquerda uma réplica do Museu Nacional dos Coches no

90

Figura 4.18: Jogo America’s

92

Figura 4.19: Mundo virtual criado no OpenCroquet para apoio ao ensino da programação orientada a objectos

94

Figura 5.1: Aspecto geral do viewer do Second

100

Figura 5.2: Ilha no SL, durante a noite na qual se pode observar um belo céu estrelado.

102

Figura 5.3: Na imagem da esquerda, apresenta o terreno alugado pela autora, para dar

início às suas actividades. Na imagem da direita, a ilha da Universidade de Aveiro

103

Figura 5.4: O avatar da autora a editar a sua aparência no

104

Figura 5.5: O inventário de um avatar no

104

Figura 5.6: Exemplo de uma conversa pública entre vários avatares

105

Figura 5.7: Exemplo de uma conversa privada entre dois

106

Figura 5.8: Exemplo de um cartão do

107

Figura 5.9:Exemplos de telas de informação no

108

Figura 5.10: Objectos usados para transmitir pequenas mensagens no SL

108

Figura 5.11: Editor de objectos no SL, no qual se observa o nome do dono e do criador

da cúpula azul Figura 5.12: A janela do editor que permite construir e alterar as propriedades dos

110

111

Figura 5.13 : O menu redondo, designado de pie menu, na imagem da direita; na imagem da esquerda, a janela inicial do editor de construção, com as várias prims que se podem

seleccionar

Figura 5.14: A edição de uma prim no qual se pode observar os eixos direccionais a vermelho, verde e Figura 5.15: Objectos que auxiliam na rotação, na imagem da esquerda, e no aumento

do objecto, na imagem da direita

112

113

113

Figura 5.16: Manipulação do zoom no SL. Na imagem da esquerda, a visualização do objecto sem o zoom activo. Na imagem da direita, zoom in, no qual se observa em pormenor o olho da

Figura 5.17: Editor de objectos, no qual se pode observar as permissões que se podem

114

atribuir ao objecto criado

116

Figura 5.18: A construção colaborativa de um piano no Second

116

Figura 5.19: Desenvolvimento de programas no

118

Figura 5.20: Editor de programas no

118

Figura 5.21: Lista de funções pré-definidas do

121

Figura 5.22: A execução do código anterior no SL

124

Figura 6.1: Metodologia de

131

Figura 7.1: Esquema da metodologia investigação-acção efectuada neste

137

Figura 7.2: Diagrama temporal desta investigação

138

Figura 7.3: Exemplo de objectos que se podem criar no Second Life: o sistema solar (imagem à esquerda) e um carro (imagem à

147

Figura 7.4: Imagem do terreno no SL onde os alunos desenvolveram as suas actividades.

 

149

Figura 7.5: Imagem do interior da sala

149

Figura 7.6: Objectos criados pelos alunos no decorrer desta actividade. Na imagem, à esquerda, o conjunto de robôs, à direita um cão

154

Figura 7.7: Objectos criados pelos alunos no decorrer desta actividade. O comboio, os

apeadeiros, respectivas cidades e fábricas

154

Figura 7.8: Aspecto do monitor da professora durante uma aula, na qual a professora está a analisar o código de um aluno

156

Figura 7.9: Lista das mensagens trocadas numa aula: as setas vermelhas indicam as mensagens dos objectos; as verdes da professora e as amarelas dos alunos

159

Figura 7.10: Espaço de aula no SL com zonas demarcadas para cada grupo de alunos, a

vermelho a zona de

166

Figura 7.11: Objecto de dúvidas para ser usado fora das aulas

167

Figura 7.12: Lista das funções existentes no LSL

171

Figura 7.13: Ilustra o ecrã da professora durante as aulas

177

Figura 7.14: Imagem de um dos trabalhos

183

Figura 7.15: Reunião geral sobre o

184

Figura 7.16: Objectos com mensagens para os alunos relembrarem o que tinham de

187

Figura 8.1: Exemplos das mensagens de erro geradas pelo compilador de LSL. Na

imagem da esquerda falta no código uma chaveta { na linha 11 e na da direita falta um

ponto-e-vírgula ; na linha

Figura 8.2: Exemplo da pirâmide, sobre estruturas de decisão e canal de comunicação, para os alunos testarem e Figura 8.3: Código em LSL, que cada uma das pirâmides executa Figura 9.1: Espaço utilizado nas aulas de programação durante os 1.º e 2.º ciclos de

199

203

204

 

218

Figura 9.2: Espaço utilizado nas aulas de programação durante os 3.º e 4.º ciclos de

 

219

Figura 9.3: Um dos alunos de Lab. III a exibir os seus objectos

225

Índice de Tabelas

Tabela 4.1: Características dos mundos virtuais sociais

91

Tabela 4.2: Características dos mundos virtuais de formação

95

Tabela 5.1: Tabela com os tipos de dados existentes na linguagem de programação LSL.

 

122

Tabela 7.1: Número de alunos que participaram em cada fase desta investigação e

respectivas

disciplinas

139

Tabela 7.2: Linguagens de programação já estudadas ou em estudo pelos alunos

146

Tabela 7.3: Resumos das constatações da actividade

162

Tabela 7.4: Linguagens de programação já estudadas ou em estudo pelos alunos

163

Tabela 7.5: Resumo das constatações do 1.º ciclo de

172

Tabela 7.6: Resumo das observações do 2.º ciclo de

178

Tabela 7.7: Resumo das observações do 3.º e 4.º ciclos de IA

188

Tabela 9.1: Modelo para o ensino / aprendizagem da programação de computadores dentro do Second Life

228

Acrónimos

ACM

Association for Computer Machinery

ANIMAL

A New Interactive Modeller for Animations in Lectures

AWEU

Active Worlds Educational Universe

BALSA

Brown ALgorithm Simulator and Animator

BASIC

Beginners All-purpose Symbolic Instruction Code

CAT

Collaborative Active Textbook

CET

Curso Técnico Pós-secundário

COBOL

COmmon Business Oriented Language

ENIAC

Electrical Numerical Integrator and Calculator

ESTG

Escola Superior de Tecnologia e Gestão

Fortran

IBM mathematical FOrmula TRANslation system

IA

Investigação-Acção

IDE

Integrated Development Environment

IDSV

Interactive Data Structure Visualization

JHAVÉ

Java-Hosted Algorithm Visualization Environment

Lab I

Laboratório de informática I

Lab II

Laboratório de informática II

Lab III

Laboratório de informática III

LSL

Linden Scripting Language

MMOG

Massively Multiplayer Online Games

MMORPG

Massively Multiplayer Online Role Player Game

MUD

Multi User Dungeon

MV3D

Mundo Virtual tridimensional

OLIVE

On-Line Interactive Virtual Environment

PBL

Problem-Based Learning

PILOT

Platform-Independent Learning Online Tool

SDK

Sofware Development Kits

SL

Second Life

SMS

Short Message Service

TANGO

Transition-based ANimation GeneratiOn

UO

Ultima Online

UTAD

Universidade de Trás-os-Montes e Alto Douro

UUI

Universally Unique Identifier

1.

Introdução

No presente capítulo introduz-se o tema desta tese, definindo o problema em questão, especificando-se os objectivos a alcançar e os contributos resultantes deste trabalho. Apresenta-se, ainda, a estrutura da tese.

Capítulo I: Introdução

Capítulo I: Introdução

1.1. Fundamentos da escolha do tema

Desde o início da sua carreira profissional que a autora tem estado ligada ao ensino da programação, tendo-se iniciado nessa actividade no ensino secundário e actualmente no ensino superior. Ao longo destes anos tem vindo a observar os problemas / dificuldades que os alunos e professores enfrentam no seu dia-a-dia, razão pela qual se dedicou à sua investigação.

Com o surgimento do primeiro computador por volta de 1945, tem-se vindo a assistir a uma crescente proliferação deste em todos os sectores da actividade humana. Devido à rápida evolução tecnológica do último século e primeira década do actual, como, por exemplo, o aumento da capacidade de cálculo, a transmissão instantânea dos dados e a incrível precisão das operações, constata-se que o computador é um instrumento imprescindível. Tornou-se de tal maneira uma máquina de uso corrente que é praticamente impossível não se tomar consciência da sua presença.

Mas, afinal, o que é um computador? É uma máquina que processa dados e executa sobre eles, com uma cadência muito rápida, sequências de operações elementares, a partir de informação inserida através de dispositivos de entrada, geralmente o teclado, quando essa informação provém directamente de seres humanos (Rocha, 2008). Mais concretamente, é uma máquina programável, em que as tarefas a desempenhar lhe são fornecidas através de um programa, consistindo numa sequência de operações elementares, que pode ser alterada ou substituída por outra sempre que se deseje.

Por ser este aspecto de máquina programável a característica-base do que constitui um computador, a programação é considerada uma técnica elementar em qualquer curso da área científica das Ciências Informáticas. Contudo, a programação está igualmente presente na generalidade dos cursos de engenharia e de outras ciências, fazendo, por isso, parte dos currículos destes cursos uma ou mais disciplinas de Ciências e Tecnologia da Programação (Rocha, 2006). No caso de cursos que exijam conceitos sólidos de programação e de desenvolvimento de software é normal que o seu estudo seja feito através de várias disciplinas.

As primeiras disciplinas de programação aparecem normalmente logo no início da generalidade dos cursos superiores de informática e áreas afins. Contudo, os alunos que iniciam o estudo de uma linguagem de programação sentem muitas dificuldades na sua

Capítulo I: Introdução

aprendizagem. A consulta das actas das principais conferências mundiais na área de Computer Science Education como, por exemplo, as patrocinadas pela Association for Computer Machinery (ACM), revelam que estas dificuldades são comuns a muitos países e instituições de ensino (Gray, Goldberg e Byrnes,1993; Jenkins, 2002; Hawi, 2010). Este facto tem motivado a investigação por parte da comunidade científica, que procura identificar factores que contribuem para estas dificuldades, tendo como objectivo procurar e encontrar formas de as minorar ou ultrapassar (Lahtinen et al., 2005; Rodger et al., 2010), como se descreve mais aprofundadamente no capítulo 3.

1.1.Abordagem ao problema

A educação e a formação ao longo da vida constituem formas de aprender e de viver

que enriquecem o ser humano e dinamizam o desenvolvimento da sociedade. A preocupação com a promoção de uma cultura que valorize a educação e a formação desafia educadores e investigadores a procurarem estratégias que possam colaborar no desenvolvimento efectivo de cada pessoa ao longo da vida (Miranda, Morais e Dias, 2007). Neste sentido e com a crescente evolução das tecnologias de informação e comunicação e das diversas potencialidades que lhes estão associadas, o conceito de ambiente de aprendizagem adquiriu novas dimensões, deixando de estar associado a um intervalo temporal ou a um espaço físico bem definidos, para assumir novas variáveis assentes não só nas características tecnológicas, mas também na flexibilidade temporal e espacial, podendo cada pessoa desfrutar de ferramentas cognitivas de aprendizagem, geralmente, a qualquer hora e em qualquer lugar.

Durante a última década, várias tecnologias foram desenvolvidas e adaptadas para

ambientes de aprendizagem, entre elas os mundos virtuais a três dimensões (3D). Por “mundo virtual 3D”, considera-se, no âmbito desta tese, sistemas informáticos que disponibilizam uma realidade virtual acessível em rede a vários utilizadores, geralmente a partir de aplicações instaladas em computadores pessoais. Estas aplicações disponibilizam vários elementos fundamentais de interacção, nomeadamente, a ilusão de um espaço 3D onde os utilizadores estão inseridos; avatars, que são representações virtuais dos utilizadores; e várias formas para os utilizadores comunicarem entre si (Leonel, 2009). Neste âmbito, entre os mundos virtuais 3D mais populares, encontram-

se o Everquest (2006), o World of Warcraft (2006), o Habbo Hotel (2006), o There (2006) e o Second Life (2006), descritos no capítulo 4.

Capítulo I: Introdução

Uma das vantagens de utilizar um mundo virtual 3D para o ensino da programação é a possibilidade que os aprendizes têm de ver um objecto ou colocá-lo sob múltiplas perspectivas, que podem gerar uma melhor compreensão dos conceitos (Bricken e Byrne, 1994). O trabalho de Dede (1995) vem reforçar esta ideia de que um mundo virtual 3D oferece muitos benefícios, tais como a oportunidade de experimentar sem a repercussão do mundo real, a oportunidade de aprender fazendo e a possibilidade de personalizar o ambiente. Esta contextualização do conhecimento permite ao aprendiz ter uma experiência não simbólica e na primeira pessoa de alguns conceitos.

Embora os mundos virtuais sejam relativamente recentes, já estão a ser usados como um meio pedagógico, permitindo criar um ambiente 3D rico para contextualizar a aprendizagem; sistemas de comunicação para apoiar a discussão e a colaboração; tirar partido da integração Web que fornece em tempo real recursos e ferramentas para pesquisar informação, como se refere no capítulo 3. Na literatura encontram-se alguns defensores de que os mundos virtuais, vistos como ambientes virtuais de aprendizagem, são o meio no qual se estabelece uma maior ligação interactiva entre o utilizador e o computador (Schroeder, 1996; Prensky, 2001; Slator, Hill, Del Val, 2004; Danilicheva, 2010). Esta ligação prende-se com a sua capacidade de motivar, de envolver os utilizadores, de ajudar a memorizar e a relembrar, e podem também encorajar o desenvolvimento de várias habilidades sociais e cognitivas.

Por outro lado, vários autores (Carmen et al., 2010; Valdivia, Nussbaum e Ochoa, 2009) referem os benefícios da aprendizagem colaborativa, uma vez que alunos têm que explicar, justificar e argumentar as suas ideias aos outros. O uso dos mundos virtuais fomenta a colaboração e a aprendizagem construtivista por permitir uma comunicação em tempo-real juntamente com um ambiente visual e recursos de apoio à colaboração (Dickey, 2005; Attasiriluk et al., 2009).

Face ao exposto, pretende-se analisar as características do uso dos mundos virtuais tridimensionais para minimizar as dificuldades sentidas pelos alunos no seu processo de aprendizagem da programação de computadores. Mais concretamente, pretende-se utilizar um mundo virtual 3D de aprendizagem colaborativa para proporcionar um ambiente visual contextualmente rico, imergindo os alunos num mundo onde estes podem individual ou em grupo interagir e manipular a informação disponibilizada.

Capítulo I: Introdução

1.2. Objectivos e contributos fundamentais

O objectivo primordial deste trabalho foi explorar as possibilidades e dificuldades da utilização dos mundos virtuais 3D online como plataforma para o ensino e aprendizagem introdutória da programação de computadores a alunos do ensino superior.

Pretendeu-se analisar as características destes mundos quando utilizados em processos de ensino e aprendizagem de programação, estudando e analisando os próprios processos, como se desenvolvem, que tipos de apoios tecnológicos e metodológicos requerem, que limitações e vantagens apresentam, tendo sempre em vista possibilitar uma aprendizagem efectiva. De forma simples, verificar quais as dificuldades e as facilidades de dar aulas e acompanhar os alunos no desenvolvimento dos seus trabalhos nestes mundos.

Pretendeu-se também, com o trabalho apresentado nesta tese, definir um modelo para o ensino e aprendizagem da programação de computadores nestes mundos virtuais 3D. De forma a cumprir as finalidades propostas, foi necessário estabelecer um conjunto de objectivos parcelares que se apresentam de seguida:

Identificar e caracterizar os aspectos fundamentais da realidade complexa do ensino e aprendizagem da programação de computadores e dos ambientes de programação utilizados no seu suporte;

Efectuar um estudo sobre o estado da arte dos mundos virtuais, onde deve ser dada uma atenção especial às características que estes possuem que permitam a sua utilização como plataforma para o ensino e aprendizagem da programação. O levantamento do estado das características dos mundos virtuais revestiu-se da maior importância no sentido de seleccionar um deles para ser usado neste estudo;

Efectuar um estudo rigoroso de como os processos de ensino e aprendizagem da programação se desenrolam dentro do mundo virtual escolhido;

Identificar e caracterizar os factores considerados relevantes no ensino e aprendizagem da programação de computadores nos mundos virtuais 3D, de modo a disponibilizar um modelo de apoio à sua utilização como plataforma.

Capítulo I: Introdução

O presente trabalho oferece um modelo de suporte às actividades de ensino e aprendizagem da programação, contribuindo, deste modo, para melhorar a aprendizagem da programação no ensino superior, procurando também ajudar os professores a tirar partido dos mundos virtuais 3D para contextualizar o ensino da programação, com a ambição de poder eventualmente minorar, desta forma, o insucesso que actualmente se verifica.

A melhor compreensão do processo de ensino e aprendizagem da programação nestes mundos virtuais é um caminho para a sua utilização nas aulas de introdução à programação. Ao analisar se as dificuldades de utilização destes mundos virtuais para o ensino e aprendizagem da programação podem ser superadas e como, constituiu-se uma base que permite efectuar estudos tanto qualitativos como quantitativos para determinar o impacte da sua utilização na motivação dos alunos para a aprendizagem, bem como de outros temas ligados ao ensino e aprendizagem deste assunto.

1.3. Estrutura da tese

Esta tese possui sete capítulos, que estão organizados da seguinte forma:

Neste primeiro capítulo, de introdução, foi definido o problema, sendo especificados os objectivos que se pretendiam alcançar, bem como os contributos resultantes deste trabalho, e apresenta-se, ainda, a estrutura da dissertação.

No segundo capítulo focam-se os pressupostos teóricos que sustentam esta investigação, onde são referidas as ideias dos diversos autores que contribuíram para o desenvolvimento destas teorias. Mencionam-se algumas das metodologias educativas inspiradas nestas teorias das quais se destaca a aprendizagem baseada em problemas.

No terceiro capítulo, referente ao ensino da programação, efectua-se uma resenha das linguagens de programação que estão a ser utilizadas no ensino, assim como os respectivos ambientes de programação, sendo também apresentadas as principais dificuldades referidas na literatura.

O quarto capítulo apresenta uma caracterização genérica dos mundos virtuais. Nele se faz um levantamento e classificação dos principais mundos virtuais existentes, dando especial atenção aos mundos que apresentam características que possibilitam a sua utilização no ensino e aprendizagem da programação.

Capítulo I: Introdução

No quinto capítulo efectua-se uma descrição detalhada do mundo virtual Second Life, expondo as suas características principais. Apresenta-se também o modo como se constroem objectos 3D neste mundo virtual, evidenciando-se a implementação de programas neste mundo, de forma a gerar diferentes comportamentos para os objectos criados.

No sexto capítulo é explicada a abordagem de investigação seguida, efectuando-se igualmente uma explanação da estrutura metodológica da investigação-acção.

No sétimo capítulo, sobre a aplicação do método de investigação, descreve-se a praxis educativa efectivada, regida pela metodologia investigação-acção, para obter respostas ao problema proposto.

No oitavo capítulo, dedicado à reflexão e discussão dos resultados obtidos.

No nono capítulo apresenta-se o modelo proposto para a utilização do mundo virtual Second Life como plataforma para o ensino introdutório da programação.

No último capítulo, de conclusão, recorda-se o problema e faz-se uma análise global do trabalho realizado, tendo em conta os objectivos estabelecidos. Termina-se com diversas reflexões sobre a continuidade desejada para este estudo.

2. Aprendizagem – fundamentos teóricos

Neste capítulo faz-se uma breve introdução às diferentes teorias da aprendizagem, referindo-se as ideias dos diversos autores que contribuíram para o seu desenvolvimento. Prossegue-se mencionando algumas das metodologias educativas inspiradas pelas teorias da aprendizagem entre as quais se destaca a aprendizagem baseada em problemas. Finalmente, efectua-se uma descrição detalhada sobre a aprendizagem baseada em problemas, que foi utilizada neste estudo, na qual se expõe as suas principais características, quais os pressupostos sobre como se processa a aprendizagem e qual o papel do professor e dos alunos.

Capítulo II: Aprendizagem – Fundamentos Teóricos

Capítulo II: Aprendizagem – Fundamentos Teóricos

2.1. Teorias de aprendizagem

Tudo o que ao longo da nossa vida provoca uma mudança que transforme a nossa relação com o mundo pode e deve ser considerado aprendizagem. O progresso da humanidade, o desenvolvimento científico, as grandes realizações conseguidas nas mais diversas áreas culturais, só foram possíveis pelo facto de o ser humano possuir capacidades para aprender, para reter e para transmitir às gerações vindouras as formas pelas quais, ao longo da história, foi sendo configurada a adaptação ao mundo que o rodeia (Abrunhosa, Leitão, 2002). De um modo espontâneo, consciente ou inconscientemente, com pouco ou muito esforço, estamos constantemente a aprender.

Ao longo dos tempos o homem tem vindo a procurar compreender e aperfeiçoar os métodos de estímulo e/ou apoio à aprendizagem – em particular, o ensino. Esta procura contínua permitiu o desenvolvimento de muitas teorias que tentam explicar como o ser humano aprende. Sendo difícil pormenorizar o conjunto dos fundamentos teóricos, que ultrapassam o propósito deste trabalho, expõem-se, contudo, algumas teorias basilares referindo-se em cada uma delas as principais figuras onde se enquadra este estudo.

2.1.1.

Behaviorismo

O behaviorismo teve o seu apogeu entre meados dos anos 1950 e 1960 como teoria para explicar a natureza da aprendizagem, embora ainda hoje exerça a sua influência. Esta teoria teve origem no trabalho de vários autores, entre eles I. Pavlov (1849-1936), J. B. Watson (1878-1958) e B. F. Skinner (1904-1990), que identificaram o condicionamento como um processo de aprendizagem universal.

2.1.1.1. Ivan Pavlov

Pavlov foi um fisiologista russo que em 1904, ao estudar o papel da saliva na digestão, verificou que os cães salivavam ao cheiro ou à vista da comida. Esta observação ocasional motivou Pavlov (1927) para o estudo sistemático do condicionamento, o que o levou a efectuar inúmeras experiências onde concluiu que:

Capítulo II: Aprendizagem – Fundamentos Teóricos

Um estímulo (um pedaço de carne) provoca uma reacção (começa a salivar) – «reflexo simples»;

A associação de estímulos desencadeia-se a mesma reacção – acrescentou o som de uma campainha sempre que apresentava o pedaço de carne ao cão e este começava a salivar;

O novo estímulo provoca uma resposta adequada ao primeiro estímulo «reflexo condicionado» – o cão apenas ouve o som da campainha e começa a salivar.

Em dado momento da experiência o cão é capaz de responder ao estímulo condicionado como se do estímulo não condicionado se tratasse. A este processo chama-se de condicionamento e consiste em associar um estímulo condicionado a um estímulo natural, de tal modo que o indivíduo reage ao estímulo condicionado do mesmo modo que reage ao estímulo natural. Por conseguinte, Pavlov define o comportamento como o conjunto de respostas objectivamente observáveis que o organismo executa face a estímulos também objectivamente observáveis (Abrunhosa, Leitão, 2002).

2.1.1.2. John Broadus Watson

Watson foi um psicólogo americano, influenciado pelos estudos de Pavlov, fundador da corrente científica da psicologia conhecida por behaviorismo. Segundo Watson (1913) a psicologia tem de ser objectiva. Assim propõe que a psicologia estude apenas o que é observável, ou seja, o comportamento (behaviour), e se abstenha de qualquer tentativa de identificar actividades mentais. A ligação Estímulo-Resposta, para Watson (1928), processa-se de modo mecânico, o que lhe permite fazer uma interpretação causal do comportamento e, consequentemente, elaborar leis explicativas do mesmo.

Tais leis pretendiam:

Perante um determinado estímulo, prever a reacção subsequente.

Perante uma dada resposta, determinar o estímulo que a desencadeou.

Para Watson (1928), os diferentes comportamentos são adquiridos segundo processos de condicionamento, designados de «condicionamento clássico». A aprendizagem resulta da resposta a um estímulo e esta não é mais do que a aquisição de um novo comportamento.

Capítulo II: Aprendizagem – Fundamentos Teóricos

2.1.1.3. Burrhus Frederic Skinner

Skinner, psicólogo americano nascido em 1904, ficou conhecido pelas suas experiências com animais, nomeadamente ratos, para as quais criou uma caixa especial, designada por caixa de Skinner. Esta caixa possuía um dispositivo que permitia o fornecimento automático de alimento (reforço) ao animal em observação. Para além disso, continha também um mecanismo que registava as respostas do animal, dispensando o pesquisador de uma permanente observação. No final dispunha de um registo cumulativo das respostas do animal em observação.

Skinner colocou um rato faminto dentro da sua caixa e constatou que ao fim de algum tempo o roedor descobre que para obter alimento tem de premir uma alavanca. Como o animal só pode comer após ter accionado a alavanca, o alimento vai reforçar essa resposta, ou seja, o animal aprende a pressionar a alavanca em função do reforço que é o alimento. Isto significa que se estabeleceu no rato a associação entre a resposta operante (premir a alavanca) e o reforço (alimento). A este processo denomina-se de «condicionamento operante». Skinner (1983) considera que a aprendizagem ocorre quando uma resposta a um estímulo é reforçada (reforço).

Embora o behaviorismo seja objectivo, ao fazer depender as respostas exclusivamente

de situações objectivamente observáveis, tem sido criticado por esta restritividade. No

cerne das críticas está a preocupação de que conduza a uma interpretação simplista e

demasiado redutora da conduta humana (Pereira, 2007).

2.1.2.

Construtivismo/Cognitivismo

A teoria construtivista ou cognitivista opõe-se à behaviorista, pois considera a

aprendizagem não como um modelo em que alguém dá e alguém recebe, mas como um modelo em que o sujeito é o elemento activo primordial do processo de aprendizagem,

gerador do seu próprio conhecimento (Figura 2.1). Este conhecimento obtém-se através

da construção/interacção pelo sujeito de informações novas nas suas estruturas de

saber, associando-as a representações existentes ou criando novas representações.

Capítulo II: Aprendizagem – Fundamentos Teóricos

Behaviorismo

Construtivismo/Cognitivismo

Teóricos Behaviorismo ≠ Construtivismo/Cognitivismo Carácter passivo do sujeito Carácter activo do sujeito

Carácter passivo

do sujeito

Carácter activo

do sujeito

Figura 2.1: Diferença entre o Behaviorismo e o Construtivismo.

Vários autores contribuíram para o desenvolvimento desta teoria, destacando-se tradicionalmente figuras como J. Piaget (1896-1980), L. Vygotski (1896-1934) e J. Bruner (1915-).

2.1.2.1. Jean Piaget

Piaget foi o grande introdutor do construtivismo/cognitivismo no panorama das ciências modernas (Pereira, 2007). Formado em biologia, interessou-se por investigar o desenvolvimento do conhecimento nos seres humanos. Segundo Piaget (1977), todos os comportamentos humanos resultam da interacção organismo-meio.

O conhecimento não é uma cópia do objecto nem uma tomada de consciência das formas a priori que sejam predeterminadas no sujeito, é uma construção perpétua através de intercâmbios entre o organismo e o meio, do ponto de vista biológico, e entre o pensamento e o objecto, do ponto de vista cognitivo.” (Piaget, 1977).

Dito de outro modo, o conhecimento resulta da acção conjunta de factores individuais de ordem inata e de factores adquiridos no contacto com a experiência. Opondo-se aos behavioristas, Piaget afirma que o sujeito é um participante activo no seu próprio desenvolvimento.

O construtivismo de Piaget explica a aprendizagem por um processo semelhante ao da alimentação dos seres vivos: assimilação/acomodação/procura do equilíbrio. O desenvolvimento cognitivo seria caracterizado por várias fases (estágios) alcançadas pelas estruturas dos esquemas à disposição do indivíduo. Segundo Piaget (1977), cada etapa ou estágio do desenvolvimento é caracterizada pela presença de esquemas mentais que, quando coordenados entre si, constituem uma estrutura. Desta forma, o desenvolvimento cognitivo faz-se por etapas sucessivas em que as estruturas mentais se

Capítulo II: Aprendizagem – Fundamentos Teóricos

constroem progressivamente. Cada novo estágio representa uma forma de equilíbrio cada vez maior, que permite uma adaptação mais adequada às circunstâncias. Em todos os estágios, a permuta entre o sujeito e o mundo opera-se por dois mecanismos constantes, que são a assimilação e a acomodação. Assim, perante uma nova situação, desconhecida, o aprendiz tenta primeiro identificá-la, incorporando-a nos esquemas já constituídos. Este apoia-se nas referências conhecidas. A esta regulação Piaget denomina de assimilação, que pode ser suficiente, mas pode, noutras circunstâncias, revelar-se insuficiente e necessitar da modificação dos esquemas referenciais, ou até mesmo da criação de novos esquemas. É a acomodação. O processo complementar, dialéctico, que combina assimilação e acomodação, conduz ao equilíbrio. O processo de equilíbrio permite a evolução, ela guia a coordenação das acções. Para Piaget a procura do equilíbrio é auto-regulação dinâmica, regulação que tende a aperfeiçoar-se em função dos factos exteriores que intervêm. É um processo que tende para o equilíbrio mas nunca está efectivamente estabilizada.

A cada instante, a acção é desequilibrada pelas transformações que aparecem no

mundo, exterior ou interior, e cada nova conduta vai funcionar não só para estabelecer o equilíbrio, mas também para tender a um equilíbrio mais estável que o do estágio anterior a

esta perturbação.

(

)

Pode dizer-se que toda a necessidade tende: 1º a incorporar as coisas e pessoas à

actividade própria do sujeito, isto é, “assimilar” o mundo exterior às estruturas já construídas, e 2º, a reajustar estas últimas em função das transformações ocorridas, ou seja,

) (

“acomodá-las” aos objectos externos. Assim, toda a vida mental e orgânica tende a assimilar progressivamente o meio ambiente.

) (

acomodarem-se a estes, isto é, a reajustarem-se por ocasião de cada variação exterior. Pode

chamar-se “adaptação ao equilíbrio destas assimilações e acomodações. O desenvolvimento mental aparecerá, então como uma adaptação sempre mais precisa à realidade. “. (Piaget,

1973).

Ora, assimilando assim os objectos, a acção e o pensamento são compelidos a

Para Piaget (1976) a aprendizagem implica provocar o desequilíbrio na mente do aluno para que este procure o reequilíbrio, se reestruture cognitivamente e aprenda.

A equilibração cognitiva é, pois, “majorante”, o que significa que os desequilíbrios não conduzem a um regresso à forma anterior de equilíbrio, mas a uma forma melhor” (idid.).

Capítulo II: Aprendizagem – Fundamentos Teóricos

Contudo, na aprendizagem é necessário ter em consideração o desenvolvimento cognitivo do aprendiz a cada momento, não se devendo propor-lhe tarefas que estejam completamente além das suas capacidades (Pereira, 2007).

2.1.2.2. Lev Vygotski

Lev Vygotsky nasceu na Bielorrússia, em 1896. Trabalhou no Instituto de Psicologia de Moscovo, entre 1923 e 1934, onde teve oportunidade de desenvolver as suas teorias sobre o desenvolvimento cognitivo e a relação entre o pensamento e a linguagem. Como marxista, acreditava que só podia compreender o ser humano no contexto do seu ambiente sócio-histórico. Vygotsky (1979) enfatizou a ligação entre as pessoas e o contexto cultural em que vivem e são educadas. De acordo com este autor, as pessoas usam instrumentos que vão buscar à cultura onde estão imersas e entre esses instrumentos tem lugar de destaque a linguagem, a qual é usada como mediação entre o sujeito e o ambiente social. O conhecimento é inicialmente construído num nível social e posteriormente num nível individual.

“(

)

o verdadeiro curso do desenvolvimento do pensamento não vai do individual para o

socializado, mas do social para o individual.” (Vygotsky, 1979)

Da obra de Vygotski, destaca-se a ideia que marca de forma determinante os processos pedagógicos ligados à educabilidade. Trata-se do conceito de zona de desenvolvimento próximo (ZDP). É aprendendo a resolver uma situação com um tutor que domina o esquema que o aprendiz progride e constrói, por sua vez, o esquema considerado (Perraudeau, 2000). Vygotsky (1979) considera dois níveis distintos de desenvolvimento em que o aprendiz pode desenvolver diferentes capacidades. Por um lado, o chamado nível ou zona de desenvolvimento actual e, por outro, o nível ou zona de desenvolvimento proximal. A zona de desenvolvimento proximal estabelece a distância entre o que o aluno domina sozinho e o que ele domina com a colaboração de um adulto, ou com os colegas mais capazes.

Para determinar o actual nível de desenvolvimento, utilizam-se problemas que a criança deve resolver sozinha e que são indicativos em relação às funções já formadas e chegadas à maturidade.

) (

determinado com o auxílio dos problemas resolvidos de forma autónoma, e o nível atingido

Esta disparidade entre a idade mental, ou o nível de desenvolvimento actual, que é

Capítulo II: Aprendizagem – Fundamentos Teóricos

pela criança, quando resolve problemas, já não sozinha mas em colaboração, determina precisamente a zona de desenvolvimento próximo.

a pesquisa mostra que a zona de desenvolvimento próximo tem um significado mais

directo para a dinâmica do desenvolvimento intelectual e no êxito da aprendizagem do que no nível actual do seu desenvolvimento.” (Vygotsky, 1979).

) (

Segundo Vygotski (1981), construir o saber consiste em determinar um processo que evite dois perigos. O primeiro é o de propor uma situação já dominada: o propósito é, neste caso, vazio de sentido para o aprendiz. O segundo consiste no seu contrário: uma situação de tal modo afastada dos esquemas adquiridos que a ajuda de um tutor, fora da zona, se revelaria inoperante. Com efeito, parece que o aluno tira melhor proveito quando o nível cognitivo do mediador é ligeiramente superior ao seu. Uma distância cognitiva demasiado grande implica, por parte do aluno auxiliado, a aceitação de um saber sem questionamento autêntico (Perraudeau, 2000).

2.1.2.3. Jerome Bruner

Jerome S. Bruner, psicólogo americano de formação, nasceu em 1915, sendo designado de “o pai da Psicologia Cognitiva”, devido ao seu papel relevante no campo da cognição. O pensamento de Bruner foi influenciado pela obra de Vygotsky, principalmente no que se refere ao contexto social da aprendizagem (Pereira, 2007).

Bruner (1966) considera a aprendizagem um processo activo em que os sujeitos da aprendizagem constroem as ideias ou os novos conceitos baseados nos seus saberes pré- adquiridos ou actuais. Segundo este autor existe uma coordenação entre aquilo que o sujeito pensa quando constrói a sua aprendizagem e o percurso do pensamento para chegar ao objecto em estudo. Compreender um objecto é desenvolver um processo dedutivo de categorização: no final de um raciocínio, o objecto é entendido como pertencendo a uma categoria. A categorização, que se pode chamar de conceptualização, constrói-se pela e através da linguagem (Perraudeau, 2000). Dito por outras palavras, o sujeito da aprendizagem selecciona a informação e transforma-a, constrói hipóteses e toma as decisões necessárias a essa construção, recorrendo-se da sua estrutura cognitiva para o fazer. A estrutura cognitiva fornece o significado e a organização à realidade com que o sujeito se confronta e permite ao sujeito da aprendizagem ir além da informação recebida. Uma vez que o processo está ligado ao produto, o indivíduo aborda um novo

Capítulo II: Aprendizagem – Fundamentos Teóricos

conteúdo a partir do que já sabe e a partir da forma como integrou esse conhecimento anterior. Assim, não é, antes de mais, o conteúdo exposto que informa o aluno, mas aquilo que ele sabe é que lhe permite atribuir um significado ao conteúdo exposto (Barth, 1995).

Bruner parte do conceito de que aprendizagem é a modificação do comportamento resultante da experiência – aspecto particularmente evocativo da perspectiva behaviorista. Contudo, de acordo com Perraudeau (2000), a concepção de Bruner decorre da concepção de Piaget, por considerar que o conceito não se pode formar sem ser através da construção, e distancia-se dele, pelo facto de, para Bruner, a construção se efectuar graças à linguagem, em interacção entre os indivíduos.

a aprendizagem é amplamente facilitada pela linguagem, a qual constitui não só um

meio de comunicação, mas também um instrumento que o indivíduo em situação de aprendizagem pode utilizar de forma a ordenar o meio ambiente.” (Bruner, 1966, p.6).

“ (

)

Deste modo, Bruner atribui à linguagem um papel ordenador do meio ambiente, o qual se afigura imprescindível num processo sistemático de aprendizagem pela progressiva representação do mundo exterior que permite.

Bruner (1960) defende que:

“ (…) qualquer assunto pode ser eficazmente ensinado de uma forma intelectualmente perceptível a qualquer criança em qualquer estado de desenvolvimento.”

Esta alegação constitui uma inovação, principalmente em relação às teorias de Piaget. Por conseguinte, a aprendizagem deve sempre iniciar-se no ponto em que o aprendiz se encontra sendo possível ensinar tudo ao aluno desde que se utilizem procedimentos adaptados ao seu estágio de desenvolvimento e às suas necessidades. Esta noção está subjacente à ideia de o currículo dever ser organizado em espiral, de modo a que as construções que o sujeito realiza se façam continuamente sobre a aprendizagem já realizada, construindo novas aprendizagens (Riding, 1980).

Bruner (1990) enfatiza a aprendizagem através da descoberta, na qual salienta o processo activo do aluno. Deste modo, refere que para que se verifique, por parte do aluno, aprendizagem deve haver uma situação de desafio que o leve a resolver problemas. Com esta ideia, Bruner faz uma crítica às metodologias expositivas, considerando, ao invés, que a aprendizagem das Ciências se faz melhor através do envolvimento dos alunos no processo de descoberta e no uso das metodologias científicas próprias de cada ciência:

Capítulo II: Aprendizagem – Fundamentos Teóricos

Julgamos que, logo de início, o aluno deve poder resolver problemas, conjecturar, discutir da mesma maneira como se faz no campo científico da disciplina” (Bruner, 1966).

Contudo, Bruner refere na sua obra Toward a theory of instruction (1966) que para a exploração de alternativas, por parte do aprendiz, é essencial “a presença de um nível óptimo de incerteza”. Torna-se necessário, para garantir este último, agir de forma a evitar que as tarefas a executar, no âmbito da exploração de alternativas, sejam de acentuada rotina ou de demasiada incerteza. No primeiro caso, haverá “pouca exploração” por parte dos sujeitos em situação de aprendizagem; no segundo, poderá surgir “confusão e ansiedade”, o que implicará uma “redução da exploração”.

2.1.3. Teoria da aprendizagem situada

Lave e Wenger (1991) influenciados pelas ideias de Vygotsky, principalmente pelo conceito de zona de desenvolvimento proximal, desenvolveram os princípios da aprendizagem situada. A aprendizagem situada consiste na conjugação do saber e do fazer, e implica que as actividades individuais e colectivas sejam parte de um todo mutuamente construído, num processo dinâmico, activo, interactivo, dialéctico e transaccional, que contribui para desenvolver conhecimentos sólidos e úteis (Wenger, 1998). Situar a aprendizagem significa, segundo Wenger (1998), criar condições para que os aprendizes experimentem a complexidade e a ambiguidade da aprendizagem em situações autênticas, criando assim o seu conhecimento através dos materiais, da experiência, tais como as relações com os outros, as actividades, o ambiente e a organização social dos participantes. Dito de outra forma, o conhecimento é uma relação activa entre o aprendiz e o ambiente, e a aprendizagem ocorre quando o aprendiz se envolve activamente com o contexto de instrução, que deve ser complexo e realista.

Esta teoria está na origem do conceito de scaffolding, o qual teve origem na ZDP de Vygostky, que em português nos remete para a noção de andaime. De facto, a função dum andaime é apenas segurar uma estrutura em fase de crescimento. Uma vez a estrutura construída e alicerçada, o andaime é retirado e voltará a ser colocado numa nova posição com vista ao progresso da construção (Bettencourt-da-Cruz, 2006). Esta noção de andaime tem como característica central o processo designado de participação periférica legítima, que é um processo de entrada numa comunidade de prática do conhecimento, envolvendo a participação nas práticas socioculturais, em que a unidade

Capítulo II: Aprendizagem – Fundamentos Teóricos

básica de análise é a actividade contextualizada das pessoas (Pereira, 2007). Uma

comunidade de prática é constituída por participantes de diferentes níveis: central, activo

e periférico. Um novo elemento que se junta à comunidade desloca-se da periferia para

o centro desta, tornando-se mais activo e envolvido na cultura subjacente. Consequentemente, pode chegar a assumir o papel de um perito.

Neste contexto, a aprendizagem é concebida como um fenómeno sociocultural onde o conhecimento é negociado e aplicado em situações do dia-a-dia, contrariando a perspectiva da aprendizagem como acção de um indivíduo que obtém informação geral

a partir dum corpo de conhecimentos abstractos e descontextualizados (Bettencourt-da- Cruz, 2006). Assim, o aprendiz deve ser exposto à situação o mais realisticamente possível sem exclusão das complexidades do contexto.

Um princípio fundamental que resulta desta teoria, segundo Pereira (2007), é o de organizar a instrução à volta de problemas do mundo real para induzir uma organização

do conhecimento coerente com o seu posterior uso e a intercepção do conhecimento

prévio e preferências com os dos seus colegas de aprendizagem. Neste quadro, a aprendizagem ocorre através da reflexão na experiência, das interacções entre o aprendiz, os outros e o meio.

2.2. Metodologias de aprendizagem

Os focos da educação nos dias de hoje são mais ambragentes que no século passado:

não basta os alunos aprenderem os conteúdos é necessário que consigam reflectir com

eles e sobre eles. É obvio que os conteúdos são importantes, mas aprender a aprender,

ou seja, conseguir que o indivíduo ganhe consciência de como se processa a sua própria aprendizagem e de como pode optimizá-la, é fundamental no mundo actual. Isto porque, mais do que nunca, alguns conteúdos podem perder actualidade, enquanto que

as estratégias e os processos de aprendizagem se mantêm e se podem modificar e

desenvolver (Fonseca e Pereira, 2007). Este facto torna-se particularmente marcante quando se considera o ensino da programação a futuros informáticos, uma vez que a tecnologia informática está em constante e rápida evolução: os conteúdos que se ensina hoje, amanhã – possivelmente, mesmo antes de se concluir o processo formal de ensino – estão desactualizados. Como argumenta Fonseca, sujeitar os aprendizes a puras formas de assimilação de conhecimentos sem dominarem e compreenderem os

Capítulo II: Aprendizagem – Fundamentos Teóricos

conceitos, e vice-versa, pode condenar as futuras gerações a um vazio cognitivo e a resistências à mudança, que podem comprometer seriamente a resolução dos desafios futuros que se lhes avizinham, onde a capacidade de aprendizagem se transformará em vantagem competitiva e em eficácia organizacional.

Das referências teóricas anteriormente estabelecidas, surgiram algumas práticas para novas formas de aprendizagem como, por exemplo, aprendizagem situada, aprendizagem baseada em problemas, aprendizagem por descoberta, entre outras. As características da metodologia da aprendizagem baseada em problemas, descritas na secção seguinte, foram os factores que motivaram a autora em adoptá-la neste estudo, em detrimento de outras.

2.2.1. Aprendizagem baseada em problemas

A aprendizagem baseada em problemas, conhecida pela sigla PBL (Problem-Based

Learning), tem vindo a ser aplicada há mais de 20 anos em diferentes domínios da educação e em diferentes países. A primeira aplicação da PBL verificou-se no ensino

médico durante os anos 60 do século passado, tendo-se estendido a vários outros temas do ensino superior e também secundário (Barrows, 2001). A sua aplicação no ensino superior tem vindo a ser relatada com sucesso em diferentes áreas como, por exemplo,

no ensino da medicina (Barrows e Tamblyn, 1980; Hogan e Eva, 2005), da arquitectura

(Kingsland, 1996), da gestão (Stinson e Milter, 1996), da engenharia (Woods, 2001; Lahtinen, 2005), entre outros domínios (Raine e Symons, 2005; Bateman et al., 2007; Yang et al., 2009).

A PBL é uma forma colaborativa de ensino-aprendizagem, na qual se pretende propiciar uma construção activa, coerente, de modelos mentais do conhecimento, ao invés do simples processamento dos assuntos. É também uma forma de ensino-aprendizagem contextualizada, uma vez que os princípios, as ideias e os mecanismos não são estudados em abstracto, mas antes no contexto de uma situação concreta que pode ser reconhecida pelos aprendizes como relevante e interessante. No caso ideal, a situação assemelhar-se-á à situação profissional futura na qual o conhecimento adquirido irá ser aplicado (Schmidt e Moust, 2001). Esta metodologia centra-se na resolução de problemas complexos da vida real como um estímulo para a aprendizagem, integração e organização da informação aprendida, de forma a garantir a sua aplicação em problemas futuros (Tsai e Shen, 2009).

Capítulo II: Aprendizagem – Fundamentos Teóricos

Segundo Barrows (2001), o objectivo da PBL consiste em formar aprendizes que:

adquiram uma base de conhecimentos integrada;

obtenham uma base de conhecimentos estruturada relativa de problemas reais da área de actuação do profissional em questão;

ganhem uma base de conhecimentos associada a processos de resolução de problemas;

se envolvam, com iniciativa e entusiasmo, nos problemas que vão encontrando ao longo da sua vida profissional;

empreguem as capacidades de aprendizagem auto-dirigida, de forma a continuarem o seu processo de aprendizagem ao longo da vida;

examinem e avaliem a adequação dos seus conhecimentos de forma contínua;

colaborem de forma eficaz como membros de um grupo.

A PBL, para além de promover a construção do conhecimento, fomenta a auto-reflexão,

a cooperação e a responsabilidade, sendo estas partes integrantes do processo de

aprendizagem (Gijselaers, 1996; Norman & Schmidt, 1992; Savery e Duffy, 1995). Resumindo, uma das características que tornam a PBL num modelo educacional em expansão, no que se refere à sua utilização no ensino, é o facto de se poder atingir objectivos educacionais mais amplos, ou seja, permite não só a construção de conhecimentos, por parte dos alunos, mas também o desenvolvimento de capacidades e atitudes que lhes serão úteis na sua vida profissional futura, independentemente do percurso que escolham.

2.2.1.1. A implementação da PBL

Em algumas instituições de ensino, a PBL foi implementada como uma estratégia de educação em todos os anos curriculares de um curso como, sendo este formado por um conjunto de problemas que constitui a espinha dorsal do currículo. Para além desta estratégia, existem outras aplicações desta metodologia como estratégia educacional em unidades curriculares isoladas dentro de um currículo convencional (Barrows, 2001; Hogan e Eva, 2005).

Este modelo de aprendizagem tem dois aspectos centrais: a natureza do problema utilizado, que é o impulsionador da aprendizagem; e a aprendizagem centrada no aluno

Capítulo II: Aprendizagem – Fundamentos Teóricos

(Duch et al., 2001). O problema é o ponto de partida no processo de aprendizagem dos alunos. Assim, a qualidade do problema adoptado é um ponto central nesta metodologia. Segundo o estudo realizado por Schmidt e Moust (2001) sobre a qualidade do problema na PBL, quanto melhor for o conteúdo do problema adoptado, melhor será o empenho dos alunos na sua resolução e maior será o interesse que estes demonstram no assunto em estudo. Estes autores referem ainda que os problemas de fraca qualidade apresentam um risco para a aprendizagem dos alunos, uma vez que estes se sentem frustrados e desinteressados pelo que estão a aprender. Deste modo, o conteúdo do problema deve ter um significado pessoal para os discentes e assim tornar- se motivador. Para além deste aspecto, o problema deve ser adaptado ao nível de conhecimento dos alunos e não deve ser demasiado complexo. Este deve ser transparente, sem ambiguidades, mas sem se dar a solução (ibid.). Assim, a aprendizagem deve ser conduzida por um problema com solução aberta, ou seja, que não tenha uma única solução correcta. O problema deve preceder à teoria, actuando como o foco da aprendizagem, promovendo desta forma a integração dos conceitos e capacidades necessárias para a sua solução (Barrows, 2001).

Os aprendizes são confrontados com um problema e tentam resolvê-lo; em grupos organizam as suas ideias, utilizando a informação e os conhecimentos que possuem. É através da discussão em grupo que os alunos vão avaliar e definir os diferentes aspectos do problema, formular hipóteses e levantar questões de aprendizagem acerca dos aspectos que não compreendem. Deste modo, os aprendizes analisam e avaliam os conhecimentos que têm a priori e adquirem uma percepção mais profunda do problema. As questões de aprendizagem levantadas são tópicos que necessitam de ser estudados, pelo que são distribuídos pelos vários elementos do grupo que se incumbem de ir procurar respostas. Após terem analisado o problema, tanto quanto possível, e identificado o que necessitam de aprender, os alunos envolvem-se num estudo auto- dirigido, com pesquisa das informações necessárias para responder às questões levantadas e resolver o problema. Desta forma, o ensino é personalizado para as necessidades e estilos de aprendizagem do aluno. Os alunos reúnem-se novamente, exploram as questões de aprendizagem anteriores, integrando os seus novos conhecimentos ao contexto do problema, na tentativa de o compreenderem melhor e proporem uma solução. Este processo repete-se enquanto uma solução não for encontrada. No final, os alunos avaliam o processo de aprendizagem, o seu desempenho e o dos colegas, de forma a desenvolverem hábitos de auto-avaliação e avaliação

Capítulo II: Aprendizagem – Fundamentos Teóricos

construtiva dos seus pares, imprescindíveis para uma aprendizagem autónoma e eficaz (Barrows, 2001).

2.2.1.2. O papel do professor e dos alunos na PBL

Este modelo de aprendizagem implica uma mudança de atitude tanto por parte dos alunos como do professor, quando adoptado após experiência de uns e/ou outros com métodos mais tradicionais de ensino-aprendizagem. Os alunos passam a ter um papel mais activo na sua aprendizagem, assumindo uma responsabilidade acrescida, trabalhando em grupo para identificar, analisar e resolver o problema. Debatem o problema em conjunto, expondo e analisando os seus pontos-chave, tendo como resultado a activação do conhecimento prévio dos alunos. Por outro lado, facilita a compreensão e a integração dos novos conhecimentos, aumentando, deste modo, a sua motivação, no sentido de se realizarem como aprendizes para toda a vida (Barrows, 2001; Duch et al., 2001). Os professores, por seu turno, transformam-se em recursos, tutores e guias, acompanhando os alunos nos seus esforços de resolução de problemas. Assim, o contributo do professor consiste em desafiar os alunos a clarificarem as suas ideias, incentivando-os a pensar, a delinearem questões, a procurarem incoerências e a considerarem alternativas, entre outros (Schmidt e Moust, 2001). Deste modo, o professor ajuda os alunos a organizar os seus conhecimentos, a resolver os seus equívocos e a descobrir o que não está bem compreendido.

Em suma, as teorias de aprendizagem podem ser implementadas na prática de ensino de várias formas, nesta tese optou-se por empregar uma que tem um historial de êxito em várias áreas tecnológicas e científicas, a PBL.

3. Ensino da Programação

Procura-se neste capítulo apresentar a situação actual do ensino introdutório da programação a alunos dos primeiros anos dos cursos superiores da área científica da Ciências Informáticas. Começa-se por expor as dificuldades relatadas na literatura científica sobre a aprendizagem da programação. Prossegue-se com a explanação das principais abordagens pedagógicas propostas para o ensino da programação. Faz-se uma breve referência às ferramentas existentes para o ensino e aprendizagem da programação. Por último, face ao exposto apresenta-se a abordagem da investigadora para estudar o problema em questão.

Capítulo III: Ensino da Programação

Capítulo III: Ensino da Programação

3.1. Programar, o que é?

Numa visão genérica do termo, programar significa planear. No nosso quotidiano, todos programamos algo. Por exemplo: programamos o nosso dia de trabalho, programamos

o relógio despertador para uma determinada hora, programamos as nossas férias, etc. E todos somos capazes de o fazer com relativa facilidade.

Programming is a widespread activity that is done both by nonspecialists (e.g., consumers who change the settings of their alarm clock or cellular phone) and specialists (computer programmers).” (Roy e Haridi, 2003).

Quando se fala em programar um computador, as coisas tornam-se mais complicadas. Um computador, como foi referido no capítulo de introdução desta tese, é uma máquina que processa dados e executa, com uma cadência muito rápida, sequências de operações elementares, a partir de informação inserida através de dispositivos de entrada, tipicamente o teclado (Rocha, 2008). Mais concretamente, é uma máquina programável, em que as tarefas a desempenhar são-lhe fornecidas através de um programa, que é uma sequência de operações elementares, podendo ser alterada ou substituída por outra sempre que se deseje. Desta forma, a escrita de um programa tem, normalmente, por objectivo resolver um ou mais problemas. Deve-se começar por compreender e analisar o problema em questão, com o propósito de se esboçar uma solução eficaz para o mesmo. A concepção de uma solução requer escrever um conjunto finito, preciso e ordenado de passos que executados por uma determinada ordem resolvem um problema - o algoritmo. Em seguida, é preciso codificar a solução encontrada numa linguagem de programação, verificar se esta cumpre as regras sintácticas da linguagem de programação em causa e testar se faz o pretendido, isto é, se resolve o problema em questão.

Numa perspectiva mais elevada de mestria, programar é uma arte (no sentido de “ofício”), porque existem muitas maneiras diferentes de codificar instruções, permitindo

a criatividade. É também uma ciência (no sentido de “saber estruturado”), porque é

constituída por um conjunto de regras orientadoras, porque é necessário o uso de lógica

e porque existem alguns métodos rigorosos de programação que asseguram a eficiência, economia e utilidade dos programas gerados (Gomes, 2008).

Capítulo III: Ensino da Programação

3.2. Dificuldades na aprendizagem da programação

As disciplinas de programação surgem na generalidade nos primeiros anos dos cursos

superiores da área científica das Ciências Informáticas, sendo consideradas uma técnica base destes cursos, como salientam Tucker et al. (2003)

“While programming is a central activity to computer science, it is only a tool that provides a window into a much richer academic and professional field. That is, programming is to the study of computer science as literacy is to the study of literature.”

O ensino inicial da programação centra-se no desenvolvimento de algoritmos, na

aprendizagem dos conceitos básicos da programação, na qual se utiliza, na sua maioria, uma linguagem de programação procedimental ou orientada a objectos (McCracken et al., 2001; Goldman et al., 2010). As competências-base que os alunos devem adquirir nos primeiros anos de aprendizagem da programação (Goldman et al., 2010) são as seguintes:

Resumir o problema a partir da sua descrição – os alunos devem ser capazes, a partir da especificação do enunciado do problema, de extrair os aspectos relevantes deste. Gerar o algoritmo – Os alunos devem conseguir desenvolver uma solução para o problema em causa. Esta solução pode ser efectuada por módulos, isto é, a partir do problema inicial, os alunos devem ser capazes de decompô-lo em sub- problemas e gerar soluções para cada um deles. Construindo assim uma solução global para o problema em causa. Codificar a solução – A partir da solução encontrada, os alunos devem ser capazes de transcrevê-la para uma linguagem de programação, testá-la e corrigir os erros de sintaxe e lógicos que possa conter. Devem também ser capazes de ler e compreender o código de programas existentes.

Desde o seu início que a programação de um computador tem sido considerada uma tarefa não trivial, como refere Maurice Wilkes 1 (1985) nas suas memórias:

1 Maurice Vincent Wilkes nasceu em 1913 em Inglaterra, tendo sido pioneiro na ciências de computação, ajudou a construir o computador EDSAC em 1949, inventou a microprogramação em 1950, foi co-autor na escrita do primeiro livro sobre programação de computadores, escreveu o primeiro artigo sobre memórias cache em 1964 e foi pioneiro na arquitectura cliente-servidor em 1980. Recebeu o prémio Turing em 1967 e o prémio Kyoto em 1992. Em 1985 publicou o livro Memoirs of a Computer Pioneer (Wilkes, 2009).

Capítulo III: Ensino da Programação

“By June 1949 people had begun to realize that it was not so easy to get a program right as had at one time appeared. I well remember when this realization first came on me with full force. The EDSAC (Electronic Delayed Storage Automatic Computer) was on the top floor of the building and the tape-punching and editing equipment one floor below on a gallery that ran round the room in which the differential analyser was installed. I was trying to get working my first non-trivial program, which was one for the numerical integration of Airy's differential equation. It was on one of my journeys between the EDASC room and the punching equipment that “hesitating at the angles of stairs" the realization came over me with full force in that a good part of the remainder of my life was going to be spent in finding errors in my own programs.".

Apesar dos avanços tecnológicos, a aprendizagem da programação continua a ser considerada uma tarefa árdua, principalmente para os alunos que pela primeira vez têm contacto com ela, uma vez que o processo de familiarização com a programação não é simples, sendo vários os conceitos que têm de ser compreendidos e praticados. Os alunos têm de ter uma boa capacidade para resolver problemas, conhecer a sintaxe e a semântica da linguagem de programação e serem capazes de compreender o código existente (Winslow, 1996, Garner, 2008, Stiller, 2009). Como advoga Dijkstra (1989), aprender a programar é um processo lento e gradual que requer um estudo baseado na prática, e que é bastante diferente da maioria das disciplinas mais teóricas, que requerem muita leitura e alguma memorização. Daí, ser necessário haver uma consciencialização por parte dos alunos, quando iniciam o estudo da programação, que programar se aprende fazendo e não vendo como se faz. A programação exige um treino intensivo na resolução de problemas, envolvendo competências de diversas áreas para obter um pequeno retorno (Perkins et al. 1988; Dijkstra, 1989). Como salienta Ben-Ari (2001), os conceitos de programação não podem ser directamente transferidos do professor para os alunos, eles devem ser activamente adquiridos por estes.

Apesar deste quadro de complexidade que envolve a aprendizagem da programação, existem alunos que aprendem a programar facilmente, sem necessitarem de fazer um esforço excessivo. Contudo, grande parte dos alunos não o consegue sem um acompanhamento intensivo por parte do professor (Robins et al., 2003). Outros alunos simplesmente acabam por desistir do curso por não alcançarem aprovação às disciplinas que envolvem a programação (Kelleher e Pausch, 2005; Garner, 2009). Por outro lado, uma percepção negativa sobre a natureza e os atractivos do trabalho na área da computação, principalmente o receio de terem de trabalhar isolados sem contacto

Capítulo III: Ensino da Programação

humano e de ser um campo da ciência que atrai poucas mulheres, são factores que têm contribuído para o declínio do interesse mostrado pelos alunos por esta área do saber (Cassel et al., 2007; Stiller, 2009).

Várias têm sido as razões apontadas na literatura científica para as causas destas dificuldades. Linn e Clancy (1992) referem que os alunos sentem dificuldades em compreender o enunciado do problema e consequentemente em desenhar uma solução para o mesmo. No estudo realizado por McCracken et al. (2001), no qual participaram alunos de diferentes instituições de ensino e de diferentes países, os investigadores concluíram que independentemente da linguagem de programação e do paradigma (procedimental simples ou orientado a objectos) adoptado, os alunos sentem as mesmas dificuldades. Neste estudo, McCracken et al. identificaram que a parte mais difícil da programação, para a generalidade dos alunos, consiste em conseguirem compreender o enunciado do problema a resolver e consequentemente desenvolverem uma solução. Verificaram também que a maioria dos alunos não adquiriu as competências-base desejadas, a média da pontuação obtida foi de 22.89 nos 110 pontos dos critérios gerais. Este estudo foi repetido por Lister et al. (2004), que chegaram às mesmas conclusões:

identificou-se que os alunos apresentam frequentemente falhas de aptidão para resolver problemas. Esta dificuldade, segundo Gomes et al. (2006) advém da falta de conhecimentos de base de Matemática. Do estudo que realizaram com alunos de Engenharia Informática do ensino superior, concluíram que a maioria destes alunos não domina os conceitos básicos de Matemática, que posteriormente se reflecte na sua capacidade de resolver problemas (ibid.). De acordo com Dann, Cooper e Pausch, (2000), e também segundo Miliszewska e Tan (2007), esta lacuna deve-se principalmente ao facto de os alunos não terem formação em cálculo no ensino secundário (pré- superior). Este ponto de vista é igualmente defendido por Fonseca (2007) que vai mais longe ao afirmar:

As instituições de ensino partem da assunção falsa de que os aprendizes dispõem de funções cognitivas para aprender e para reaprender, mas tal não é verdade. Por esse facto, essas instituições têm sido um local de sucesso para alguns, mas de insucesso para muitos.” (p. 355).

O próprio adianta ainda:

Muitos alunos não têm o seu potencial de aprendizagem actualizado, na medida em que carecem de pré-requisitos cognitivos básicos para obterem mais rendimento na

Capítulo III: Ensino da Programação

aprendizagem, considerando que raramente são colocados em situações de reflexão e de pensamento crítico, porque são frequentemente integrados em programas inadequados e ineficientes.” (p. 355).

Esta situação resulta no facto dos alunos não evidenciarem as qualidades perceptivas necessárias para extrair dados da informação apresentada e conseguirem desenvolver estratégias para resolver os problemas (ibid.).

Uma outra vertente apontada para a causa desta dificuldade refere-se à inadequada pedagogia utilizada no ensino da programação (Spohrer e Soloway 1986; Linn e Clancy 1992; Guzdial 2004a). Linn e Clancy (1992) sugerem, das observações efectuadas, que os alunos têm o seu conhecimento de programação organizado em torno da sintaxe da linguagem de programação utilizada. Consequentemente, os alunos sentem dificuldades em desenvolver algoritmos. Uma boa organização do conhecimento ajuda os alunos a relembrar e a reutilizar a informação que aprenderam, na medida em que lhes auxilia no reconhecimento de semelhanças entre diferentes problemas, assim como entre diferentes partes da informação, melhorando a sua compreensão (Anderson, 2004). Husic, Linn e Sloane (1989) e Robins et al. (2003) referem que os professores, muitas vezes, dão demasiada ênfase à sintaxe da linguagem, pelo que os alunos organizam o seu conhecimento, deste modo, em consequência da forma como a informação lhes é apresentada (Linn, Sloane e Clancy, 1987; Guzdial, 2004a). A generalidade dos livros de introdução à programação também pode contribuir para reforçar a ênfase na sintaxe da linguagem e em exemplos individuais de aprendizagem em vez de encorajar os alunos a reconhecer e a reutilizar padrões mais complexos (Guzdial, 2004a). Por exemplo, os livros de introdução à linguagem C, geralmente, restringem-se a introduzir a sintaxe da linguagem ao longo dos vários capítulos.

Apesar de alguns alunos não apresentarem dificuldades na resolução de problemas, muitos não são capazes de codificar a solução encontrada na respectiva linguagem de programação (Sohrer e Soloway, 1989; Winslow, 1996; Lahtinen et al., 2005). Os alunos reclamam que não gostam de programar, uma vez, que não compreendem conceitos básicos tais como a noção de variáveis, endereços de memória e outros (Jenkins, 2002; Milne e Rowe, 2002; Miliszewska e Tan, 2007). Uma das causas possíveis refere que estes conceitos são abstractos, sem uma representação equivalente na vida real (Lahtinen et al., 2005; Miliszewska e Tan, 2007). Devido à natureza abstracta da programação, muitos alunos sentem dificuldades em compreender a estrutura do programa e principalmente o seu funcionamento (Cypher et al., 1993; Esteves e Mendes, 2004;

Capítulo III: Ensino da Programação

Lemieux, e Salois, 2006; Urquiza-Fuentes e Velázquez-Iturbide, 2009). Um aspecto importante na aprendizagem da programação consiste em os alunos conseguirem

estabelecer uma ligação entre o que escrevem, quando estão a digitar o código, e o que o programa realmente faz. Doutro modo, dificilmente os alunos conseguem compreender

o que se passa quando um programa não funciona correctamente. Uma das causas

apontadas refere-se ao facto dos alunos terem noções incorrectas dos conceitos-base de programação (Kolikant e Mussai, 2008; Kaczmarczyk et al., 2010) e consequentemente noções incorrectas acerca de um programa completo. A compreensão de um programa

é muitas vezes vista como um processo de condução de hipóteses cujo objectivo

consiste em construir uma representação mental do programa. Esta representação mental compõe-se em distintas partes: descrever o código do programa, o significado deste na perspectiva do domínio de aplicação e a ligação entre estes dois aspectos (Vainio e Sajaniemi, 2007). Durante a compreensão de um programa, o programador gera hipóteses relacionadas com as três partes da representação mental e tenta validar ou invalidar as hipóteses colocadas. Por exemplo, gerar hipóteses “deixa ver o que este conjunto de instruções faz, de forma a poder saber qual o seu objectivo; isto parece que efectua a pesquisa de um número no vector” e validá-las “deixa ver se realmente é assim ”. Este processo é necessário para a compreensão de novos programas e verificação de erros no código. Os alunos inexperientes têm dificuldade em fazer esta representção mental tanto de partes de um programa como de um programa completo.

Os primeiros estudos, como o trabalho de Mayer (1981), sobre os modelos mentais da acção de escrever instruções num programa, seguido do estudo de Bayman e Mayer (1983) no qual examinaram os equívocos dos alunos relacionados com a escrita de instruções individuais na programação em Basic, concluíram que muitos alunos tinham compreensões incorrectas ou equívocos, mesmo em relação às instruções mais simples. Bonar e Soloway (1985), por seu turno, focaram-se em grupos de instruções de forma a analisar a compreensão dos alunos sobre a programação. Deste estudo, Bonar e Soloway concluíram que muitos dos erros resultam dos alunos não terem um conhecimento correcto da linguagem de programação e usarem erradamente os conhecimentos que têm de como resolver o problema passo-a-passo na linguagem natural.

Estudos efectuados mais recentemente, por Gotschi, Sanders, e Galpin, (2003), por Ma et al., (2007) e por Kaczmarczyk et al., (2010) vêm corroborar este facto: os alunos têm modelos mentais errados dos conceitos de base da programação, como, por exemplo, inicializar variáveis, usar estruturas de controlo e empregar ponteiros, o que lhes

Capítulo III: Ensino da Programação

dificulta a tarefa de conseguir escrever programas correctamente. Não obstante, para além de alguns alunos terem dificuldades em compreender os conceitos abstractos, muitos há que embora os compreendam não sabem como aplicá-los correctamente de forma a criar estruturas mais complexas (Perkins et al., 1988; Jenkins, 2002; Gomes et al., 2008). Soloway (1986) realça que a dificuldade real dos alunos, no seu processo de aprendizagem da programação, consiste em “putting the pieces together”, ou seja, em perceber que elementos devem usar e como coordená-los de forma a criar um programa correcto.

Uma das vertentes defendidas na literatura para estas dificuldades, especialmente referente à codificação, diz respeito à linguagem de programação adoptada no ensino (Hadjerrouit, 1998; Close, Kopec e Aman, 2000, Jekins, 2002, Gomes et al., 2008, Hanhs e Brandt, 2009). Como Lister et al. (2004) verificaram no seu estudo, a maioria das instituições de ensino utiliza a linguagem de programação Java. Tymann (2005), do estudo que efectuou, acrescenta as linguagens de programação C e C++, como linguagens de introdução da programação mais utilizadas no ensino. Dos estudos realizados por Dingle & Zander, (2000) e por Raadt et al. (2002 e 2004) conclui-se que os factores que mais influenciam a escolha da linguagem de programação a adoptar no ensino na área da ciência da computação são:

as necessidades do mercado;

as exigências das empresas;

a opinião dos alunos de que a linguagem leccionada seja a que vão usar na vida profissional.

Conquanto, deve-se estar atento ao facto de que a popularidade de uma linguagem não significa obrigatoriamente que esta seja uma boa opção para o ensino, como salientou McGracken em 1973 no caso da linguagem FORTRAN:

Nobody would claim that FORTRAN is ideal for anything, from teachability, to understandability of finished programs, to extensibility. Yet it is being used by a whopping 70% of the students covered by the survey, and the consensus among the university people who responded to the survey is that nothing is going to change much anytime soon”(p.

88).

De facto, o FORTRAN continuava a ser largamente utilizado na educação até ter surgido o Pascal. Böszörményi (1998) faz um comentário semelhante em relação à

Capítulo III: Ensino da Programação

linguagem Java. Contudo, esta tem sido utilizada desde o seu aparecimento em 1995 até aos dias de hoje. Talvez isto se deva ao facto de, como Böszörményi refere:

“(…) the approach we think today to be the best (if there is one) was not the first and probably will not be the last. The university should not try to teach ultimate wisdom: it should rather teach students to think about different possibilities” (p. 142).

Nos anos 70, Gries (1974) e Schneider (1978) referiam que a introdução à programação deveria ter por objectivo a resolução de problemas e o desenvolvimento de algoritmos, pelo que a linguagem de programação utilizada:

“(…) should be based on two critical and apparently opposing criteria: richness and simplicity – rich in those constructs needed for introducing fundamental concepts in computer programming but simple enough to be presented and grasped in a one semester course.” Schneider (p. 110)

Estas alegações ainda hoje se mantêm válidas. Um aluno inexperiente começa por aprender a sintaxe da linguagem, progredindo de forma a ser capaz de combinar essa sintaxe para resolver problemas específicos e finalmente adquirir aptidões gerais de resolução de problemas que podem ser transferidos para outros domínios não relacionados com a programação (Bereiter e Ng, 1991). A ideia de ter uma sintaxe simples está claramente relacionada com este pensamento; de colocar o foco da aprendizagem na resolução de problemas. Jenkins (2002) salienta que as linguagens de programação utilizadas na aprendizagem têm uma sintaxe adequada para os profissionais, mas não para os alunos inexperientes. Tal como acontece, por exemplo, com as linguagens C++, Java e C detentoras de um vocabulário extenso e complexo que pouco tem a ver com a aprendizagem de algoritmos e a escrita de programas estruturados.

Uma linguagem de programação com um pequeno número de comandos e funções permite solucionar facilmente problemas simples, mas a solução de problemas mais complexos pode tornar-se difícil. Como é o caso, por exemplo, da linguagem Scheme:

esta tem a vantagem de ter um único tipo de dados – listas – e uma operação – avaliação da lista. Embora esta abstracção seja muito simples de explicar e não seja de difícil compreensão para os alunos inexperientes, resulta, no entanto, num código que é difícil de ler, uma vez que tem um grande número de parêntesis aninhado, assim como a ausência de outros tipos de pontuação. Por outro lado, uma linguagem com um número alargado de comandos e funções facilita a elaboração de problemas complexos, mas

Capítulo III: Ensino da Programação

torna difícil a assimilação da sintaxe. Os aprendizes têm dificuldades em reter duas ou mais perspectivas de conceitos em simultâneo (Hofstadter, 1979). Deste modo, o facto de os alunos terem de lidar com a semântica e sintaxe da linguagem, estruturas de dados estáticas e dinâmicas, entre outros aspectos, dificulta a aprendizagem, como acontece com as linguagens de programação profissionais, C, C++ e Java, possuidoras de uma sintaxe complexa e uma extensa semântica, que se tornam difíceis de ensinar e complicadas para os aprendizes assimilarem (Mclver e Conway, 1996).

No estudo desenvolvido por Jadud (2005), com alunos inexperientes, verificou-se que os alunos passam grande parte do tempo imersos nos erros de sintaxe quando aprendem

a programar em Java. Este facto torna-se ainda mais evidente para os alunos com mais

dificuldades. Fenwick et al. (2009), no estudo que efectuaram, confirmaram os resultados obtidos por Jadud (2005), tendo-se verificado que os alunos compilam o programa poucas vezes e normalmente só o fazem no fim de terem escrito uma grande quantidade de código. Em consequência desta forma de programar, quando os alunos compilam o seu programa obtêm geralmente um elevado número de erros que dificilmente conseguem corrigir. Face a este elevado número de erros, os alunos sentem-se frustrados e desiludidos, como concluíram Rodrigo et al. (2009) no estudo efectuado sobre o comportamento dos alunos inexperientes. Os erros de sintaxe mais frequentes observados nestes estudos foram:

falta de pontos-e-vírgulas; variáveis que não são declaradas; falta de chavetas, quer nas estruturas de controlo quer nos métodos; classes e métodos desconhecidos.

Por outro lado, Kopec et al. (2007) realizaram um estudo para observar que tipos de erros cometem os alunos de nível intermédio, que já possuem alguns conhecimentos de programação. Nesse estudo, os alunos aprenderam a programar com a linguagem C. Kopec et al. verificaram que os alunos intermédios não cometem muitos erros de

sintaxe, sendo capazes de corrigir os que surgem no seu código. Contudo, os erros mais frequentes observados nestes alunos incidiam na codificação de funções, nomeadamente

a utilização de funções com parâmetros de entrada incorrectos. Outros, no entanto,

utilizavam estruturas de repetição erradas: em vez de usarem um for, que seria o mais correcto, para o problema em causa, usavam um ciclo while. Isto demonstrava falta de conhecimento de como usar as estruturas de repetição correctamente. Kopec et al.

Capítulo III: Ensino da Programação

concluíram que os professores devem ter muito cuidado na apresentação e descrição do enunciado do problema, uma vez que os alunos facilmente se confundem com a linguagem usada na descrição do enunciado. Os alunos também apresentam dificuldades para saber que estrutura melhor se adapta a uma determinada situação.

Outro aspecto importante na aprendizagem da programação é a atitude dos alunos face aos erros, que, segundo Perkins et al. (1989), é bastante diferenciada. Existem alunos incapazes de prosseguir quando confrontados com um erro no seu programa ou com a falta de uma direcção clara do que fazer a seguir, alunos estes que Perkins et al. designam por “estáticos”. Os alunos estáticos perdem toda a esperança de conseguir resolver o problema por si só e de continuarem a progredir. Outros há que, face aos erros, procuram soluções, experimentam e modificam o seu código, designados de Movers. E dentro deste grupo, os Movers, existem alunos que analisam as mensagens de erro que o sistema lhes fornece, tentam compreender a sua origem e conseguem corrigi-los e consequentemente progridem na aprendizagem. Por outro lado, existem alunos dentro deste grupo de Movers que fazem alterações aleatoriamente sem pensar no que estão a fazer, deste modo não conseguindo progredir na aprendizagem.

O descontentamento gerado pelo uso das linguagens C, C++ ou Java na introdução à programação (Feldman, 1992; Roberts, 1993; Hadjerrouit, 1998; Reges, 2006) motivou a mudança, por parte de algumas universidades, para linguagens de programação usadas no passado, como o Pascal, ou a ponderar a possibilidade de adoptar linguagens como Python (Becker, 2002). Este descontentamento foi também factor impulsionador para o desenvolvimento de novas linguagens de programação mais simples, com o intuito de ajudar os alunos inexperientes a aprender a programar e a facilitar a migração posterior para linguagens com características mais complexas (Guzdial, 2004b; Hundhausen et al., 2010). Outra abordagem foi o desenvolvimento de ambientes que não alteram a linguagem de programação usada, mas “escondem” partes da linguagem (Guzdial, 2004b). Na secção seguinte expõem-se algumas destas linguagens e alguns destes ambientes.

Outros autores, como por exemplo Dann et al. (2000), Reis e Cartwright (2004), Hundhausen, Farley e Brown (2009), referem que uma das causas que contribui para este panorama de dificuldades, principalmente no que se refere à codificação, é a utilização de ambientes de programação inadequados para alunos inexperientes. Os ambientes de desenvolvimento integrados, comummente designados de Integrated Development Environment (IDE), são ferramentas que permitem ao programador escrever,

Capítulo III: Ensino da Programação

editar, executar e testar programas. Os IDE são geralmente desenvolvidos tendo em vista os programadores profissionais, pelo que estes possuem um interface complexo e uma multiplicidade de instrumentos (Figura 3.1) que tornam a sua utilização complicada para os alunos inexperientes (Kelleher e Pausch, 2005). Contudo, muitos deles são usados no ensino da programação, como por exemplo o Eclipse, JBuilder, Delphi ou Dev C++ (Trætteberg e Aalberg, 2006; Röbling et al., 2008). Estes factores motivaram alguns autores a desenvolver ferramentas de programação com o propósito de ajudar os programadores inexperientes na aprendizagem (Brown, 1984; Stasko, 1989; Concepcion et al., 1999; Röbling e Freigleben, 2001; Virtanen et al., 2005; Dann e Cooper, 2009). Na secção seguinte expõe-se algumas destas ferramentas.

Na secção seguinte expõe-se algumas destas ferramentas. Figura 3.1: Ambiente de programação Eclipse IDE Aliado a

Figura 3.1: Ambiente de programação Eclipse IDE

Aliado a estes factores, existe outro: verifica-se que os alunos que frequentam as disciplinas de programação apresentam níveis de experiência muito diferentes, pois alguns já tiveram contacto com uma ou várias linguagens de programação no ensino não superior e outros estão pela primeira vez a ter esse contacto (Milne e Rowe, 2002; Kelleher, e Pausch, 2005; Gomes et al., 2008). Na leccionação de aulas de programação,

Capítulo III: Ensino da Programação

a investigadora também constatou a mesma situação, uma vez que é permitido que alunos de áreas muito diferenciadas frequentem o ensino, e como tal com conhecimentos de base muito diversificados. Assim, é possível encontrar alunos que vêm da área tecnológica já com alguns conhecimentos de programação e outros que apenas possuem conhecimentos informáticos na óptica do utilizador. Um aspecto fundamental no processo de aprendizagem é a assimilação de novos conceitos nas estruturas cognitivas existentes (Vygotsky, 1979; Bruner, 1990). Por conseguinte, esta discrepância nos conhecimentos de base dos alunos torna o processo mais complexo para os pedagogos do ensino tradicional, devido às aulas serem frequentadas por alunos de diferentes níveis de saber e capacidades.

Nesta secção reviu-se os factores principais que têm vindo a ser apontados na literatura científica como causas que condicionam a aprendizagem da programação e a torna num processo difícil e exigente para a maioria dos alunos. A resposta a cada uma destas dificuldades resultou num conjunto de soluções que se traduziram, na sua maioria, no desenvolvimento de ambientes de programação que tentam minimizar estas dificuldades. O que não é de estranhar uma vez que não existe uma resposta correcta que abranja estas dificuldades na sua totalidade. Na secção seguinte, sumariza-se as diferentes soluções propostas para o ensino da programação de forma ajudar a colmatar estas dificuldades.

3.3. Soluções propostas na literatura para o ensino da programação

Na literatura científica encontram-se muitos artigos que relatam experiências ou abordagem utilizadas no desenvolvimento de ferramentas cuja intenção é melhorar a eficácia do ensino e da aprendizagem introdutória da programação de computadores. Contudo, encontram-se poucos artigos relacionados com pedagogias para o ensino da programação. Algumas das metodologias, consistem num conjunto de linhas orientadoras que alertam os professores para determinadas questões de forma a melhoraram a aprendizagem dos alunos. Por exemplo Hanks e Brandt (2009) do estudo que desenvolveram, sugerem que os professores devem:

Tentar que os alunos pensem no problema antes de começarem a codificá-lo. Devem encorajar os alunos a perguntarem-se “Por que ordem devo fazer isto?”

Capítulo III: Ensino da Programação

Ensinar os alunos a compilar e a testar os seus programas frequentemente. Se o professor programar em frente aos alunos deve seguir este exemplo para que os alunos se habituem a fazê-lo também. Assim, os alunos vão verificando e corrigindo os erros de sintaxe à medida que surgem, sendo mais fácil para os alunos aperceberem-se das falhas que cometem. Ensinar os alunos a usar o debugger, uma vez que muitos não o sabem utilizar. Fazer o debugging a um programa é uma forma de os alunos compreenderem o que o debug faz e de corrigirem os erros de execução. Esta aproximação também á corroborada por outros autores como Murphy et al. (2008). Salientar as partes da linguagem de programação em que os alunos se confundem mais. Incentivar os alunos a usarem técnicas de teste. A realização de testes é uma forma disciplinada de desenvolvimento, que implica a escrita de blocos autónomos de teste antes da implementação da correspondente unidade funcional. Esta metodologia de testes tem vindo a ser usada na indústria no desenvolvimento de software (Larman e Basili, 2003). Recentemente foi aplicada no ensino introdutório da programação com algum sucesso (Wellington et al., 2007; Desai et al. , 2009), como forma de facilitar a aprendizagem da programação, na medida em que obriga os alunos a testarem cada uma das sub- soluções do problema e a verificarem se está correcta, ajudando-os assim na construção de uma solução geral para o problema. No entanto, os alunos apresentam alguma resistência à utilização desta metodologia, como referem Melnik e Maurer (2005): no estudo que efectuaram, os alunos que ainda não compreendem o que um programa faz têm dificuldades em desenhar testes. Esta dificuldade levou ao desenvolvimento de algumas ferramentas para simplificar a escrita de testes, como o ComTest (Lappalainen et al., 2010) mas ainda faltam estudos que comprovem a sua eficácia.

3.3.1. Programação modular

A programação modular é uma metodologia que vem sendo utilizada no ensino da programação desde os anos 70 (Lemos, 1979; Dutta, 1985; Kiczales e Mezini, 2005). Esta metodologia consiste em segmentar o problema em unidades ou módulos que correspondem a uma tarefa que pode ser codificada, compilada e testada como um

Capítulo III: Ensino da Programação

subprograma independente. Como consequência da utilização desta metodologia, os sub-programas são menos complexos, resultando em programas melhor estruturados. Por outro lado os sub-programas são mais fáceis de testar e de corrigir os possíveis erros. Esta abordagem segue a abordagem top-down para resolver problemas, que consiste em dividir o problema inicial em sub-problemas cada vez mais pequenos, de modo que o problema original se torne mais compreensível e de mais fácil interpretação.

3.3.2. Abordagem gramatical

A abordagem gramatical envolve a exposição passo-a-passo da estrutura gramatical da

linguagem de programação adoptada. Este método consiste em ensinar aos alunos a linguagem de programação, salientando as regras da linguagem e focando a maioria das opções desta. Com esta abordagem, relativamente à anterior, os alunos podem começar a codificar os programas mais cedo. Contudo, os alunos pouco ficam a conhecer da natureza da programação, uma vez que grande parte do tempo é passado com o ensino das regras gramaticais. Esta metodologia tem vindo a ser criticada como metodologia de ensino devido às dificuldades que os alunos sentem com a sua utilização, como foi referido na secção anterior.

3.3.3. Abordagem em espiral

A ideia-base da abordagem em espiral consiste em ensinar a linguagem de programação

usando uma aproximação estrutural em vez de gramatical. Assim, tópicos como a sintaxe da linguagem, a estrutura física do computador e as instruções específicas da

linguagem não são abordados nas primeiras semanas de aulas. Os alunos focam-se na escrita de simples programas no inicio do seu estudo, progredindo sucessivamente para níveis de dificuldade maior, centrando-se em programas que ilustram os vários conceitos de programação. Lemos (1979) refere que com esta abordagem torna-se mais fácil para

o professor distinguir quais as dificuldades que os alunos sentem na resolução de problemas e na sua codificação.

Capítulo III: Ensino da Programação

3.3.4. Protocolo “pensar em voz alta”

Arshad (2009) sugere outra abordagem para o ensino introdutório da programação, baseada no protocolo de pensar em voz alta. Este protocolo foi desenvolvido por Ericcson e Simon (1984), com o objectivo de compreender o processo de pensamento que um sujeito utiliza ao usar um produto ou dispositivo. Neste protocolo é dada uma tarefa a realizar a uma pessoa que a executa e simultaneamente explica verbalmente o método que emprega para a concretizar. Esta abordagem tem vindo a ser utilizada no ensino da física com algum sucesso (Walsh et al., 2007). Arshad (2009) usou este protocolo no ensino introdutório da programação, durante o qual semanalmente os alunos observavam um perito em programação a resolver um problema. Enquanto o perito resolvia o problema ia explicando verbalmente o processo mental que estava a fazer. Os alunos, por seu turno, podiam ir colocando perguntas de forma a perceberem o que se estava a passar. Posteriormente, nas aulas laboratoriais era dado aos alunos um conjunto de exercícios semelhantes, para estes praticarem o que tinham visto o perito fazer. Arshad também sugere que se utilize uma ferramenta de discussão, onde os alunos possam colocar as suas questões e trocar impressões uns com os outros. No estudo realizado utilizando esta metodologia, Arshad concluiu ser uma abordagem eficaz mas que não deve ser usada isoladamente, antes em conjunto com outras como, por exemplo, uma ferramenta de discussão e aulas práticas de laboratório.

3.3.5. Programação de jogos

Esta abordagem tem por objectivo ir ao encontro dos interesses da maioria dos alunos, que frequentemente são os jogos, e consequentemente motivá-los para a aprendizagem da programação. Na programação de um jogo é dado ao aluno o motor ou o interface deste, sendo-lhe pedido que implemente as suas funcionalidades. Outra vertente consiste em pedir ao aluno que crie um jogo completo, processo no qual o aluno tem de criar as personagens e o enredo do jogo. Esta abordagem tem a vantagem de deixar os alunos expressarem a sua criatividade, servindo de suporte à compreensão e motivação destes pela aprendizagem da programação. Wu (2009) sugere a utilização da linguagem JavaScript para o desenvolvimento de jogos, uma vez que esta linguagem tem a particularidade de permitir aos alunos criarem os seus jogos e disponibilizá-los na Web. Outro aspecto do uso de JavaScript é a vantagem de os alunos aprenderem os

Capítulo III: Ensino da Programação

conceitos-base de programação utilizando uma linguagem menos complexa que o C ou Java.

3.3.6. Programar do concreto para o abstracto

Esta metodologia baseia-se no princípio de que os jovens aprendem mais facilmente se

os dados a estudar forem tangíveis e directamente acessíveis aos seus sentidos visuais, auditivos, tácteis e cinestésicos (Dann e Cooper, 2009). Com a experiência, desenvolvem

a capacidade de compreender dados abstractos, manipular símbolos, efectuar raciocínios

lógicos e, consequentemente, a generalizar. No entanto, a maioria das pessoas necessita, ao longo da vida, de exemplos concretos para compreender ideias novas (ibid.). Segundo estes autores, no ensino da programação deve-se começar do concreto para a

abstracção, como acontece no ambiente de programação Alice. Neste ambiente, os alunos pegam em objectos concretos e familiares, como árvores, casas, carros e outros, e

a partir deles criam pequenos filmes de animação ou jogos. Assim, o aprendiz envolve-

se no desenvolvimento de algo que o motiva, sendo impulsionando na procura e no estudo de soluções, de forma a conseguir colocar em acção o que vai na sua imaginação.

Esta abordagem é semelhante à anterior, de programação de jogos. No entanto no ambiente Alice a programação é muito simplificada, como se descreve na secção seguinte.

3.3.7. Padrões de programação

Esta abordagem consiste na utilização de padrões para ajudar os alunos a aprender a programar. Um padrão de programação (Figura 3.2), geralmente, introduz um problema, explica a ideia e os conceitos subjacentes e finalmente apresenta a solução geral, abstracta no contexto de uma determinada linguagem de programação (de Barros et al.,

2005).

Os padrões de programação podem ajudar os alunos inexperientes de duas formas

na aprendizagem de conceitos, estratégias gerais de programação e na resolução de problemas (num nível de abstracção elevado); em assimilar a sintaxe e aprender a usar um linguagens de programação, uma vez que a sua documentação inclui um exemplo de aplicação do padrão.

Capítulo III: Ensino da Programação

Capítulo III: Ensino da Programação Figura 3.2: Exemplo de um padrão para a estrutura de repetição

Figura 3.2: Exemplo de um padrão para a estrutura de repetição while.

A utilização de padrões no ensino da programação torna-se mais eficiente se for

utilizada com o apoio de uma ferramenta. Assim, quando um aluno mostra dificuldades em resolver um problema ou uma parte deste, selecciona o padrão relacionado com o problema em causa. Um exemplo desta ferramenta de aprendizagem é ProPAT (de Barros et al., 2005), no qual os alunos poder resolver problemas com a ajuda de padrões, sendo também possível adicionar padrões ao ambiente. Para além das vantagens já mencionadas, os autores desta ferramenta referem ainda que esta abordagem ajuda os alunos a aprender a transferir o conhecimento adquirido para situações análogas.

3.3.8. Programação aos pares

A programação aos pares tem vindo a ser proposta como uma metodologia de ensino. A programação aos pares (“pair programming”) é uma técnica de programação em que dois programadores trabalham em conjunto num único computador, no mesmo projecto. A pessoa que está a escrever no computador é chamada de “condutor” e o outro colega de “navegador”. Ambos têm as suas responsabilidades: o condutor está

encarregue de produzir o código, enquanto que o navegador deve procurar erros, pensar

na estrutura geral do código, encontrar informação quando necessário, e estar sempre

Capítulo III: Ensino da Programação

disponível para discutir com o condutor as opções a tomar em cada momento. Enquanto par, os parceiros trocam de papéis regularmente, muitas vezes com base em situações em que um elemento tem uma boa ideia para implementar uma solução. Esta técnica tem sido utilizada em diversos projectos de grande dimensão por se considerar que tem várias vantagens como, por exemplo, aumentar a produtividade e a satisfação, enquanto melhora a qualidade do software desenvolvido (Beck, 1999; Hulkko e Abrahamsson, 2005).

De um ponto de vista educativo, a programação aos pares pode ser vista como uma forma de aprendizagem colaborativa. Esta metodologia de aprendizagem tem vindo a ser reportada como uma técnica que ajuda os alunos a aprender a programar, resultando numa melhoria do sucesso escolar (McDowell et al., 2006). Diversos autores referem que o trabalho colaborativo em geral, e a programação em pares em particular, são técnicas pedagógicas eficazes para a aprendizagem da programação (Bravo et al., 2004; McDowell et al., 2006; Hedin et al., 2008). Contudo, no estudo desenvolvido por Hans (2007), este concluiu que os tipos de problemas encontrados nos alunos que aprendem a programar aos pares são idênticos aos encontrados nos alunos que aprendem sozinhos. No estudo por si realizado, Hans verificou também, contudo, que os alunos que trabalham aos pares são capazes de resolver mais problemas por si, principalmente erros de sintaxe, o que pode aumentar a confiança e auto-estima do aluno.

Na adopção desta metodologia têm surgido estudos sugerindo que a personalidade dos parceiros é um dos factores críticos na sua implementação (Kichuk e Wiesner, 1997; Karn e Cowling, 2006). Uma vez que a programação aos pares é uma prática que envolve duas pessoas que trabalham juntas para alcançar um objectivo comum, o êxito desta prática é largamente determinado pelo grau de eficiência da forma pela qual os pares trabalham em equipa, independentemente das suas capacidades e conhecimentos. Neste contexto da eficácia da equipa, a personalidade tem vindo a ser referida como um factor crítico de sucesso. Contudo, no estudo desenvolvido por Salleh et al. (2009), estes concluíram que diferentes tipos de personalidade não afectam significativamente o desempenho dos alunos na programação aos pares, tendo-se verificado que esta metodologia aumenta a autoconfiança e a satisfação dos alunos na aprendizagem.

Capítulo III: Ensino da Programação

3.3.9. Programação por exemplos

A programação por exemplos é uma abordagem semelhante à programação por padrões, uma vez que ambas salientam a utilização de soluções de problemas criados anteriormente. No entanto, na programação por exemplos são utilizados exemplos concretos de programas implementados para resolver um determinado problema. Assim, os alunos observam e estudam exemplos concretos relacionados com o

problema que estão a resolver. Desta forma quando os alunos sentem dificuldades em resolver um determinado problema, é-lhes dada uma solução idêntica, que eles analisam

e alteram para resolverem o problema em questão. No estudo realizado por Lahtinen et al. (2005), tanto os alunos como os professores consideraram esta abordagem como sendo eficiente no estudo da programação.

3.3.10. Abordagem “bricolage”

Stiller (2009) propôs uma abordagem para o ensino da programação que designou por bricolage approch, inspirada na metodologia de aprendizagem baseada em exemplos (Stiller,

e LeBlanc, 2006) e na aprendizagem construtivista. Esta abordagem consiste em duas

fases que são (a primeira) a formulação de hipóteses e teste e (a segunda) a resolução de

problemas. Na primeira fase é dado aos alunos um programa para testarem e com ele se familiarizarem em termos da execução que apresenta. Os alunos, por seu turno, ao testarem o programa vão desenvolvendo hipóteses de forma a explicar o respectivo funcionamento. Nesta fase é também pedido aos alunos que façam pequenas alterações no programa dado e observem o resultado dessas alterações. Assim, os alunos vão compreendendo como o programa funciona e simultaneamente assimilam os conceitos que estão a ser ensinados. Na segunda parte desta metodologia, que tem início após os alunos compreenderem o programa dado, é-lhes pedido que usem este programa como ponto de partida para o desenvolvimento de outro com novas funcionalidades. Esta metodologia tem vindo a ser utilizada por este autor com algum êxito no ensino introdutório da programação. Contudo, o mesmo autor refere ainda que a abordagem tem uma desvantagem, que é o facto de os alunos não desenvolverem nenhum programa de raiz, podendo levá-los a pensar que não são capazes de o fazer.

Capítulo III: Ensino da Programação

3.3.11. Sistemas de suporte ao ensino da programação

Na literatura científica encontram-se algumas ferramentas que foram desenvolvidas com

o propósito de ajudar os alunos a colmatar as suas dificuldades, que se destacam na secção seguinte. Estas ferramentas são usadas conjuntamente com algumas das abordagens descritas, nomeadamente a programação aos pares, os padrões de programação, entre outras.

Em suma, após a análise deste conjunto de abordagens conclui-se que a quase totalidade destas podem auxiliar o aluno como algo complementar, mas como referem Martins et al. (2010) é importante que os alunos percebam que programar é acima de tudo um exercício mental que pode ser desenvolvido através de actividades adequadas e com esforço. Assim, qualquer estratégia pedagógica dirigida à aprendizagem de programação deve alertar os alunos que resolver problemas de programação é uma actividade que eles são totalmente capazes de realizar. É importante estabelecer um contexto e criar uma dinâmica nas aulas que motivem os alunos a trabalhar e os impulsione a envolverem-se e

a comprometerem-se na sua aprendizagem. Assim, a autora encara a utilização dos

mundos virtuais como um modo a criar um contexto de aprendizagem no qual os alunos possam dar largas à sua imaginação, construir objectos como, por exemplo, robôs e divertirem-se a programar o seu comportamento. Desta forma, pretende impulsionar os alunos a envolverem-se activamente no seu processo de aprendizagem. Como Barret (2005) refere: aprender exige tanto a diversão de brincar com as ideias assim como o esforço de as redefinir e reformulá-las, ambas as partes são complementares e necessárias na aprendizagem. A esta diversão Papert (1996) designou de “hard fun”, que é desafiadora e interessante e por isso implica esforço.

3.4. Ferramentas de suporte ao ensino da programação

Uma análise da literatura das ferramentas propostas por vários autores permite aferir a existência de diversos tipos, tanto no seu âmbito de aplicação, como no que respeita ao tipo de estratégia que utilizam, e ao tipo de actividades que suportam. Assim, existem algumas ferramentas bastante restritivas, quer no tipo de actividade pedagógica permitida, quer em relação ao âmbito de aplicação, limitando-se a apoiar a aprendizagem de tópicos específicos, como, por exemplo, árvores binárias ou algoritmos de

Capítulo III: Ensino da Programação

ordenamento, nos quais os alunos são meros espectadores. Outras ferramentas, normalmente mais genéricas, permitem ao aluno introduzir e simular os seus próprios algoritmos ou programas, possibilitando-lhes assim uma participação muito mais activa no seu próprio processo de aprendizagem.

Os tipos de ferramentas mais comuns são:

ferramentas de animação – de algoritmos e de programas;

os mundos programáveis;

os ambientes de desenvolvimento controlado.

3.4.1. Ferramentas de animação

3.4.1.1. Ferramentas de animação de algoritmos

As ferramentas de animação de algoritmos, também designadas por ferramentas de visualização, na sua generalidade, são representações gráficas das sucessivas operações computacionais que um determinado algoritmo desencadeia. Estas ferramentas foram, na sua maioria, desenvolvidas com o propósito de ajudar os alunos a compreenderem como funcionam os algoritmos, ou ajudar a perceber como se processam as operações nos tipos de dados abstractos, como por exemplo nas listas. Assim como auxiliar os professores, durante as aulas, a ilustrar como se processam as operações num determinado algoritmo (Brown e Najork, 1996).

As primeiras ferramentas de animação surgiram por volta dos anos 80 com o Brown ALgorithm Simulator and Animator (BALSA). O BALSA é um sistema interactivo de animação de algoritmos que permite visualizar diferentes pontos de vista de um algoritmo e da estrutura de dados a ele associada (Brown, 1984a). Este sistema permite aos alunos invocar o código existente e sobre o qual o BALSA gera uma animação. Os alunos ao observarem estas animações compreendem melhor o funcionamento dos algoritmos (Brow, 1984b). Nesta linha de desenvolvimento surgiu o Transition-based ANimation GeneratiOn (TANGO) em 1989, reconhecido pelo facto de ter introduzido uma nova técnica de animação chamada Path Transition. Esta técnica baseia-se na noção de que uma animação é criada através de um conjunto de alterações feitas sobre uma imagem (Stasko, 1989).

Capítulo III: Ensino da Programação

Desde então, muitos outros sistemas de visualização foram desenvolvidos. Os mais comuns retratam o comportamento de um algoritmo ou de uma família de algoritmos como, por exemplo, os algoritmos de ordenação e pesquisa, algoritmos que manipulam estruturas de dados dinâmicas, como as listas, as árvores ou os grafos. Por exemplo, no endereço http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html podem-se executar várias applets relacionadas com os algoritmos de ordenação. Estas animações, na generalidade, permitem ao aluno um baixo nível de interactividade, limitando-se a demonstrar o funcionamento do algoritmo.

limitando-se a demonstrar o funcionamento do algoritmo. Figura 3.3 : Exemplo da animação de um algoritmo
limitando-se a demonstrar o funcionamento do algoritmo. Figura 3.3 : Exemplo da animação de um algoritmo

Figura 3.3: Exemplo da animação de um algoritmo no sistema Algorithma 98, representado na figura da esquerda e no sistema ANIMAL na figura da direita.

Noutras aplicações um pouco mais evoluídas, o utilizador pode intervir no funcionamento do algoritmo, através da inserção de valores, e até escolher outros algoritmos dentro do mesmo estilo de animação. Como acontece, por exemplo, nos sistemas CAT (Brown e Najork, 1996), IDSV (Jarc e Feldman, 1998), PILOT (Bridgeman et al., 2000), VIP (Virtanen et al. 2005) e JHAVÉ (Naps e Rößling, 2007).

Dentro deste tipo de ferramentas existem alguns sistemas que permitem ao utilizador criar as suas animações, limitadas a um tipo de estrutura de dados. É o caso do MatrixPro (Karavirta et al., 2004), que permite aos professores criarem animações para um algoritmo, desde que a sua estrutura de dados seja um vector, uma lista ligada, uma árvore ou um grafo. Para os alunos, a ferramenta oferece a possibilidade de visualizar a animação e um conjunto de exercícios onde os alunos simulam o funcionamento do algoritmo. Os alunos, ao visualizar uma animação no MatrixPro podem avançar,

Capítulo III: Ensino da Programação

retroceder ou ir para um passo específico da animação, indicar a velocidade desta, e inserir pontos de paragem (Figura 3.4).

velocidade desta, e inserir pontos de paragem (Figura 3.4). Figura 3.4: Exemplo do sistema MatrixPro. Dentro

Figura 3.4: Exemplo do sistema MatrixPro.

Dentro deste tipo de ferramentas, destaque-se o sistema SICAS (Gomes e Mendes, 2000), por permitir animar os algoritmos construídos pelos alunos (Figura 3.5). O SICAS tem a finalidade de apoiar a aprendizagem de estratégias e mecanismos básicos de construção de algoritmos para resolver problemas de programação, dando especial ênfase à utilização de estruturas de controlo como selecção e repetição. É um sistema que possibilita, essencialmente, dois tipos de cenários: edição / resolução do problema e execução / simulação de soluções previamente construídas. No primeiro cenário, o aluno pode construir algoritmos através de fluxogramas recorrendo à simbologia gráfica que representa as principais estruturas necessárias à construção de um algoritmo. No segundo cenário (execução / simulação), o aluno pode simular / animar a execução das resoluções anteriormente elaboradas, analisando com detalhe e ao ritmo desejado as várias fases e entidades do problema em causa. Recentemente surgiu uma evolução deste sistema, o SICAL-COL (Rebelo, 2007), de modo a suportar actividades

Capítulo III: Ensino da Programação

colaborativas à distância. Esta ferramenta resulta da integração do SICAS com a ferramenta colaborativa PlantEdit (Redondo, Bravo, Ortega, Verdejo, 2002).

PlantEdit (Redondo, Bravo, Ortega, Verdejo, 2002). Figura 3.5: Ambiente de trabalho do SICAS. 3.4.1.2.

Figura 3.5: Ambiente de trabalho do SICAS.

3.4.1.2. Ferramentas de animação de programas

Ao contrário das ferramentas referidas no ponto anterior, existem outras que permitem gerar animações a partir do código-fonte. O número de aplicações existente deste tipo é consideravelmente menor do que as ferramentas de animação de algoritmos, uma vez que o esforço para desenvolver uma simples ferramenta de animação de programas é muito maior dado ser necessário fazer o parse (análise gramatical ou lógica da linguagem de programação).

Estas animações, na generalidade, mostram as instruções em execução e respectivas consequências, por exemplo, no valor das variáveis. Dentro deste tipo de sistemas existem aqueles cujas animações são efectuadas sobre um conjunto de programas pré- definidos como é o caso do Webworks (Boroni et al., 1999), (Figura 3.6).

Capítulo III: Ensino da Programação

Capítulo III: Ensino da Programação Figura 3.6: Ambiente do animador de programas da Webworks. Alguns sistemas

Figura 3.6: Ambiente do animador de programas da Webworks.

Alguns sistemas deste género são mais abrangentes por permitirem ao aluno inserir os seus próprios programas, possibilitando-lhes assim observar como o seu programa funciona e os erros que contém, como é o caso dos seguintes sistemas: LEONARDO (Demetrescu, e Finocchi, 2001), OOPAnim (Esteves e Mendes, 2003), Codewitz (Kujansuu e Kulmala, 2003), Alma (Pereira e Henriques, 2003), JeCo (Moreno, Myller, e Sutinen, 2004), ALVIS Live! (Hundhausen e Brown, 2007), WinHIPE (Pareja-Flores et al. 2007). A título de exemplo descreve-se de seguida o sistema Jeliot.

3.4.1.2.1.

Jeliot

O sistema Jeliot (Moreno et al., 2004) é um sistema de animação de programas que teve início há quase treze anos com o sistema Eliot (Sutinen et al., 1997), cujo objectivo consistia em ajudar no desenvolvimento de animações de algoritmos. Este sistema deu origem ao JEliot (Java-Eliot), que actualmente vai na terceira versão com o JEliot 3 (Moreno e Joy, 2007). O JEliot 3 permite fazer a animação de programas escritos em

Capítulo III: Ensino da Programação

Java. A animação incide sobre o valor das variáveis e dos métodos invocados, realçando a linha de código que está a ser executada. Na área de animação, o valor das variáveis, dos objectos e das classes vão sendo actualizados. O Jeliot 3 permite aos alunos seguir a execução do programa passo a passo, parar e voltar atrás (Figura 3.7). Estes sistemas são normalmente designados por debbugers visuais (Kelleher e Pausch, 2005).

por debbugers visuais (Kelleher e Pausch, 2005). Figura 3.7: Ambiente de trabalho do Jeliot 3. 3.4.1.3.

Figura 3.7: Ambiente de trabalho do Jeliot 3.

3.4.1.3.

Discussão

Como foi descrito nos pontos anteriores, existe uma grande variedade de ferramentas de animação de algoritmos e de programas cujo intuito é melhorar a aprendizagem e ajudar os alunos a superar as dificuldades que sentem. Contudo, os resultados dos estudos efectuados indicam que os benefícios obtidos na sua utilização no ensino e aprendizagem da programação são questionáveis (Hundhlausen et al., 2002; Naps et al., 2002; Tversky, Morrison e Betrancourt, 2002). No estudo efectuado por Hundhlausen et al. (2002), os investigadores concluíram que a forma como a ferramenta é utilizada na aprendizagem é mais importante na eficácia desta do que os elementos gráficos usados

Capítulo III: Ensino da Programação

na animação. Estes resultados influenciaram o desenvolvimento de um conjunto de directivas, descritos por Röbling e Naps (2002), indicando o que estas ferramentas devem conter para serem eficazes no ensino e aprendizagem da programação, como por exemplo:

permitir ao aluno inserir dados, possibilitando assim que este compreenda melhor o funcionamento do algoritmo; permitir controlar o desenrolar da animação, ou seja, a ferramenta deve permitir que o aluno volte atrás, ande para a frente, pare ou controle a velocidade da animação – assim o aluno tem uma percepção melhor do seu funcionamento; possibilitar ao aluno e ao professor irem directamente para um ponto especifico da animação – este é um aspecto importante, principalmente para o professor poder fazer chamadas de atenção para um aspecto particular do algoritmo.

Estas recomendações foram seguidas no desenvolvimento de alguns sistemas de animação como, por exemplo, no SICAS. Estudos feitos com o ambiente SICAS concluem que os alunos que usaram este ambiente desenvolveram melhores algoritmos do que os restantes colegas que não o usaram (Rebelo, Marcelino e Mendes, 2005). Hundhausen et al.(2009), também corroboram este resultado; no estudo que realizaram com ambiente ALVIS: concluíram que este reduz a resistência inicial dos alunos em aprender a programar e encoraja-os na exploração do processo de programar sendo esta mais centrada na execução do código. Contudo, estes autores mencionam que são necessários mais estudos para verificar se este tipo de ambientes facilita realmente a migração para outros ambientes profissionais.

Algumas destas ferramentas têm vindo a ser utilizadas em situações de aprendizagem colaborativa, de modo a melhorar a aprendizagem da programação, em particular a programação aos pares (Williams et al. 2000; Hundhausen, 2002; Nagappan et al. 2003; Simon et al. 2004; McDowell et al. 2006; Hundhausen e Brown, 2008). A aprendizagem colaborativa baseia-se na argumentação e no conhecimento partilhado, assim como na coordenação de trabalhos em grupo (Soller et al., 2005). Alguns autores defendem a junção dos benefícios da visualização e colaboração como forma de aumentar o nível de empenhamento dos alunos na aprendizagem (Hübscher-Younger e Narayanan, 2003; Nguyen, Huang e Hawryszkiewycz, 2004; Myller et al., 2007; Balakrishnan, Fussell e Kiesler, 2008; Papka, 2009).

Capítulo III: Ensino da Programação

No estudo que Myller et al. (2007) fizeram sobre a utilização da visualização e aprendizagem colaborativa não foram observadas grandes diferenças nos resultados obtidos no grupo de alunos que usufruíram da visualização e colaboração em relação aos que beneficiaram apenas da visualização. Contudo, numa réplica feita deste estudo por Laakso et al. (2009) obtiveram-se diferenças significativas usando a visualização num contexto colaborativo. Resultados idênticos foram obtidos por Hübscher-Younger e Narayanan (2003): os alunos que beneficiaram da visualização juntamente com a colaboração obtiveram melhores resultados. Assim também Hundhausen e Brown (2008) salientam que a utilização da visualização colaborativa aumenta o nível de envolvimento dos alunos no processo de aprendizagem.

Myller et al. (2009) indicam que, para a visualização e a colaboração serem uma ferramenta eficaz, esta deve permitir aos alunos interagirem e construírem a sua animação, uma vez que os alunos ao observarem passivamente a visualização diminuem o nível de colaboração. Estes autores sugerem ainda, que uma ferramenta deve suportar diferentes níveis de envolvimento dos alunos, como por exemplo, a possibilidade dos alunos alterarem os valores de entrada durante a execução da animação ou o uso da animação para discutir os resultados obtidos. Estas argumentações vêm ao encontro do que Röbling e Naps (2002) alegam, como foi referido anteriormente. Como salienta Kelleher (2006):

It can be easier and more fun to learn with a group of people “.

Apesar da abundância de ferramentas de animação e de estas poderem ajudar os alunos na aprendizagem de alguns aspectos da programação, a sua adopção generalizada pela comunidade académica ainda não ocorreu (Röbling e Naps, 2002; Kaczmarczyk, et al., 2010). Uma das razões apontadas para esta resistência à sua utilização, deve-se ao facto de não existirem estudos que comprovem a sua real eficácia na aprendizagem (Hundhlausen et al., 2002; Hundhausen et al. 2009). Contudo, a animação visual de um programa pode ser útil pelo menos a três níveis: ajuda a compreender a semântica operacional da linguagem fonte; é um auxiliar à depuração de erros (debugger de alto nível); facilita o entendimento dos algoritmos (Esteves e Mendes, 2004). No entanto, as ferramentas de animação não devem ser usadas isoladamente, mas como parte integrante da experiência de aprendizagem. O valor real de uma animação não reside na sua simples visualização, mas na capacidade de permitir que o aluno intervenha, construa, explore, modifique, experimente e teste as suas teorias e soluções.

Capítulo III: Ensino da Programação

3.4.2. Mundos programáveis

Os mundos programáveis são uma técnica utilizada para facilitar a aprendizagem da

programação inspirada na linguagem Logo (Papert, 1980). Estes ambientes, na sua generalidade, eliminam os detalhes que não são importantes para os conceitos que estão

a ser ensinados. Pretendem imergir os alunos no mundo de um agente – uma tartaruga

ou um robô – para que estes se sintam os actores principais que estão a conduzi-lo, facilitando deste modo a construção dos modelos mentais dos conceitos que estão a aprender (Buck e Stucki, 2001). Por exemplo no sistema “Karel the Robot”, mencionado mais adiante, os detalhes eliminados foram as variáveis, tendo esta noção abstracta sido substituída pelo estado que o robô Karel ocupa no mundo. Sendo este estado visível e manipulado pelo programa do Karel, isto torna o estado mais real para os alunos do que um conjunto de valores alfanuméricos armazenados na memória.

Um exemplo largamente utilizado deste tipo de mundos é o “Karel the Robot”, já mencionado nos parágrafos anteriores (Pattis, 1981). Karel é um robô que habita num mundo simples de grelhas com ruas e avenidas perpendiculares, no qual este se movimenta (Figura 3.8). Assim, o Karel desloca-se pelo mundo, vira e detecta as paredes que se encontram a meio bloco de distância de si, e apita se estiver no mesmo bloco. Os alunos desenvolvem programas que movimentam o Karel pelo mundo e fazem-no executar pequenas tarefas. O simulador do Karel permite aos alunos observarem o progresso dos seus programas passo a passo. O Karel tem inspirado o desenvolvimento de outros mundos programáveis, como por exemplo: Josef the robot (Tomek, 1983), Martino, (Olimpo et al., 1985), PMS (Tomek et al., 1985), Robot Brothers (Olimpo, 1988), Marta (Calabrese, 1989), Pascal Genie (Miller e Chandhok, 1989), Turingal (Brusilovsky, 1991), JKarelRobot (Buck e Stucki, 2001), Jeroo (Sanders e Dorn, 2003).

Estes mundos, na sua maioria, incluem um simulador que permite aos alunos observarem a execução dos seus programas. Através do uso destes mundos, os alunos

rapidamente se familiarizam com várias estruturas de controlo, como, por exemplo, o if

e as estruturas de repetição. Assim, pretende-se que quando os alunos passarem para

linguagens de programação de uso geral e mais complexas tenham uma preparação que lhes facilite essa mudança, ao contrário do que acontece com a generalidade dos alunos quando iniciam o estudo da programação (Kelleher e Pausch, 2005).

Capítulo III: Ensino da Programação

Capítulo III: Ensino da Programação Figura 3.8: Um exemplo do mundo de o Karel the robot.

Figura 3.8: Um exemplo do mundo de o Karel the robot.

3.4.2.1.

Discussão

Os resultados da utilização do Karel mostram que neste ambiente os alunos são introduzidos aos conceitos fundamentais da programação orientada a objectos de uma forma natural (Pattis, 1995; Becker, 2001; Bergin, 2006). Na generalidade dos cursos os alunos usam o Karel somente durante as primeiras 4 a 5 semanas nas quais são introduzidos os conceitos-base como os objectos, a herança e outros. Depois desta introdução, o Karel é posto de lado e os alunos passam a usar outros ambientes (Buck e Stucki, 2001; Becker, 2001;Bergin, 2006). Becker (2001) adaptou o Karel++ para a linguagem Java, tendo utilizado este ambiente durante as primeiras 5 semanas de forma a introduzir os conceitos básicos. Becker concluiu que a utilização do Karel++ permitiu aos alunos compreenderem estes conceitos iniciais, o que lhes facilitou a tarefa de progredirem na sua aprendizagem. Um dos aspectos mais apreciados pelos alunos durante a utilização do Karel++ foi o facto de este ambiente lhe permitir verificar visualmente se o programa estava correcto ou não, através do comportamento do robô no ecrã (ibid.). Estudos feitos com o ambiente ObjectKarel, que é uma extensão do Karel++ ao qual foram adicionadas outras funcionalidades como, por exemplo, poder executar o programa passo a passo, também corroboraram estes resultados (Xinogalos, Satratzemi e Dagdilelis, 2006).

Segundo Buck e Stucki (2001) o Karel apresenta algumas limitações, tais como, por exemplo, a nível da compreensão o Karel não ajuda o aluno a prever qual o comportamento do robô ao executar uma determinada instrução. Por outro lado, alguns

Capítulo III: Ensino da Programação

alunos sentem dificuldades em fazer a ligação entre o comportamento do Karel e o código que este está a executar. Outro aspecto é o facto de este ambiente ser utilizado pelos alunos por pouco tempo devido à limitação de conceitos que se pode ensinar (ibid.). No JKarel, alguns destas limitações foram ultrapassadas com a utilização da linguagem Java e por permitir aos alunos construírem um programa usando fluxogramas (Buck e Stucki, 2001). Resultados obtidos com a utilização deste ambiente mostram que os alunos têm uma melhor percepção da execução do programa (ibid.).

3.4.3. Ambientes de desenvolvimento controlado

As ferramentas de desenvolvimento controlado oferecem geralmente um conjunto limitado de características das ferramentas profissionais. Em alguns casos, o ambiente é modificado de forma a esconder as características mais avançadas, como acontece por exemplo com o GILD (Storey et al., 2003) e Net-Beans BlueJ Edition (Sun Microsystems, 2009).

Outras ferramentas foram criadas especificamente para ajudar a aprendizagem dos conceitos de programação, como por exemplo, Dr Java (Allen, Cartwright e Stoler, 2002), JPie (Goldman, 2004), CodeLab (Craft, 2004), jGRASP (Jain et al., 2006), SimplifIDE (Vogts, Calitz e Greyling, 2008) e o BlueJ, do qual se faz uma breve descrição.

3.4.3.1.

BlueJ

O BlueJ (Köling, Quig, Patterson e Rosenberg, 2003) permite o desenvolvimento de programas na linguagem Java e representa graficamente as classes, os objectos de cada classe e as relações entre elas, caso existam (Figura 3.9). Para além disso, o BlueJ também permite que os alunos testem o código dos objectos individualmente fora do contexto da execução do programa completo. Assim, o BlueJ ajuda os alunos no desenho dos programas. Os alunos podem ver o código de cada classe representado graficamente, através de um simples clicar do botão do rato sobre a imagem da classe.

Capítulo III: Ensino da Programação

Capítulo III: Ensino da Programação Figura 3.9 : Ambiente de trabalho do BlueJ. Alguns sistemas deste

Figura 3.9 : Ambiente de trabalho do BlueJ.

Alguns sistemas deste tipo são projectados tendo em mente que uma das formas de ajudar os aprendizes inexperientes a programar consiste em contornar os problemas de sintaxe que os alunos sentem quando iniciam a sua aprendizagem (Kelleher e Pausch, 2005). Estes sistemas usam gráficos ou objectos físicos que representam elementos dos programas, como comandos, estruturas de controlo ou variáveis. Estes objectos podem ser combinados de diferentes modos para gerarem os programas. Exemplos destes ambientes incluem o Pet Park Blocks (Cheng, 1998), o Pict (Glinert and Tanimoto, 1984) ou o Drape (Overmars, 2000). De seguida descreve-se o sistema Alice, a título de exemplo.

3.4.3.2. Alice

O Alice (Pierce et al., 1998) é um exemplo de uma ferramenta deste género desenvolvida pela Carnegie Mellon University. No Alice, os alunos aprendem a programar através da manipulação de objectos concretos, que lhes são familiares do mundo real como, por exemplo, casas e árvores, entre outros. Com estes objectos, é possível criar mundos virtuais tridimensionais para contar uma história, produzir filmes ou jogos, que são os mais usuais. Neste ambiente os alunos aprendem a criar animações mas também a programar. É uma ferramenta de ensino gratuita, projectada para ser usada no ensino da

Capítulo III: Ensino da Programação

programação orientada a objectos a alunos inexperientes. O Alice permite que os alunos aprendam os conceitos fundamentais da programação num contexto de criação de filmes animados ou videojogos simples. Neste ambiente, os erros de sintaxe foram eliminados, uma vez que no interface do Alice, os alunos arrastam da interface peças (“azulejos” ou “mosaicos”) que largam no editor da animação para criarem um programa (Figura 3.10). As instruções correspondem a instruções normais de uma linguagem de programação procedimental. Neste sistema, os alunos podem observar imediatamente o resultado da sua programação na animação gerada no ambiente (Figura 3.11). Esta visualização imediata facilita o entendimento por parte dos alunos da relação entre as instruções do programa e o comportamento dos objectos. O Alice permite aos alunos ganharem experiência com todos os conceitos habituais ensinados na introdução à programação procedimental, sem cometerem erros de sintaxe. Uma nova versão do Alice (Dann e Cooper, 2009) encontra-se em fase de testes e pretende permitir aos alunos programar animações num nível mais abstracto usando a linguagem Java. Um dos aspectos negativos apontado ao Alice diz respeito à sua interface, por ser bastante complexa e pesada (DePasquale III, 2003).

interface, por ser bastante complexa e pesada (DePasquale III, 2003). Figura 3.10: O ambiente de trabalho

Figura 3.10: O ambiente de trabalho do Alice.

Capítulo III: Ensino da Programação

Capítulo III: Ensino da Programação Figura 3.11: Uma imagem de um mundo virtual criado com o

Figura 3.11: Uma imagem de um mundo virtual criado com o Alice 3.

3.4.3.3. Discussão

A questão que se coloca com a utilização dos ambientes de programação controlados refere-se à sua eficácia relativamente aos IDE profissionais. Vários autores afirmam que os IDE profissionais não são ambientes propícios à aprendizagem da programação, chegando mesmo a mencionar que estes podem ser prejudiciais para os alunos inexperientes, como foi referido anteriormente. Contudo, a maioria destas conclusões não foi formalmente comprovada, uma vez que não existem estudos empíricos que confirmem estas alegações. Para obter resposta a esta questão, Vogts et al. (2008) efectuaram um estudo empírico de forma a analisar qual a influência de se utilizar um IDE profissional ou uma ferramenta de desenvolvimento controlado no ensino da programação a alunos inexperientes (alunos que anteriormente não tiveram nenhum contacto com a programação). Neste estudo foi utilizado um grupo de controlo que utilizou o IDE Borland Delphi tendo o outro grupo usado a ferramenta SimplifIDE. Os alunos foram classificados em categorias de “alto risco” (aqueles cujo desempenho final foi inferior a 65%) e de “baixo risco” (os que obtiveram um valor superior ou igual a 65%). Vogts et al. concluíram que uma ferramenta de desenvolvimento controlado é benéfica para o desempenho dos alunos inexperientes principalmente para os de baixo risco. Os alunos de alto risco beneficiaram da utilização da ferramenta em termos de

Capítulo III: Ensino da Programação

comportamento a programar, ou seja, menos erros de compilação e menos vezes recorreram à ajuda do sistema. Contudo, os resultados indicam que uma melhoria no comportamento a programar não implica um aumento significativo no resultado académico final. Este resultado realça o facto de que nem todos os alunos beneficiam da ferramenta de igual modo, pelo que os professores precisam de estar atentos aos alunos de alto risco que necessitam de mais assistência de forma a melhorar o seu desempenho. Resultado semelhante foi obtido por BenneDsen e Schulte (2010), que realizaram um estudo no qual analisaram o efeito que tinha no ensino introdutório da programação em Java a utilização do BlueJ Visual Debugger. Neste estudo concluíram que os alunos não beneficiaram grandemente deste ambiente em relação ao grupo de controlo que não o utilizou.

Em relação ao ambiente Alice, que usa outra abordagem, estudos efectuados com alunos com idades inferiores a 12 anos apresentaram resultados positivos na sua utilização (Kellehar et al., 2007; Cooper, Dann e Harrison, 2010; Rodger et al., 2010). Por exemplo, no estudo realizado por Kellehar et al. (2007) obtiveram resultados positivos e os investigadores concluíram que a utilização deste ambiente motiva os alunos para a aprendizagem da programação. Outros autores, como Johngard e McDonald (2008), notaram que alguns alunos passam uma boa parte do tempo centrados na criação das animações em vez de se focarem nos fundamentos da programação. Um estudo efectuado na Universidade Tufts (Powers et al., 2007) usou o Alice no primeiro semestre com alunos do ensino superior, seguido de uma linguagem de alto nível (C++). No semestre seguinte, intercalaram a utilização do Alice com C++, em que cada conceito foi introduzido no Alice e transferido para o C++. Powers et al. observaram dificuldades nos alunos em transitarem para uma linguagem de alto nível, C++. Estas dificuldades centraram-se principalmente a nível da sintaxe: os alunos sentiram-se frustrados quando os seus programas não executavam devido aos erros de compilação existentes, facto que é impossível acontecer quando se programa no Alice. Um estudo realizado recentemente por Garlick e Cankaya (2010) sobre a utilização do Alice com alunos do ensino superior, no qual participaram 150 alunos ao longo de dois semestres, obtiveram resultados negativos, principalmente no que se refere à assimilação de conhecimentos- base de programação, como a noção de declarar e atribuir valores às variáveis ou compreender as estruturas de controlo. A parte que os alunos mais gostaram foi o desenvolvimento de animações. Neste estudo, a maioria dos alunos considerou que o Alice não é um bom ambiente para se aprender a programar. Estes resultados

Capítulo III: Ensino da Programação

motivaram os autores do Alice a considerar alterar o Alice de forma a permitir os alunos do ensino superior desenvolvessem programas em Java neste ambiente (Dann e Cooper, 2009). No entanto, a nova versão do Alice encontra-se actualmente numa versão beta e em testes, pelo que ainda não são conhecidos resultados destas alterações.

Em suma, a utilização de ambientes de programação controlados pode ajudar alguns alunos no seu processo de aprendizagem. Contudo, existem aprendizes que necessitam de outro tipo de assistência que estes ambientes não conseguem dar.

3.5. A programação e os mundos virtuais

Todas as dificuldades relatadas nas secções anteriores, juntamente com o facto de os alunos considerarem a sua primeira experiência com a programação de computadores nada agradável (Kelleher, 2006), faz com que estes se sintam desmotivados e sem interesse em aprender a programar. É necessário introduzir uma mudança inovadora para alterar o estado actual de desinteresse que a generalidade dos alunos demonstra ter pela programação e consequentemente pelos cursos de ciências de computação. Como advoga Violino (2009),

The loss of attraction to [computing] comes from our being unable to communicate the magic and beauty of the field.

Conforme já foi mencionado, os jovens aprendem mais facilmente se os dados a estudar forem tangíveis e directamente acessíveis aos seus sentidos visuais, auditivos, tácteis e cinestésicos (Dann e Cooper, 2009). Com a experiência, eles desenvolvem a capacidade de compreender dados abstractos, manipular símbolos, efectuar raciocínios lógicos e consequentemente a generalizar. No entanto, a maioria das pessoas necessita, ao longo da vida, de exemplos concretos para compreender as novas ideias (ibid.). Segundo os autores referidos, no ensino da programação deve-se começar do concreto para a abstracção, como acontece com o Alice. Papert (1980) refere que:

A programming language is like a natural, human language in that it favours certain metaphors, images, and ways of thinking.

Criar uma representação concreta (modelo externo) de algo abstracto (modelo mental) ajuda na compreensão e facilita a resolução de problemas. Por exemplo, Noyes e Garland (2003) no estudo que fizeram sobre o jogo lógico “Torres de Hanói”, verificaram que o uso de um exemplo externo ajudou os aprendizes em certos aspectos

Capítulo III: Ensino da Programação

da resolução do problema. Williams e Noyes (2007) mencionam também que uma representação baseada no computador desempenha um papel vital no desenvolvimento das capacidades necessárias para resolver problemas, principalmente na fase inicial da aprendizagem, uma vez que as representações visuais, espaciais e físicas são mais fáceis de reter e manipular. Os alunos, ao obterem uma visualização imediata dos resultados de uma acção, verificam mais facilmente se a sua ideia está certa ou errada. Se estiver errada terão de a corrigir, repensar a solução e, consequentemente, este repensar e reanalisar da situação vai estimular o seu pensamento crítico (Shneiderman, 1983; Kiili, 2005; Chan e Black, 2006).

No entanto, alguns estudos concluem que a simples visualização não é suficiente para se obter sucesso na aprendizagem (Naps et al., 2002; Hundhausen & Brown, 2008, Urquiza-Fuentes e Velázquez-Iturbide, 2009), uma vez que os alunos podem olhar para uma visualização dinâmica sem realmente compreender o seu sentido. A visualização torna-se mais eficiente se envolver activamente o aprendiz, ao contrário da simples observação passiva (Pierson e Rodger, 1998; Naps et al. 2002; Hundhausen e Brown, 2005, Schweitzer e Brown, 2009). Por exemplo, na visualização de um algoritmo, os alunos beneficiam muito mais do ambiente se poderem construir e representar as suas próprias visualizações, não só porque este tipo de exercícios aumenta a sua motivação e interesse, mas também por que são um estímulo para gerar discussões significativas sobre o assunto (Hundhausen e Brown, 2007, Urquiza-Fuentes e Velázquez-Iturbide,

2009).

Face ao exposto, e seguindo a linha orientadora que levou ao desenvolvimento do Alice, passar do concreto para o abstracto (Dann, Cooper, 2009), influenciou a investigadora a utilizar os mundos virtuais 3D, como plataforma para o ensino e aprendizagem da programação. Nestes mundos, os alunos aprendem a programar num contexto visual 3D, colaborando uns com os outros e inseridos numa comunidade internacional, como acontece por exemplo no mundo virtual Second Life., onde os alunos constroem objectos 3D e desenvolvem programas dentro do mundo para gerar o comportamento funcional desses objectos. Uma das vantagens de utilizar um mundo virtual 3D para o ensino da programação é a possibilidade que os aprendizes têm de ver um objecto ou colocá-lo sob múltiplas perspectivas, os quais podem gerar uma melhor compreensão dos conceitos (Bricken e Byrne, 1994; Dickey, 2005; Champion, e Sekiguchi, 2005).

Embora o conceito de mundos virtuais multi-utilizador não ser novo, a crescente popularidade de aplicações de mundos virtuais tem crescido exponencialmente nos

Capítulo III: Ensino da Programação

últimos 5 anos, como é constatável com os cerca de 180 mundos virtuais actualmente disponíveis ou em desenvolvimento (de Freitas, 2008). Contudo, o aparecimento dos mundos virtuais como ferramenta de ensino e aprendizagem é relativamente recente. Nos últimos anos têm surgido alguns estudos, assim como uma variedade de iniciativas educacionais na introdução dos mundos virtuais como complemento das actividades das aulas tradicionais, e também como meio usado na educação à distância (Barab, et al., 2000; Corbit e DeVarco, 2000; Bailey e Moar, 2002; Barab, Hay, Barnett e Squire, 2001; Dickey, 2003, 2004, 2005, Jong, van der Meijden e von Berg, 2005; Lim, Nonis e Hedberg, 2006; Peterson 2006; Robbins, 2007; de Freitas, 2008; Warburton, 2009). As conclusões gerais destes estudos indicam que os alunos se sentem motivados com a interacção gráfica que estes mundos apresentam, uma vez que são visualmente atractivos, animados e interactivos. Jong et al. (2005) referem que:

3D virtual world can support an effective, active, and more playful learning process” (p.

33).

Vários autores (Dede, 1995; Antonacci e Modaress, 2005; Hew e Cheung, 2010) argumentam que os mundos virtuais têm a vantagem de permitir aos alunos experimentar sem as repercussões do mundo real e oferecem oportunidades de aprender fazendo. Esta asserção é compartilhada por Dickey (2005), ao alegar que os mundos virtuais permitem aos alunos aprender através da interacção com objectos virtuais que, dependendo do conteúdo, podem conduzir a uma melhor compreensão dos conceitos. Esta compreensão resulta dos aprendizes interagirem com os objectos 3D do mundo, permitindo-lhes, para além de aprender fazendo, observar os resultados das suas acções, testar as suas hipóteses e reflectir sobre a sua própria compreensão (Winn, 2002; Chee, 2007). A vantagem mais aclamada dos mundos virtuais é o envolvimento, estimulando os alunos a vivenciarem exaustivamente uma dada experiência, podendo ajudar a colmatar o fosso entre a aprendizagem experimental e a representação da informação (Winn, 2002; Sourin et al., 2006). Segundo Austin e Boulder (2007):

Virtual worlds offer an opportunity for people to interact in a way that conveys a sense of presence lacking in other media. These spaces can be huge, in terms of the number of people that use them, and they are growing in popularity because they combine many of the elements that make Web 2.0 really exciting: social networking; the ability to share rich media seamlessly; the ability to connect with friends; a feeling of presence; and a connection to the community.” (p.18).

Capítulo III: Ensino da Programação

Barab et al. (2000) usaram os mundos virtuais como suporte para facilitar a compreensão dos conceitos de astronomia pelos alunos, baseado numa aprendizagem construtivista. Barab et al. (2000) e Barab, Hay, Barnett e Squire (2001) concluíram que os mundos virtuais podem ser utilizados de forma eficaz como uma ferramenta para facilitar a compreensão dos fenómenos astronómicos. Bailey e Moar (2002) constataram, também, que o uso dos mundos virtuais fomenta a colaboração e a comunicação entre os alunos. Dickey (2003) corrobora estes resultados ao mencionar que a utilização dos mundos virtuais 3D, tal como o Active Worlds, suporta uma aprendizagem construtivista por permitir uma comunicação em tempo-real, juntamente com um ambiente visual e recursos de apoio à colaboração. O mesmo autor refere ainda que o uso dos mundos virtuais 3D ajuda os alunos a desenvolver as suas competências num ambiente colaborativo tridimensional (Dickey, 2004). Antonacci e Modaress (2005) acrescentam que os mundos virtuais ajudam os aprendizes a desenvolver as capacidades de interpretação, análise, avaliação e resolução de problemas.

No estudo realizado por Sourin et al. (2006), observou-se que os alunos quando trabalhavam no seu projecto dentro do mundo virtual, que consistia em desenvolver objectos usando ferramentas gráficas, estes gradualmente e sem fazerem um esforço extra eram imersos em muitos conceitos de computação gráfica. O mesmo autor refere, ainda, que este facto fez com que os alunos aprendessem melhor os conceitos de computação gráfica e obtivessem, em média, uma melhoria nos resultados do exame em 14%. Contudo, alguns estudos apresentam resultados contraditórios, referindo que o uso dos mundos virtuais não melhora a aprendizagem dos alunos, uma vez que estes se distraem facilmente durante as actividades online (Dalgarno, 2002; Lim et al., 2006, Omale et al., 2009). Por exemplo, Lime et al. (2006) constataram que os alunos estavam tão preocupados com a exploração do espaço 3D que não se conseguiam concentrar no desenvolvimento das suas actividades.

Apesar de durante a escrita desta tese terem surgido alguns estudos relacionados com a utilização dos mundos virtuais na educação, (de Freitas e Neumann, 2009; Warburton e Perez-Garcia, 2009; Veletsianos, 2009; de Freitas et al., 2010; Hew e Cheung, 2010) vários autores continuam a salientar a falta de estudos com linhas orientadoras de como os usar no ensino (de Freitas e Veletsianos, 2010; Hew e Cheung, 2010). Como refere Warburton (2009):

“Despite the high level of activity in the area (the Second Life Educators list has a membership figure of over 5000), clear guidelines for practice remain difficult to find.”

Capítulo III: Ensino da Programação

Face aos problemas relatados que envolvem o ensino e aprendizagem da programação, às diferentes soluções propostas e atendendo ao facto de os alunos continuarem a sentir dificuldades na aprendizagem da programação, a autora sugere a utilização dos mundos virtuais de modo a criar um contexto de aprendizagem no qual os alunos possam aprender partindo do concreto para o abstracto. Pretende-se com a utilização destes mundos criar um ambiente onde os alunos possam “brincar” com as ideias, dar largas à sua imaginação através da construção de objectos, conjuntamente com a programação do seu comportamento. Ambiciona-se com a utilização dos mundos virtuais 3D, imergir os alunos no mundo de modo a que desta forma sejam os actores principais na programação e sejam capazes de sentir e raciocinar qual o passo seguinte a dar para solucionar o problema, de forma semelhante à filosofia usada no Karel.

Deste modo, como foi relatado no capítulo de introdução, considerou-se necessário começar por estudar as possibilidades e dificuldades da utilização dos MV3D online como plataforma para o ensino e aprendizagem introdutória da programação de computadores a alunos do ensino superior.

4. Mundos Virtuais

Os aspectos abordados no presente capítulo dizem respeito ao processo de caracterização dos mundos virtuais. Dada a panóplia de mundos virtuais existentes actualmente considera-se pertinente efectuar uma sistematização destes com o intuito de seleccionar o que se enquadra nos objectivos deste estudo. Deste modo, começa-se por definir o que são os mundos virtuais enunciando as suas características elementares. Referindo, ainda os seus antecessores, para uma melhor compreensão dos actuais numa breve perspectiva histórica. Apresenta-se também uma categorização dos mundos virtuais analisados, culminando com a justificação da opção tomada.

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais

4.1. Caracterização dos mundos virtuais

Os mundos virtuais existem, de algum modo, desde o início dos anos 80 do século passado. Apesar disto, o significado desta expressão não é consensual. Isto reflecte a dificuldade em descrever uma área que está intrinsecamente ligada ao desenvolvimento tecnológico, mas caracterizada também por aspectos sociológicos. Obviamente, as diferenças de entendimento sobre o que é um “mundo virtual” reflectem visões alternativas, ora complementares, ora referentes a conceitos distintos. Considerando a investigadora, contudo, ser esta a expressão mais comum para identificar as plataformas com que trabalhou, optou-se aqui por reunir apenas as definições e características propostas por autores que se enquadram também no significado dado no âmbito do presente trabalho.

Segundo Warburton (2009), a definição de mundo virtual mais simples e consensual foi dada por Schroeder (1996) que argumenta que os mundos virtuais devem ser definidos como:

“A computer-generated display that allows or compels the user (or users) to have a sense of being present in an environment other than the one they are actually in, and to interact with that environment” (Schroeder, 1996).

Outros autores, como Castronova (2001), Smart, Cascio e Paffendof (2007) e de Freitas (2008), consideram que a melhor forma de definir os mundos virtuais é através do conjunto mínimo de características recorrentes que estes contêm, nomeadamente:

Representação física – um corpo virtual designado de avatar, que é uma representação personalizada do ser humano;

Interactividade – permite uma interacção entre utilizadores e destes com objectos no mundo virtual;

Persistência – o mundo virtual continua a existir mesmo quando o utilizador não está conectado e consequentemente não está a participar nele.

De seguida retrata-se cada um destas características em pormenor.

Capítulo IV: Mundos Virtuais

4.1.1 Representação física

No mundo virtual, cada indivíduo é representado graficamente através de um corpo virtual tridimensional ou bidimensional, consoante a dimensão do mundo, cuja funcionalidade consiste em permitir ao utilizador interagir com esse mundo. A esta representação gráfica dá-se o nome de avatar. Originalmente, o termo “avatar” surge na

mitologia hindu e significa a incarnação de um ser divino, tendo sido utilizado na informática pela primeira vez por volta de 1985, por Chip Morningstar (Damer, 2001), para descrever a representação visual dos utilizadores no mundo virtual Habitat (Figura 4.1) – isto embora desde os primórdios do género existisse o conceito de alter-ego ou representação do jogador no espaço virtual dos jogos de computador, mas sem recurso

à designação “avatar”. Desde então, este termo tem-se vindo a popularizar não só no

seio dos mundos virtuais, mas também na indústria cinematográfica como é constatado

através do recente filme Avatar, escrito e realizado por James Cameron (2009).

Avatar, escrito e realizado por James Cameron (2009). Figura 4.1: Avatares do Habitat. Imagem retirada de

Figura 4.1: Avatares do Habitat.

Imagem retirada de Morningstar e Farmer, 1991.

Nos mundos virtuais existe uma panóplia de formas de avatares que vão desde figuras

humanas a animais fictícios (Figura 4.2). A maioria destes mundos possibilita ao utilizador

a atribuição de um nome para o seu avatar, que o representa dentro do mundo virtual (sendo portanto uma entidade única nesse mundo), de forma a facilitar a sua identificação.

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.2: À esquerda: avatar da investigadora no SL, “Micaela Korobase”. À
Capítulo IV: Mundos Virtuais Figura 4.2: À esquerda: avatar da investigadora no SL, “Micaela Korobase”. À

Figura 4.2: À esquerda: avatar da investigadora no SL, “Micaela Korobase”. À direita: um avatar do mundo virtual NeoPets.

A generalidade dos mundos virtuais permite ao utilizador seleccionar, configurar e

personalizar o seu avatar, relativamente ao sexo, à forma do rosto, à cor da pele ou outros elementos. Este aspecto transmite ao utilizador uma sensação de solidez e realismo na aparência. A nível educativo, possibilita ao professor e alunos uma identificação visual do outro e o reconhecimento de alguém através da sua representação física fomentando a comunicação (Veletsianos, 2010).

O nível de configuração dos avatares permitido depende do mundo: existem mundos

como o The Palace com um conjunto de avatares predefinidos, os quais pouco permitem alterar; e outros em que quase tudo é configurável como no The Virtual Hills

ou no Second Life (Figura 4.3).

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.3: À esquerda: edição do aspecto visual do avatar da autora
Capítulo IV: Mundos Virtuais Figura 4.3: À esquerda: edição do aspecto visual do avatar da autora

Figura 4.3: À esquerda: edição do aspecto visual do avatar da autora no mundo virtual The Palace. À direita: edição da aparência de um avatar no mundo virtual MTV’s Virtual Worlds – The Virtual Hills.

No entanto, os avatares que actualmente existem restringem-se ao mundo virtual em que são criados. Esta limitação implica que o utilizador tenha de criar e configurar um novo avatar sempre que entre pela primeira vez num mundo virtual (Morgado, 2009). Contudo, devido à crescente importância dos mundos virtuais (Gartner, 2007), prevê-se que no final de 2011 80% dos utilizadores activos da Internet tenham um avatar num mundo virtual — perspectiva provavelmente demasiado optimista, mas reveladora do impacte do género nas expectativas do sector informático. Colin Parris, da I.B.M., e a Linden Lab, empresa criadora do mundo virtual Second Life, anunciaram pretender desenvolver um avatar universal que permita ao utilizador movê-lo entre os vários mundos virtuais existentes mantendo o mesmo nome, aparência e inclusive o saldo de dinheiro digital (Lohr, 2007).

4.1.2 Interactividade

Os mundos virtuais na sua generalidade são acedidos remotamente através da Internet, permitindo a partilha do espaço entre vários utilizadores em simultâneo, independentemente da sua localização geográfica. Estes mundos são designados de multi-utilizador, como por exemplo, o Second Life.

A grande maioria dos mundos virtuais simula no total ou em parte as leis naturais da Terra, como a gravidade, o dia e a noite, a topologia e o movimento, como forma de

Capítulo IV: Mundos Virtuais

apresentar alguma familiaridade aos utilizadores e gerar uma mais forte sensação de presença do utilizador no mundo (Castronova, 2001). Para além deste aspecto, os mundos virtuais contêm um conjunto de elementos que geram a sensação de presença e de co-presença, ou seja, a sensação da presença de outrem, fomentando desta forma a interacção entre os seus pares (Warburton, 2009), que são:

Físicos – os utilizadores têm uma representação física no mundo (avatar), através da qual podem observar os outros utilizadores (ou seja, os avatares dos outros utilizadores), fazer gestos, rir, colocarem-se em determinadas poses, dançar, abraçarem-se, aplaudir, etc. Para além disso, também permite a possibilidade de localizar geograficamente no mundo outros avatares, por exemplo a partir de um mapa (Figura 4.4).

avatares, por exemplo a partir de um mapa (Figura 4.4). Figura 4.4: Mapa de algumas áreas

Figura 4.4: Mapa de algumas áreas do Second Life, referenciando, nos pontos verdes, o número de pessoas que se encontram em cada zona.

Estado – fornece informações mínimas sobre a presença dos avatares no mundo, por exemplo indicando quando os avatares amigos entram ou saem do mundo (ou seja, quando é que os respectivos utilizadores estão online ou offline).

Comunicação – na generalidade dos mundos virtuais, a comunicação é efectuada através da comunicação escrita, sendo contudo também comum a comunicação vocal. Em alguns mundos é permitida uma conversação “aberta” (ou seja, pública) através de vários canais, noutros a comunicação é mais restrita

Capítulo IV: Mundos Virtuais

limitando-se à utilização de um conjunto de frases pré-existentes, como é o caso do mundo virtual Thinking Worlds (Figura 4.5). Contudo, a comunicação encontrada na generalidade dos mundos virtuais é realizada através de conversas textuais (chats) públicas ou privadas. As mais comuns são as conversas textuais públicas, isto é, mensagens que os utilizadores podem escrever e partilhar uns com os outros e que são visíveis por toda a comunidade de utilizadores que se encontra num determinado raio de acção, como acontece por exemplo, no MTV’s Virtual World (Figura 4.6).

por exemplo, no MTV’s Virtual World (Figura 4.6 ). Figura 4.5: Exemplo de interacção com outro

Figura 4.5: Exemplo de interacção com outro avatar

do mundo Thinking Worlds.

de interacção com outro avatar do mundo Thinking Worlds . Figura 4.6: Exemplo de uma converção

Figura 4.6: Exemplo de uma converção textual pública com vários avatares em simultâneo no mundo virtual MTV.

É possível, também, estabelecer comunicações textuais com outros utilizadores de uma forma privada - mensagens instantâneas (IM) - o que evita a constante interrupção feita por outros utilizadores ou mensagens informativas durante a conversação (Figura 4.7). Estas mensagens geralmente não têm limites de distância virtual, ou seja, são enviadas directamente para o avatar em questão, independentemente da distância virtual a que se encontre.

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.7: Exemplo de uma conversa privada no Entropia Universe. As características

Figura 4.7: Exemplo de uma conversa privada no Entropia Universe.

As características dos mundos virtuais que suportam a interactividade são a base das actividades educativas por permitirem a interacção e a colaboração entre os educandos. Desta forma é possível ter um grupo de alunos a discutir um tema (Figura 4.6) ou a desenvolver uma actividade, independentemente do local físico em que cada aprendiz se encontra (Figura 4.8) como, por exemplo, ocorreu no seminário Ambientes Virtuais 3D em Educação integrado no Mestrado Multimédia em Educação da Universidade de Aveiro, que decorreu no Second Life, a 17 de Novembro de 2008 pelas 21h, durante o qual cada aluno e professor acederam ao SL das respectivas casas.

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.8 : Seminário Ambientes Virtuais 3D em Educação na ilha da

Figura 4.8: Seminário Ambientes Virtuais 3D em Educação na ilha da Universidade de Aveiro no SL.

4.1.3 Persistência

Uma das características importantes dos mundos virtuais é a sua persistência (Rosedale e Ondrejka, 2003), isto é, o mundo continua a funcionar mesmo quando o utilizador se encontra desconectado e já não participa nele. O utilizador pode ligar-se a qualquer momento, mantendo-se no local em que se encontrava anteriormente. Um outro aspecto a salientar é a persistência do aspecto físico do avatar e dos seus pertences, tais como roupa, sapatos, malas e os objectos que criou ou comprou – aspecto que permite ao utilizador identificar-se visualmente com o seu avatar.

A persistência do mundo abre um leque de oportunidades do ponto de vista educativo, nomeadamente no que se refere à possibilidade de permitir o prolongamento das actividades educativas no tempo (Salmon, 2009). Desta forma, deixa de existir as limitações que muitas vezes os alunos colocam ao trabalho em grupo, relatando não o apreciarem por não conseguirem se encontrar fora das aulas devido a morarem longe uns dos outros (Miranda, Morais e Dias, 2007). Os professores, por outro lado, têm a possibilidade de acompanhar e observar a evolução do trabalho, sem ser só no momento em que este está a ser realizado. A persistência do mundo permite também a existência de uma comunidade de utilizadores online em cada 24h do dia, como acontece

Capítulo IV: Mundos Virtuais

por exemplo no Second Life, sendo esta comunidade constituída na sua maioria por construtores activos que compram e vendem produtos. A nível educativo, a existência de uma comunidade que reconhece o trabalho desenvolvido pelos alunos é um factor de motivação que impulsiona os alunos a quererem aprender mais (Lave e Wenger, 1991; Esteves et al., 2008).

4.2. Os antecessores dos mundos virtuais

Os actuais mundos virtuais partilham características comuns que reflectem as suas raízes nos jogos de aventuras e fantasias, como os de “masmorras multi-utilizador” (Multi User Dungeon ou MUD). Estes jogos surgiram durante as décadas de 70 e 80 do século passado, inicialmente baseados em descrições textuais do mundo que envolviam a exploração de espaços e salas com vários obstáculos e opositores (Bartle, 1990). Estes jogos tiveram origem nos jogos role-playing de papel e lápis, muito populares nos anos 70 a 90. O primeiro jogo de role-playing comercialmente disponível foi o Dungeon & Dragons (D&D), criado por Gary Gygax e publicado em 1974 pela TSR, Inc. O sucesso alcançado com este jogo conduziu ao proliferamento de outros jogos similares como o Tunnels & Trolls (focado no jogo a solo), o Traveller ou o RuneQuest. Mais tarde, surgiram estes jogos em computador, permitindo que vários jogadores interagissem em simultâneo uns com os outros da forma que desejassem (Figura 4.9). Um dos primeiros jogos de computador deste género, bastante popular, foi desenvolvido por Richard Bartle e Roy Trubshaw em 1978. Este jogo, designado por MUD (ou seja, o nome deste jogo deu origem ao nome de todo o género), consistia num jogo textual que podia ser jogado em simultâneo por vários jogadores (Bartle, 1990). Posteriormente, estes jogos seguiram outras abordagens, empregando mais regras e características dos D&D, tais como estratégias, a possibilidade de formarem grupos de jogadores para atingirem os objectivos de jogo e basearem-se em fantasias contendo personagens fictícias. Este é um aspecto importante seguido em muitos dos jogos online multi-utilizador (Massively Multiplayer Online Games – MMOG), enquanto outros como o TinyMUD criado em 1989 por Jim Aspnes, focaram-se nas interacções sociais entre jogadores, retirando-lhes toda a componente de fantasia e objectivos de jogo (Cox e Campbell, 1994). Por outro lado, o TinyMUD permitia aos seus utilizadores criarem elementos no mundo, o que o tornou bastante popular, principalmente por ser distribuído gratuitamente (ibid.).

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.9: O interface do Jogo MUD textual. Estes MUD apresentavam todas

Figura 4.9: O interface do Jogo MUD textual.

Estes MUD apresentavam todas as características dos mundos virtuais actuais, embora fossem baseados em texto. Estes sistemas constituíram as bases para o desenvolvimento das comunidades actuais online, que presentemente são baseadas em espaços animados 3D proporcionando um cenário para o dia-a-dia do que ali acontece. As principais semelhanças residem na dimensão e nas comunidades que se formaram nestes mundos baseados em texto, em torno das quais se desenvolveram amizades (de Freitas, 2008).

Baseado nesta geração de MUD textuais, emergiu em 1985 o primeiro mundo virtual no sentido utilizado nesta tese, o Habitat da LucasFilm, utilizando gráficos e avatares (Figura 4.1). O Habitat era acedido através da utilização de um modem e de um computador pessoal bastante comum em vários países, o Commodore 64. Este primeiro mundo virtual manteve uma comunidade online durante seis anos, tendo um ambiente social semelhante aos mundos baseados em texto. O Habitat era:

“(…) built on top of an ordinary commercial on-line service…Habitat presents its users with a real-time animated view into an online simulated world in which users can communicate, play games, go on adventures, fall in love, get married, get divorced, start businesses, found religions, wage wars, protest against them, and experiment with self- government.”

(Morningstar & Farmer, 1991)

Capítulo IV: Mundos Virtuais

Em 1996 surgiu o mundo virtual Meridian 59, tendo sido considerado o primeiro mundo do tipo Massively Multiplayer Online Role Player Game ou MMORPG (GameSpy, 2003), ou seja, com um número muito elevado — milhares — de jogadores em simultâneo (Achterbosch, Pierce e Simmons, 2008). Na sequência desta forte adesão, o termo massively multiplayer foi introduzido na comunidade dos mundos virtuais, bem como a denominação “mundo persistente” (GameSpy, 2003), uma vez que o mundo continuava a existir quando o utilizador estava desconectado deste.

O Meridian 59 empregava muitas das características dos MUD. No entanto, revelou-se inovador pelos seus gráficos, pois permitia aos utilizadores observar no ecrã uma representação gráfica de tudo o que acontecia, como, por exemplo, ver outro jogador a acenar (Figura 4.10). O sistema de comunicação, embora irrealista, uma vez que permitia aos jogadores de qualquer parte do mundo conversar entre eles, facilitava o estabelecimento de uma comunidade. A interface continha elementos que ainda hoje são bastante populares como os mini-mapas (semelhantes a um sistema de radar) e uma caixa de diálogo que permitia, além de conversar, exibir informação detalhada sobre as acções que tinham sido realizadas. Os gráficos do Meridian 59 rapidamente se tornaram obsoletos, mas este mundo virtual conseguiu abrir caminho para o desenvolvimento de outros mundos que actualmente são conhecidos como MMORPG.

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.10: O interface do Meridian 59. Outro exemplo deste tipo de

Figura 4.10: O interface do Meridian 59.

Outro exemplo deste tipo de mundos virtuais bastante popular foi o Ultima Online (UO), lançado em 1997. O UO, que ainda se encontra activo nos dias de hoje, foi considerado o primeiro sucesso comercial deste género de mundos, tendo rapidamente alcançado 100.000 assinantes (Koster, 2002). Recentemente, sofreu uma remodelação no aspecto gráfico, de forma a poder competir com outros MMORPG do género que proliferaram nos últimos anos (Figura 4.11).

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.11: À esquerda: aspecto gráfico do Ultima Online original. À direita:
Capítulo IV: Mundos Virtuais Figura 4.11: À esquerda: aspecto gráfico do Ultima Online original. À direita:

Figura 4.11: À esquerda: aspecto gráfico do Ultima Online original. À direita: aspecto actual.

Com o desenvolvimento tecnológico verificado nas últimas décadas, principalmente no acesso mais generalizado a equipamento informático com elevadas capacidades gráficas, a banda larga, a serviços Web mais rápidos e a computadores pessoais cada vez mais potentes, foram factores impulsionadores do crescimento acelerado destes mundos virtuais existindo actualmente mais de 180 mundos disponíveis ou em desenvolvimento (de Freitas e Veletsianos, 2010).

4.3. Categorização dos mundos virtuais

Como se explicou na secção anterior, os mundos virtuais existem há mais de 20 anos e dentro deste vasto panorama podem-se encontrar mundos com código-fonte aberto, mundos com acesso livre e mundos privados disponíveis apenas por pagamento de uma licença de utilização. Podem identificar-se também várias plataformas de desenvolvimento e de distribuição segundo o público-alvo a que se destinam. Vários autores têm vindo a propor diferentes formas de classificar os mundos virtuais (Porter, 2004; Messinger, Stroulia e Lyons, 2008; de Freitas, 2008; Warburton, 2009), baseadas na forma como estes podem ser utilizados, nomeadamente:

mundos virtuais de competição;

mundos virtuais sociais;

mundos virtuais de formação;

Capítulo IV: Mundos Virtuais

plataformas de desenvolvimento

mundos virtuais profissionais.

Como foi referido no capitulo anterior, pretende-se usar os mundos virtuais no ensino da programação de forma a que os alunos possam aprender a programar partindo do concreto para o abstracto. A partir da construção de objectos os alunos desenvolvem programas que simulam o comportamento atribuído a esses objectos. Pretende-se também fomentar a aprendizagem colaborativa entre os alunos. Deste modo o mundo virtual deve permitir:

a conexão em simultâneo de vários utilizadores, com idade superior a 18 anos, com o intuito de trabalharem e colaborarem entre si durante e depois das aulas. O mundo deve ser multi-utilizador e persistente, de forma que os alunos possam trabalhar no mundo quando quiserem e deixarem os seus trabalhos expostos para que os colegas de grupo possam ver o que já foi feito. Assim como possibilitar que o professor acompanhe o que está a ser feito fora das aulas;

a comunicação em tempo real entre alunos e o professor enquanto estão online no mundo virtual – o mundo deve permitir comunicação síncrona;

a construção de objectos com relativa facilidade, sem requerer muito tempo de aprendizagem. Por outro lado, não deve ser demasiado restritivo no tipo de objectos que se possam criar, uma vez que se pretende que os alunos se envolvam e se motivem com o que estão a fazer. O mundo deve permitir a animação visual dos objectos criados, através da aplicação de programas que simulem determinados comportamentos, como por exemplo, um robô que segue o seu dono pelo mundo.

Face ao exposto, na análise dos mundos virtuais procurou-se responder às seguintes questões: Qual o objectivo do mundo? Onde e como pode ser usado? E por quem? – que se traduziram nos seguintes cinco parâmetros:

Objectivo: qual o conteúdo, específico ou aberto, focado no mundo;

Local: a interacção é restrita a um espaço ou é geograficamente dispersa;

Capítulo IV: Mundos Virtuais

Plataforma: permite uma comunicação síncrona, assíncrona ou as duas. O mundo é persistente. Qual o tipo de ligação que consente, através do computador ligado à Internet ou é necessário alguma plataforma de jogo específica. O acesso é gratuito ou é necessário o pagamento de uma licença de utilização;

População: qual o número de pessoas que permite ter conectado em simultâneo e a sua idade;

Programação: possibilita criar objectos dentro do mundo ou fora através de outras aplicações, os objectos podem ser animados visualmente dentro do mundo. Como, ou seja, que tipo de programação suporta para gerar essas animações.

4.3.1 Mundos virtuais de competição

Os MMORPG são mundos virtuais orientados para a competição, com objectivos e regras bem definidas, baseados em narrativas, sendo geralmente utilizados para o lazer. Apesar de estes mundos serem orientados para a competição, também fazem parte dos mundos virtuais sociais, na medida em que existe uma colaboração e socialização entre os participantes para atingir o objectivo final do jogo (Smart et al., 2007). A título de exemplo refere-se: Everquest, Guild Wars, Lineage, Lineage II, World of Warcraft, Meting2, Entropia Universe. (Figura 4.12).

of Warcraft, Meting2, Entropia Universe. (Figura 4.12). Figura 4.12: Exemplos de mundos virtuais de competição:
of Warcraft, Meting2, Entropia Universe. (Figura 4.12). Figura 4.12: Exemplos de mundos virtuais de competição:

Figura 4.12: Exemplos de mundos virtuais de competição: Lineage II na imagem da esquerda, World of Warcraft na imagem à direita.

Capítulo IV: Mundos Virtuais

Como pode ser constatado, de uma forma geral, nestes mundos virtuais, os utilizadores têm objectivos de jogo a cumprir, sendo o local de actuação disperso pelo mundo. Contudo, a realização de determinadas tarefas limitam o local de actuação. Relativamente à plataforma, alguns mundos virtuais como, por exemplo, World of Warcraft tem duas opções de utilização: através da Internet online ou localmente no PC sem se recorrer à ligação à rede. Na sua maioria, os mundos desta categoria permitem uma comunicação síncrona, possibilitando a interacção, em simultâneo, de milhares de utilizadores online, como é o caso do World of Warcraft com mais de 8,5 milhões de subscrições (Blizzard Entertainment, 2010).

4.3.2 Mundos virtuais sociais

Ao contrário dos mundos referidos no item anterior, os mundos virtuais sociais caracterizam-se por não terem um objectivo pré-definido, assim como não terem uma narrativa. Um dos aspectos interessantes deste género de mundos virtuais é o facto de não serem centrados numa tarefa mas serem mais uma ferramenta de socialização. Assemelham-se aos espaços de conversas textuais como por exemplo o MySpace or Cyworld (Messinger, Stroulia e Lyons, 2008), em que juntam as características destes

com a possibilidade de partilhar recursos, criar objectos 3D e trocar conteúdos multimédia. Nos mundos sociais, o entretenimento pode variar desde concertos ou apenas conversas com os amigos. de Freitas (2008) salienta que as interacções sociais que se estabelecem nestes mundos virtuais são profundamente pessoais e podem inclusive serem íntimas. Alguns destes mundos tornaram-se bastante populares, como é

o caso do Second Life (ibid.). Contudo, existem outros que foram encerrados, como

aconteceu com o Lively, extinto em 9 de Janeiro de 2009 e mais recentemente com o

There.com, que foi oficialmente encerrado em Março de 2010, devido a problemas financeiros (Wilson, 2010).

Apesar de o There.com ter sido encerrado, era um mundo virtual aberto, orientado para

a socialização, no qual os participantes podiam conversar, jogar, fazer compras ou

participar em eventos (por exemplo, festas). Tendo sido criado em 1998 por Will Harvey e Jeffrey Ventrella, a partir de 2001 foram lançadas várias versões beta e em Outubro de 2003 (Wilson, 2010) a versão final. A utilização do There.com estava direccionada a jovens acima dos 13 anos. A comunicação era feita através de uma conversa textual, que podia ser pública, sendo visível por todas as pessoas que estavam

Capítulo IV: Mundos Virtuais

num determinado raio de acção (Figura 4.13) ou privada, só entre duas pessoas. Os participantes, também, podiam alterar a aparência do seu avatar, experimentar e comprar roupa (Figura 4.14). Contudo, o desenvolvimento de objectos e a sua programação eram efectuados fora do mundo, recorrendo a aplicações específicas, como o StyleMaker e o Painter Toolkit, que requeriam algum tempo de aprendizagem e adaptação (Wilson, 2010).

algum tempo de aprendizagem e adaptação (Wilson, 2010). Figura 4.13: Exemplo de uma conversa textual pública;

Figura 4.13: Exemplo de uma conversa textual pública;

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.14: Um avatar a experimentar roupa. Outros exemplos deste tipo de

Figura 4.14:Um avatar a experimentar roupa.

Outros exemplos deste tipo de mundos são também o Kaneva, que tem um elevado número de utilizadores, o Frenzoo e o IMVU, que foram criados recentemente. O Frenzoo começou a ser desenvolvido em 2008 e actualmente está disponível online numa versão beta (Fenzoo Limited, 2010). Este mundo está integrado numa página Web, na qual o utilizador tem um espaço pessoal, podendo colocar e partilhar imagens com os amigos. Por outro lado, tem também a possibilidade de conversar textualmente com os outros avatares em tempo real (Figura 4.15 e Figura 4.14).

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.15: Exemplo de uma conversa textual entre dois amigos no Frenzoo.

Figura 4.15: Exemplo de uma conversa textual entre dois amigos no Frenzoo.

Dentro desta categoria pode-se distinguir aqueles que permitem, para além da socialização, a criação de elementos dentro do mundo, como acontece, por exemplo, com o Activeworlds, o DotSoul, e o Second Life.

O Activeworlds estreou-se em 1995 sendo um dos mundos virtuais mais antigos que

ainda hoje se mantém em funcionamento. O Activeworlds Universe é uma aplicação cliente/servidor que consiste em vários mundos individuais onde os utilizadores podem interagir com outros do universo. Actualmente existem diversas versões do Activeworlds, como por exemplo, o Activeworlds Europe e o Activeworlds Educational

Universe (AWEU), fundado em 1999. Este último é um universo separado, dedicado exclusivamente à educação. Neste mundo os utilizadores são representados por avatares, que têm uma identificação única no mundo (Figura 4.16). A comunicação é feita através

da conversação textual entre avatares. Os utilizadores têm a possibilidade de construir

objectos a partir de réplicas de outros objectos existentes no mundo, como árvores, casas, bancos, entre outros. Este mundo permite também que os utilizadores desenvolvam animações para os objectos criados, tais como abrir uma porta quando um avatar lhe bate. Para tal, o Activeworlds disponibiliza bibliotecas de programação ou “Sofware Development Kits” (SDK) para os utilizadores criarem aplicações que interajam com o mundo.

Capítulo IV: Mundos Virtuais

Capítulo IV: Mundos Virtuais Figura 4.16: O browser do Active Worlds Educational Universe. Dentro desta categoria,

Figura 4.16: O browser do Active Worlds Educational Universe.

Dentro desta categoria, o Second Life (SL) é o mundo virtual mais conhecido, graças à grande exposição mediática desde 2007, tendo sido lançado em 2003 (Rymaszewski et al., 2007). Este é um mundo virtual 3D que usa a Internet como meio de comunicação, no qual a maior parte do seu conteúdo é criado pelos seus utilizadores, comummente designados de residentes. O SL tem a particularidade de permitir aos utilizadores construírem objectos, dentro do mundo, que vão desde simples cadeiras a réplicas de edifícios e locais históricos, como é o caso da versão virtual da Praça do Comércio de Lisboa ou de uma versão virtual do Museu Nacional dos Coches (Figura 4.17). A ferramenta de modelação 3D que o SL disponibiliza é simples e fácil de utilizar sendo uma das que apresenta mais funcionalidades em relação aos outros mundos virtuais actuais (Salmon, 2009). Para além deste aspecto, que o torna bastante popular, tem uma linguagem de programação interna (Linden Scripting Language – LSL) que possibilita a atribuição de comportamentos aos objectos criados. Os programas são desenvolvidos, compilados e executados dentro do mundo. No capítulo seguinte encontra-se uma descrição mais detalhada da ferramenta de modelação 3D, assim como da linguagem LSL. De acordo com Robin Harper (2007), as três directivas principais do SL são a vida em comunidade, a criação colaborativa e também a economia.

Capítulo IV: Mundos Virtuais

O SL é utilizado como plataforma para educação por diversas instituições, como

universidades, empresas e entidades governamentais. Muitas destas instituições têm no SL representações oficiais. Por exemplo, a nível nacional, a primeira organização a utilizá-lo para fins educativos foi a ARCI, desde 2004 (Expresso, 2007). A nível do ensino superior, a primeira instituição a utilizar o Second Life para fins educativos foi a Universidade de Trás-os-Montes e Alto Douro, em Dezembro de 2006, tendo criado um espaço no SL em Fevereiro de 2007 (Bettencourt, 2007). Também pouco depois a Universidade de Aveiro inaugurou um espaço no Second Life, a 25 de Maio de 2007 (JPN, 2007).

um espaço no Second Life, a 25 de Maio de 2007 (JPN, 2007). Figura 4.17: Na
um espaço no Second Life, a 25 de Maio de 2007 (JPN, 2007). Figura 4.17: Na

Figura 4.17: Na imagem da direita uma réplica da Praça do Comércio de Lisboa no SL; Na imagem da esquerda uma réplica do Museu Nacional dos Coches no SL.

Para além da utilização do SL na educação, muitas organizações têm no SL um balcão

de informação, como é o caso do Ministério da Justiça, que tem um centro de mediação

e arbitragem (e-Justice Centre). Este centro disponibiliza serviços de mediação e arbitragem aos avatares residentes no SL, podendo ser utilizado para dirimir conflitos

derivados de relações de consumo ou de quaisquer contratos celebrados entre as partes.

Os utilizadores do centro podem optar pela aplicação da lei portuguesa ou pela aplicação de critérios de equidade na resolução dos litígios submetidos ao centro. Este centro foi desenvolvido pelo Ministério da Justiça em estreita colaboração com o Departamento de Comunicação e Arte da Universidade de Aveiro. O funcionamento do centro de mediação e arbitragem está a ser assegurado pela Faculdade de Direito da Universidade Nova de Lisboa, através de um protocolo celebrado com o Ministério da Justiça (E-Arbitration-T, 2008). Muitas das organizações com presença no SL geralmente

só proporcionam interacção directa dos utilizadores com os funcionários desta em

horários específicos. Devido a esta limitação, a Universidade de Trás-os-Montes e Alto

Capítulo IV: Mundos Virtuais

Douro, em parceria com a Portugal Telecom Inovação, desenvolveu um sistema que permite às organizações manter uma constante interacção entre utilizadores no SL, através da simulação da presença de funcionários usando avatares automatizados que comunicam com as pessoas na vida real por meio de mensagens instantâneas e por tecnologias de serviço de mensagens curtas (Valério et al., 2009).

No capítulo seguinte encontra-se uma descrição detalhada deste mundo virtual.

Na tabela seguinte apresenta-se um resumo com as características dos mundos virtuais sociais estudados.

Objectivo

Local

Plataforma

População

Programar

There

Aberto

Disperso

Síncrona

Multi-utilizador

Sim

 

Internet

Kaneva

Social

Disperso

Síncrona

Multi-utilizador

Sim

 

Internet

Lively

Social

Disperso

Síncrona

Multi-utilizador

Não

 

Internet