Baixe o app para aproveitar ainda mais
Prévia do material em texto
Dissertação de Mestrado Profissional apresentada por Elias Vidal Bezerra Junior à Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco, sob o título, Análise da prática docente no processo de ensino de programação orientada a objeto mediado por meio de rede social educativa , orientada pelo Professor Alex Sandro Gomes e aprovada pela Banca Examinadora formada pelos professores: __________________________________________ Prof. Márcio Lopes Cornélio Centro de Informática / UFPE ______________________________________________ Profª. Ayla Débora Dantas de Souza Rebouças Universidade Federal da Paraíba _______________________________________________ Prof. Alex Sandro Gomes Centro de Informática / UFPE Visto e permitida a impressão. Recife, 14 de junho de 2013. ___________________________________________________ Profª. EDNA NATIVIDADE DA SILVA BARROS Coordenadora da Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco. Agradeço, primeiramente, a Deus pela vida, pela saúde, pelas oportunidades e proteção durante toda a caminhada do início até o fim do curso. Aos meus pais Elias Vidal Bezerra e Vanda Silveira Vidal, e meus irmãos por todo apoio e incentivo ao longo dessa caminhada. Ao Instituto Federal de Educação, Ciência e Tecnologia - IFTO campus Porto Nacional pelo apoio e incentivo na realização desse curso. Ao Instituto Federal de Educação, Ciência e Tecnologia IFPE campus Recife, por fornecer o seu alojamento para hospedagem durante as aulas do curso. Agradeço ao meu orientador e amigo Prof. Dr. Alex Sandro Gomes, por toda a paciência, ensinamentos, críticas e aprendizado durante toda essa caminhada. Agradeço a minha co-orientadora e amiga Profa. Dra. Flavia Veloso Costa Souza, por todos os apontamentos, correções e sugestões durante esse trabalho. Agradeço aos colegas do grupo de pesquisa do CCTE da UFPE, pela colaboração e sugestões durante esse trabalho. A professora Rosinete Libanio, minha colega de trabalho, de mestrado e de alojamento no IFPE e pela companhia durante as aulas e as longas e cansativas viagens até a UFPE em Recife. Ao colega Wesley Vieira por diversas vezes acordou de madrugada para me transportar ao aeroporto de Palmas. A Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - Capes, pelo incentivo proporcionado para realização deste mestrado. Ao Programa Institucional de Bolsa de Iniciação à Docência - PIBID, pelo incentivo proporcionado para realização deste mestrado. Agradeço a todos meus amigos que torceram por mim, para que eu concluísse com êxito esse desafio. A todos que participaram direta e indiretamente da realização deste trabalho. Só sei que nada sei Sócrates Este trabalho tem como objetivo analisar a efetividade do ensino de Programação Orientada a Objeto (POO) mediado por plataforma social educacional para propor melhorias dos estilos de interação de colaboração e percepção visando aprimorar a experiência dos usuários nessas atividades. Como método corresponde às etapas de progresso que consistem na fase exploratória, a delimitação do estudo, a preparação das atividades, a análise sistemática e a elaboração do relatório. Para amostragem proposital será estudantes da disciplina de Programação Orientada a Objeto do curso presencial de Licenciatura em Computação. Os resultados do estudo mostram que a combinação da ferramenta colaborativa para o ensino de programação orientada a objeto é apresentado como uma nova metodologia de ensino para que o professor reflita sua prática de ensino, passando de transmissor do conteúdo para mediador do processo de obtenção do conhecimento. Estes resultados permitiram propor novos requisitos funcionais que venham a melhorar a Rede Social Educacional REDU, que favoreça uma educação mais colaborativa por meio da mediação dos docentes e estudantes na execução de suas atividades de ensino. programação orientada a objeto; aprendizagem colaborativa; rede social educacional. This dissertation aims at analyzing the effectiveness of teaching Object Oriented Programming (OOP) mediated by social educational platform to propose improvements of styles of interaction and collaboration aiming to improve the perception of the user experience on these activities. The method corresponds to the stages of progress involving the exploratory phase, the delimitation of the study, preparation activities, systematic analysis and reporting. Purposive sampling will be students of the discipline of Object Oriented Programming Course attendance Degree in Computing. The results of the study show that the combination of collaborative tool for teaching object-oriented programming is presented as a new teaching methodology for the teacher to reflect their teaching practice, from the content to the transmitter mediating the process of obtaining knowledge . These results allowed to propose new functional requirements that will improve the Educational Social Network - REDU, to promote a more collaborative education through the mediation of teachers and students in carrying out their teaching activities. object-oriented programming, collaborative learning, educational social network. POO Programação Orientada a Objeto REDU Rede Social Educacional SCA Sistemas Companheiro de Aprendizagem IDE Interfase de Desenvolvimento iPOO Introdução a Programação Orientada a Objetos EAD Educação a Distância LCM Learning Cycle Mode LMS Learning Management System SGA Sistema de Gestão do Aprendizado UA Universidade Aberta OOAD object-Oriented Analysis and Design TIC Tecnologia da Informação e comunicação PBL Project-based Learning CSAC Computer Supported Aprendizagem Colaborativa STI Sistema de Tutoria Inteligente IFTO Instituto Federal de Educação, Ciência e Tecnologia do Tocantins 13 1. Introdução Os cursos de Computação são constituídos de conhecimentos diversos e interligados, que buscam desenvolver diferentes competências e habilidades necessárias para exercício da profissão (JUNIOR, 2010). De acordo com a Sociedade Brasileira de Computação (2013) os egressos dos cursos de Licenciatura em Ciência da Computação têm a opção de escolher entre o ensino de computação nos níveis básico, técnico ou tecnológico; a formação de docentes para o uso de tecnologias na educação; ou o desenvolvimento de tecnologias educacionais. Dessa forma o curso tem como objetivo desenvolver a construção de conhecimentos relacionados à computação interligados aos conhecimentos da área de educação, buscando desenvolver nos egressos competências tecnológicas e pedagógicas para o ensino de computação e/ou desenvolvimento de tecnologias educacionais. Dentro da matriz curricular do curso de Licenciatura em Computação a Programação Orientada a Objeto (POO) é uma disciplina que busca desenvolver nos estudantes habilidades específicas para solucionar problemas de origem complexa contidas no mundo real. A análise orientada a objetos tem se demonstrado mais completa, no sentido de ser empregada no desenvolvimento de sistemas complexos e de grande porte. Ela também possibilita uma maior integração entre os objetos do mundo real, bem como permite representar os vários aspectos do problema, através de 14 modelos intuitivos que reduzem as explicações textuais, muito utilizadas em outras metodologias. Neste sentido, a POO torna-se um conhecimento importante e fundamental para os estudantes da área de Computação, engenharia eletrônica, telecomunicações e telemática (FRANÇA, 2012). Notas históricasrelativas à evolução desta tecnologia podem ser obtidas em (BOOCH, 1994, pp. 473-490) e (GUERRAOUI et al., 1996, p. 692). 1.1 Justificativa Linguagens de programação são um conteúdo presente nos cursos das áreas correlatas à Computação. Disciplinas de linguagem de programação exigem dos estudantes o desenvolvimento de habilidades de raciocínio lógico, resolução de problemas e abstração (DOUBE, 2000). Segundo Vahldick (2007) o paradigma de Programação Orientada a Objetos (POO) é um tópico fundamental na Ciência da Computação, pois é o mais presente nas diversas linguagens e ambientes de programação utilizados na atualidade (C++, Java, C#, Python, Ruby, PHP, Perl). A POO tem sido vista como um conteúdo fundamental não só dos cursos de computação mas também de cursos da área de tecnologia como as engenharias (ANQUAN, LI, JIHUA, JIE, 2012). Segundo Sheard e Hagan (2009), estudantes iniciantes em POO enfrentam grandes dificuldades na compreensão de conceitos abstratos presentes nesse paradigma, como os conceitos de classe, herança, objeto, polimorfismo dentre outros. Os maiores desafios para eles são as tarefas de resolução de problemas concretos com conhecimento de orientação a objeto como resultado. Outro estudo realizado por Rais, Sulaiman e Syed-Mohamad (2011) identificou as fraquezas de cada conceito de POO. O resultado mostra que os estudantes apresentam grande dificuldade de compreender conceitos de herança, abstração e polimorfismo. Diante disso, o índice de abandono e repetência nessas disciplinas tem sido muito alto. Para Hinterholz Jr (2009), essas disciplinas costumam ter altos índices de evasão e reprovação, dificultando ou impedindo a continuidade dos estudantes no curso. Segundo Kölling (1999) um dos principais problemas relacionados à POO não são as dificuldades do conceito e sim a falta de ferramentas disponíveis para apoiar a prática docente. Ferramentas e ambientes disponíveis para o ensino de POO 15 geralmente são muito complexos, deixando os estudantes confusos e dificultando assim a aprendizagem dos conceitos de POO. 1.2 Problema Várias questões sobre a metodologia de ensino de POO têm sido levantadas com o objetivo de se obter uma melhor prática de ensino de seus conceitos (RUMBAUGH, 1994). Algumas pesquisas têm demonstrado que a introdução do paradigma estruturado pode ser prejudicial ao entendimento dos conceitos de POO (ROWE, 2002). Também é importante que no ensino de POO os docentes busquem inovar a forma de expor os conteúdos, buscando novas formas de ajudar os estudantes em suas dificuldades de aprendizagem e compreensão do conteúdo. Segundo Liu et al., (2009) uma abordagem tradicional para ensino de POO, que pense em transmitir o conhecimento para aceitação passiva do estudante, seria uma falha de metodologia de ensino do conceito. Logo, novos métodos de ensino de programação Orientada a Objeto buscam desenvolver concepções de ensino que motivem os estudantes a serem cada vez mais ativos e autônomos. Alguns exemplos desses métodos são os jogos para simulação e o uso de ambientes colaborativos no processo de ensino e aprendizagem da disciplina. 1.3 Hipótese O presente trabalho parte da hipótese que a promoção de colaboração entre estudantes e professores por exemplo, pelo uso de uma rede social educativa - pode melhorar a prática de ensino de POO. Um ambiente colaborativo poderia melhorar o desempenho do docente uma vez que possibilita uma exposição dos conteúdos, disponibiliza recursos para utilizar a linguagem de programação dentro do próprio ambiente, e apresenta a possibilidade de aplicação de testes com exercícios para fixar o conteúdo, dentre outros recursos. Dessa forma o uso de uma plataforma desse tipo poderia beneficiar a prática de ensino do professor por proporcionar aos estudantes e professor a interação entre as partes ultrapassando o ambiente escolar, sendo avaliado através de uma pesquisa qualitativa. 16 1.4 Objetivo Geral Analisar a efetividade da prática docente no processo de ensino de programação orientada a objeto mediado por meio de rede social educativa. 1.5 Objetivos Específicos Identificar as limitações do ensino de Programação Orientada a Objeto através de ambiente virtual de ensino; Analisar a efetividade das práticas de ensino de Programação Orientada a Objeto através de uma rede social educativa; Analisar as dificuldades do ensino de Programação Orientada a Objeto em ambiente virtual colaborativo; Apresentar os requisitos funcionais da rede social educativa, que permitam suplantar as dificuldades do ensino para professores e validar a hipótese através da observação sistemática. 17 1.6 Estrutura da Dissertação Este trabalho está estruturado da seguinte maneira: Capítulo 1 Introdução: Justicativa, Objetivo do Design, Objetivo Geral, Objetivos Específicos e Estrutura da Dissertação. Capítulo 2 Ensino de POO: Ensino de Programação Orientada a Objeto, Ensino de POO na modalidade semipresencial, Ensino de POO mediado por ambientes virtuais colaborativos. Capítulo 3 Método de Pesquisa: Paradigma de pesquisa e estudo, Participantes, Procedimento, Entrevista semiestruturadas, Filmagens da sala de aula, Captura de telas, Análise qualitativa dos Dados, Recomendação de requisitos. Capítulo 4 Análise dos Resultados: Resultados, Limitações impostas pelas redes sociais, Discussão dos Resultados. Capítulo 5 - Considerações Finais: Conclusões, Dificuldades, Contribuições e Trabalhos futuros. 18 2. Princípios e Ensino de POO Este capítulo descreve o estado da arte sobre o ensino e a aprendizagem de programação orientada a objeto. 19 2.1 Princípios de Programação Orientada a Objeto Os diferentes paradigmas de programação propostos nas últimas décadas propuseram a quebra da complexidade de um software pela sua divisão em um conjunto de partes menores, chamados módulos, que podem ser mais facilmente compreendidos e implementados, tendo suas relações e interações especificadas de forma simples (DALL'OGLIO, 2007). A esse processo deu-se o nome de modularização de software. Cada módulo de software deve implementar um interesse de software, que é definido como uma parte conceitual de uma solução tal que a composição dos interesses possa definir a solução necessária pelo software Milli (2004). O processo de modularização baseado em interesses é chamado de separação de interesses1. Um sistema orientado a objetos é uma coleção de objetos que interagem entre si (MEYER, 1992). A seguir apresentaremos os principais princípios de POO, que são encapsulamento, classes de objetos, abstração e polimorfismo. 2.1.1 Princípios de Objetos Segundo BUENO (2003) na imperativa orientada a objeto, um objeto é uma entidade do software em execução constituída pelas seguintes partes: Um estado definido por um conjunto de objetos internos chamados atributos; Um conjunto de sub-rotinas chamadas de métodos. Os métodos de um objeto definem suas transformações de estado válidas, as quais definem seu sentido computacional. As assinaturas dos métodos de um objeto formam sua interface. Um programa orientado a objetos é composto de um conjunto de objetos que coordenam suas tarefas por invocação mútua de seus métodos, cooperando a fim de implementar o interesse da aplicação (PREISS, 2001). A ideia por trás das linguagens de programação orientada a objeto é combinar em uma única entidade tanto os dados quanto as funções que operam sobre esses dados. Tal entidade é denominada objeto (SILVA FILHO, 2010). 1 do inglês, separation of concerns. 20 De acordo com (GOODRICH, TAMASSIA, 2006) o princípio maisimportante por trás da orientação a objetos (OO) é o encapsulamento, através do qual um objeto que conhece a interface de um outro objeto não precisa fazer suposições sobre detalhes de sua implementação (atributos e código-fonte dos métodos) para usar suas funcionalidades. Para isso, é suficiente que o objeto concentre-se na interface dos objetos aos quais depende. Uma classe, segundo (SILVA FILHO, 2010), denota uma coleção de objetos, enquanto cada objeto é uma instância de uma classe. Uma classe pode ser definida como um conjunto de objetos, que possuem um conjunto de atributos e métodos. Classes podem também ser introduzidas como protótipos de objetos, especificando os atributos e métodos de objetos instanciados durante a execução. Heranças de classes podem ser simples ou múltiplas. Na herança simples, uma classe derivada possui exatamente uma superclasse, enquanto que na herança múltipla uma classe pode ser derivada de um conjunto de superclasses. Linguagens orientada a objetos modernas, como Java e C#, aboliram a flexibilidade da herança múltipla presente em C++, adotando o sistema de herança simples inicialmente proposto pelo Smalltalk. Para lidar com esses casos de herança múltipla, o projeto da linguagem Java introduziu a noção de interface. Em uma interface, são declarados os métodos que devem fazer parte dos objetos que a implementam. Interfaces definem a noção de tipo de objetos e suas classes. Uma classe define os atributos e comportamentos comuns compartilhados por objetos de um mesmo tipo (SINTES, 2002). Comportamento é uma ação executada por um objeto quando passada uma mensagem ou em resposta a uma mudança de estado, ou seja, é algo que um objeto faz. Na Figura 1 mostra um exemplo de implementação de uma classe em Java. 21 Figura 1 Exemplo de Classe em Java. Classes e herança trazem quatro diferentes mecanismos de abstração para a programação orientada a objetos Taivalsaari (1996): Classificação/Instanciação: classes denotam objetos com estruturas similares (métodos e atributos). Objetos representam instâncias de classes; Agregação/Decomposição: é a habilidade de ter objetos como atributos de outros objetos. Desse modo, um conceito representado por um objeto pode ser descrito pela orquestração de um conjunto de objetos representando suas partes constituintes, formando uma hierarquia de objetos que representa a estrutura por atrás do conceito; Generalização/Especialização: consequência do conceito de derivação de classes por herança, que torna possível reconhecer características comuns entre diferentes classes de objetos através de superclasses. Tal habilidade torna possível o polimorfismo de subtipos, típico em linguagens orientadas a objetos, onde uma referência de um objeto, ou variável, que é tipada com uma classe pode referir-se a um objeto de qualquer uma das suas subclasses; 22 Agrupamento/Individualização: é a utilização de coleções de classes que agrupam de objetos com interesses comuns. Através do polimorfismo, tais coleções de classes relacionadas, por relações de herança, podem ser válidas. Na programação orientada a objetos, o polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam. Assim, é possível tratar vários tipos de maneira homogênea (através da interface do tipo mais abstrato). O termo polimorfismo é originário do grego e significa "muitas formas" (poli = muitas, morphos = formas). O polimorfismo é caracterizado quando duas ou mais classes distintas tem métodos de mesmo nome, dependendo da linguagem não basta ter apenas o mesmo nome, tem de manter os mesmos tipos dos argumentos e do valor de retorno, de forma que uma função possa utilizar um objeto de qualquer uma das classes polimórficas, sem necessidade de tratar de forma diferenciada conforme a classe do objeto. Uma das formas de implementar o polimorfismo é através de uma classe abstrata, cujos métodos são declarados mas não são definidos, e através de classes que herdam os métodos desta classe abstrata. No ambiente de desenvolvimento de software, reuso e manutenibilidade de código são práticas bastante apreciadas por equipes de desenvolvimento na construção de sistemas computacionais. Um valioso conceito de OO que contribuem para com as boas práticas é o polimorfismo, visto que este conceito possibilita envio de mensagens genéricas, abandonando detalhes da exata implementação do código (FARINELLI, 2007). Cardelli e Wegner (1985) classificam o polimorfismo em linguagens orientadas a objetos de acordo com a Figura 2. Essa classificação é para linguagens de programação. O caso da orientação a objetos é de polimorfismo de inclusão, se não 23 levarmos em conta que classes podem ser genéricas em determinadas linguagens. Ela exibe de forma esquemática esta classificação que está detalhada a seguir. Figura 2 - Classificação de Cardelli e Wegner (1985) para polimorfismo. 2.2 Ensino de Programação Orientada a Objeto O ensino de programação e modelagem através de métodos orientados a objetos tornou-se comum na introdução da ciência da computação durante os últimos dez anos. Entretanto, há várias referências novas demonstrando uma volta às linguagens imperativas procedurais ou mesmo linguagens dinamicamente tipadas. . Algumas pesquisas indicam que aprender orientação a objetos é mais difícil do que outros paradigmas (VESSEY, CONGER, 1994). A introdução de programação de computadores continua sendo um desafio para muitos estudantes iniciantes (EDIRISINGHE, 2008). A exposição à programação e, neste caso, os conceitos de programação orientada a objeto, podem ser um obstáculo entre os programadores novatos por se tratar da complexidade dos conceitos em relação às construções de uma linguagem imperativa procedural. Além disso, há ainda a falta de conteúdo apropriado e interessante que pode envolver os estudantes para melhorar seu processo de aprendizagem (PIVEC, DZIABENKO, SCHINNERL, 2003). Provavelmente acontece esse problema porque alguns fatores podem afetar os estudantes na aprendizagem de conceitos de programação orientada a objeto, incluem falta de experiência em programação (CLARKE, THOMAS, ADAMS, 2005). O fundamental é fornecer uma boa experiência no aprendizado de programação orientada a objeto. A exposição inicial dos conceitos de programação orientada a 24 objeto dever ser atraente e divertida para fins de aprendizagem dos estudantes. Sendo assim, o jogo é uma abordagem interessante para envolver os estudantes no aprendizado de forma lúdica (VAHLDICK, 2007). Até 1980, eram utilizados os princípios de programação orientada ao processo, que se transformava em problemas da vida real para o processo, então era compilado cada processo para um processo. Como o desenvolvimento da tecnologia de programação no Século 20, o pensamento de programação orientada a objeto é proposto, aonde é compilado um objeto (ou entidade) para o procedimento e não transformá-lo no processo, por isso a possibilidade de erros é reduzida (SILVA FILHO, 2010). Programação orientada a objetos não é simplesmente alguns recursos adicionados à linguagem de programação. Pelo contrário, é uma nova maneira de pensar sobre o processo de decompor o problema e desenvolver soluções de programação (LI, XU, 2010). Por isso, a programação orientada a objeto é obrigatória em currículos de ciência da computação e é ensinada usando um conjunto diversificado de linguagens de programação, como C ++, C #, Java ou Smalltalk. A seguir apresentamos a linguagem orientada a o objetos C++, que é uma das mais populares e Java por ser uma das mais utilizadas atualmente, as ferramentas mais utilizadas no ensino de programação orientada, o ensino de POObaseado em jogos e a metodologia iPOO para o ensino de programação orientada a objeto. 2.2.1 C++ e Java Para (SUTTON, MALETIC, 2013) Ao longo da última década, um grande esforço tem sido exercido para codificar conceitos para a linguagem de programação C + +. O projeto de Java foi orientado pelo conceito fundamental de oferecer maior simplicidade e confiabilidade do que poderia ser oferecido por C++ (SEBESTA, 2000). Na especificação de Java (Java Language Specification). Segundo (KING, 1997), Java também suporta programação orientada a objetos, com vantagens significativas sobre a linguagem C++: 25 O estudante tem que usar objetos. Apenas os tipos primitivos não são objetos. Não é possível definir funções ou procedimentos de forma isolada; todos devem pertencer a uma classe; Os objetos são sempre alocados dinamicamente e manipulados através de referências, desse modo à semântica é simplificada; O gerenciamento de armazenamento, estrutura utilizada para o armazenamento dos objetos é determinante no desempenho do sistema, é controlado automaticamente, o que reduz significativamente a dificuldade em se escrever muitas classes; As características, como sobrecarga de operadores e herança múltipla, não existem em Java. Os Estudantes têm menos a aprender antes de escrever classes reutilizáveis, e podem concentrar-se melhor no aprendizado do paradigma orientado a objeto, ao invés de dominar um número elevado de detalhes esotéricos; Possuir o coletor de lixo (garbage collectio), responsável por liberar objetos da memória quando estes não estão sendo referenciado. A Linguagem Java apresenta algumas vantagens, tais como, ser uma linguagem totalmente orientada a objetos (o que permite a herança e a reutilização de códigos de forma dinâmica e estática), fornecer portabilidade por ser uma linguagem interpretada (o Java pode ser executada em qualquer plataforma), a robustez dos recursos da linguagem, a segurança, o dinamismo, o alto desempenho, a facilidade por sua sintaxe ser parecida com as linguagens C e C++ e o acesso a vários Sistemas Gerenciadores de Banco de Dados (SGBD), através do JDBC, que é uma biblioteca de classes para acesso a banco de dados, permitindo uma conexão remota a servidores SQL. 2.2.2 UML Segundo (CHENG , YUE, 2011), Unified Modeling Language (UML) é uma linguagem de modelagem universal, que é baseada na perspectiva de orientação a objeto, descrição e visualização do software, bem como a construção e estabelecimento de documentos do sistema de software. 26 Diagrama de classe em UML corresponde à representação gráfica de um objeto do mundo real, a ser codificado em linguagem de programação orientada a objeto através de uma classe. Diagrama de classe refere-se os descritores de um grupo de objetos com estruturas semelhantes, comportamentos e relações(CHENG , YUE, 2011). Em UML, demonstração de classe é mostrado na Figura 3. Figura 3 - Símbolos que demonstram uma classe 2.2.3 Ferramentas utilizadas no ensino de Programação Orientada a Objeto Existem vários tipos de ferramentas e ambientes propostos na literatura com a finalidade de facilitar o aprendizado de lógica e linguagens de programação, destacamos e descrevemos a seguir a ferramentas mais comumente encontradas que são o HabitPro, LeCo-EAD, O BlueJ. As IDEs Eclipse e NetBeans, apesar de serem ferramentas para uso profissional, não desenvolvidas com finalidade educacionais, também serão descritas por serem muito utilizadas no ensino de POO. HabiPro (Habits of Programming) (VIZCAÍNO et al., 2000) é ambiente colaborativo que busca desenvolver nos estudantes boas práticas em programação. O propósito não é ensinar a programação, mas instigar os estudantes novatos em programação a adquirirem habilidades como a observação e reflexão sobre a estrutura do algoritmo, necessários para se tornarem bons programadores. A interface desta aplicação (Figura 4) tem duas janelas, sendo elas um chat para a comunicação entre 27 os estudantes e uma área de trabalho onde os estudantes devem colaborar para resolver um determinado problema de programação. Após a proposta da solução do grupo ser apresentada, se não estiver correta, o sistema propõe quatro tipos de ajuda, que são, oferecer suporte ao estudante sobre como resolver o problema; mostrar a solução e uma explicação do porque o problema ter sido resolvido com aquela técnica; mostrar um exemplo similar do problema que o estudante tentou resolver e sua solução; ou mostrar a solução do problema. Figura 4 - Interface do HabiPro. O LeCo-EAD (FARACO et al., 2004a, 2004b) é um SCA (Sistemas Companheiro de Aprendizagem) para o ensino à distância baseado na Web, que é composto por múltiplos CAs (Companheiro de Aprendizagem). Estes têm comportamentos próprios e estão permanentemente disponíveis para interagir com os estudantes. O ambiente virtual de aprendizagem contempla diferentes táticas de ensino, representadas pelos CAs do tipo colaborador, aprendiz e trouble maker. A partir do perfil do estudante identificado por uma escala de atitudes, o LeCo-EAD sugere qual tipo de CA irá atuar como seu companheiro virtual de aprendizagem. O LeCo-EAD é um SCA que adota dois tipos de adaptação: a de conteúdo e a de estratégia de ensino. A adaptação de conteúdo é realizada a partir da desempenho do estudante no curso, em que o sistema, através de um esquema de pré-requisitos, apresenta somente os conceitos que o estudante está apto a desenvolver. O outro tipo de adaptação ocorre quando o sistema solicita a participação do estudante na escolha do CA mais adequado ao seu 28 perfil, inicialmente através da escala de atitudes e durante o curso através dos mecanismos de feedback. A Figura 5 ilustra a Interface do LeCo-EAD. Figura 5 - Interface do LeCo-EAD. As maiorias destas aplicações estão baseadas na exposição e animação de algoritmos, podendo ser utilizadas para tarefas tão diversas como reter a atenção dos estudantes durante as apresentações, explicar conceitos de uma forma visual e encorajar um processo de aprendizagem firmado na prática. Este último aspecto parece extremamente relevante, uma vez que os ambientes de programação (IDEs como Eclipse2, Netbeans3) são direcionados aos profissionais, e a informação que fornecem é normalmente bastante complexa para ser compreendida por estudantes iniciantes. A Figura 6 ilustra a interface da IDE Eclipse. Eclipse é um IDE (Interfase de Desenvolvimento) desenvolvido em Java, seguindo o modelo open source de desenvolvimento de software. O projeto Eclipse foi iniciado na IBM em novembro de 2001 que desenvolveu a primeira versão do produto e doou-o como software livre para a comunidade de desenvolvedores Java. 2 http://www.eclipse.org/downloads/ 3 http://netbeans.org/downloads/ 29 Figura 6 - Interface do Eclipse. A Figura 7 ilustra a interfase da IDE do NetBeans. O NetBeans IDE é um ambiente de desenvolvimento integrado (IDE) gratuito e de código aberto para desenvolvedores de software nas linguagens Java, C, C++, PHP, Groovy, Ruby, entre outras. O IDE é executado em muitas plataformas, como Windows, Linux, Solaris e MacOS. O NetBeans IDE oferece aos desenvolvedores ferramentas necessárias para criar aplicativos profissionais de desktop, empresariais, Web e móveis multiplataformas. 30 Figura 7 - Interface do NetBeans. Uma proposta para suprir esta necessidade, foi à construção do IDE Bluej, cujo principal objetivo é facilitar o processo de aprendizado dos principais conceitos do Paradigma OO. Para atingir esse objetivo o bluej faz uso de recursos visuais interativos, tais como classes e relacionamento que podem ser definidos visualmente (VAHLDICK, 2007). Deste modo, a utilizaçãode ambientes mais simples e com interface acessível pode contribuir para estimular os estudantes a experimentar, avaliar e corrigir os seus próprios algoritmos, auxiliando o processo de aprendizagem de programação. 2.2.4 O Ensino de POO baseado em Jogos Segundo (LEUTENEGGER, EDGINGTON, 2007), o tempo limitado dos cursos de programação também pode afetar a curva de aprendizado de um estudante. A insuficiência de tempo requer professores para enfatizar certos conceitos e concentrar- se na parte teórica, em vez de equilibrar teoria e prática (ANQUAN et al., 2012). É importante saber o desempenho do estudante sobre adoção de uma abordagem de ensino eficaz de deve aumentar o interesse do estudante e entendimento (CHINN et al., 2010). Outro aspecto a considerar, os estudantes tem a sua própria percepção na 31 aprendizagem, cada estudante tem uma forma diferente de aprender (CHINN et al, 2010), e diferentes níveis de compreensão. Eles podem ter uma compreensão profunda ou uma compreensão básica (PURDIE, HATTIE, 2002). Todos estes fatores motivam os estudantes a estudar utilizando jogos para apoio a aprendizagem de conceitos de programação orientada a objeto. Segundo Rais, Sulaiman e Syed-Mohamad (2011) no desenvolvimento de jogos educativos é essencial investigar as necessidades dos estudantes. Assim, um estudo preliminar de (RAIS, SULAIMAN, SYED-MOHAMAD, 2011) selecionou um grupo de estudantes que participaram de um experimento para explorar os jogos escolhidos e para responder a um conjunto de perguntas. O objetivo era estudar as necessidades dos estudantes em aprender conceitos e de programação orientada a objeto utilizando jogos. Um jogo educacional precisa satisfazer as duas dimensões: sendo um jogo o que significa sendo uma competição entre adversários que agem sobre restrições que são as regras do jogo para ao final vencer; e ser educacional o que significa que precisa ser projetado para ensinar um de determinado assunto (WANGENHEIM, WANGENHEIM, 2012). Três métodos de aprendizagem foram testados no estudo (RAIS, SULAIMAN, SYED-MOHAMAD, 2011). O primeiro método foi o conservador com estudantes que aprenderam de forma tradicional através de palestras ou laboratórios. Os outros dois métodos foram através de jogos baseados no apoio a programação GAPS 1.0 e Alice 2.0. O GAPS 1.0 é um jogo 2D, que suporta programação básica e alguns conceitos de programação orientada a objeto, tais como objeto e classe. Um grupo de estudantes de graduação desenvolveram o GAPS 1.0 como exigência final de projeto BSc do Programa de Ciência da Computação (RAIS, SULAIMAN, SYED-MOHAMAD, 2011). Por outro lado, Alice 2.0 é um jogo 3-D que ensina introdução à programação e permite que os estudantes arrastar e soltar peças gráficas para criar uma programa (EDIRISINGHE, 2008). Figura 8 - Alice 2.0 A Figura 8 e Figura 9, mostram a imagem de Alice 2.0 e GAPS 1.0. GAPS 1.0 fornece habilidades básicas de programação, aonde suporta os conceitos básicos de 32 programação orientada a objeto. Alice 2.0 é uma ferramenta bastante representativa para aprender POO através de um jogo. Figura 8 - Alice 2.0 Figura 9 - GAPS 1.0. Portando o Alice 2.0 é um software bastante representativo para aprender programação orientada a objetos através de um jogo. Assim pode ser combinado com o uso do GAPS 1.0 para o ensino dos conceitos básicos de programação orientada a objeto juntamente com o método tradicional de ensino como aulas expositivas e laboratórios. Alice 2.0 não cobre os conceitos de herança e polimorfismo e GAPS 1.0 aborda alguns conceitos de programação orientada a objetos. 33 2.2.5 A metodologia iPOO para ensino de Programação orientada a Objetos Segundo (LOPES, 2007), a metodologia iPOO (Introdução a Programação Orientada a Objetos) tem por objetivo apresentar-se como alternativa para o ensino introdutório de programação de computadores, abordando os conceitos básicos de classes e objetos desde o primeiro contato do estudante com uma linguagem de programação em um curso. Em 2006, a Universidade Regional de Blumenau reformulou as matrizes curriculares dos cursos de Sistemas de Informação e Ciência da Computação, iniciando o ensino de programação orientada a objeto desde o primeiro semestre do curso. Em 2006/2 foi criada uma turma em caráter experimental no curso de Ciência da Computação que demonstrou a viabilidade do projeto (LOPES, 2007). Por outro lado, há universidades que deixaram de ensinar OO e voltaram a ensinar linguagens imperativas procedurais. A seguir serão apresentados os passos da metodologia. As tarefas indicadas devem ser realizadas pelo estudante em cada um dos passos. Entre parênteses aparece a versão da metodologia (1, 2, 3 ou 4) onde o passo foi introduzido (LOPES, 2007): 1. INTERPRETAÇÃO (1): ler o problema até compreendê-lo totalmente, destacando os verbos e os substantivos. Verificar atentamente se o problema está bem definido, se não há ambiguidades ou informações incompletas e irrelevantes; 2. CASOS DE USO (1): identificar o que o sistema deve fazer, a partir da análise dos verbos existentes no enunciado e indicando as operações fundamentais que devem ser realizadas na interação do usuário com o sistema; 3. ATORES (1): identificar os sujeitos (substantivos) responsáveis pelas interações em cada caso de uso; 4. ENTRADAS (1): identificar as informações (substantivos ou locuções adjetivas) que são fornecidas, destacando, para cada caso de uso, os 34 dados ou recursos disponíveis ou necessários para a solução do problema; 5. RESULTADOS (1): identificar as informações (substantivos ou locuções adjetivas) que devem ser geradas como resultado, procurando observar se todas as entradas ou recursos necessários estão disponíveis; 6. DESCRIÇÃO DOS CASOS DE USO (1): descrever de modo simples e objetivo as operações necessárias para cumprir as tarefas necessárias para cada caso de uso, definindo, inclusive, as responsabilidades dos atores; 7. TESTES (1): definir um conjunto de dados de entrada com os respectivos resultados desejados para testar a solução do problema. 8. CLASSES DE MODELO (2): identificar as classes necessárias para a solução do problema, através da extração dos substantivos presentes no enunciado, procurando identificar aqueles que são importantes para o domínio do problema proposto e que podem ser modelados com atributos e comportamentos. 9. ATRIBUTOS: (2): identificar os atributos de cada classe de modelo extraindo os substantivos ou locuções adjetivas que definem características das classes propostas no item anterior. Não é obrigatório que uma classe tenha um atributo. Também devem ser identificados os tipos dos atributos. 10. MÉTODOS: (2): identificar os comportamentos de cada classe de modelo, destacando suas entradas e resultados e descrevendo o algoritmo para sua execução. Nesta etapa algum detalhamento adicional é necessário: Para cada dado de entrada identificado para um método, o mesmo deve ser qualificado como atributo, constante, parâmetro ou resultado de método. Exceção feita aos construtores e métodos setters, pois nestes casos a entrada sempre é um parâmetro que irá realizar a transformação em um atributo; Para cada dado de resultado identificado para um método, o mesmo deve ser qualificado como atributo ou retorno. Exceção feita aos métodos getters, pois nestes casos a saída sempre é o conteúdo de um atributo; 35 Descrição dos passos para a solução do problema. Neste caso, optou-se pela representação através da construção de fluxogramas; 11. DIAGRAMA (2): Construir um Diagrama de Classes inserindo a representação de todos os seus atributos, com seus respectivos tipos, e métodos com suas respectivas assinaturas, além de apresentar as associações com outras classesde modelo, quando houver. 12. CLASSES DE MODELO EM JAVA (3): codificar todas as classes do modelo em Java. 13. PROJETO DE INTERFACE (4): definir o layout da interface com o usuário, desenhando as telas através das quais o usuário irá interagir com o sistema. Este projeto deve atender a todos os casos de uso identificados para o problema. 14. EVENTOS (4): identificar todos os eventos a serem tratados a partir do projeto da interface, indicando em que momento cada um irá ocorrer. Também deve ser apresentado o algoritmo, em forma de fluxograma, do evento. 15. EVENTOS EM JAVA (4): codificar os eventos na linguagem Java. 16. OTIMIZAÇÃO (2): revisar a solução do problema, mesmo se estiver correta para melhorar a maneira de descrever ou o modo como está sendo realizada a solução do problema. Caso encontre possibilidades de melhoria deve-se retornar aos passos anteriores. Lopes (2007) apresenta a comparação dos resultados em turmas com e sem o uso da metodologia iPOO (Tabela 1). Tabela 1 - Aprovações e Reprovações. 2006/1 2006/2 2007/1 1 turma só algoritmos sem OO 1 turma experimental com OO 3 turmas com a iPOO Aprovados 22 9 50 Reprovados 10 11 49 Portanto, a metodologia iPOO, por ter sido a primeira experiência com a nova metodologia, o resultado de 50% de aprovação pode ser considerado satisfatório, mas 36 não conclusivo, na inserção de conceitos de programação orientada a objetos para acadêmicos ingressantes dos cursos de Sistemas de Informação e Ciência da Computação, sem qualquer prejuízo aos resultados da aprendizagem dos paradigmas de programação orientada a objeto. Para (Lopes, 2007), a iPOO, baseada em ferramentas de análise e programação orientada a objetos, apresentou algumas possibilidades de forma bastante positiva e proveitosa e com chances de se tornar muito eficiente em um futuro próximo. A seguir apresentado as principais dificuldades no ensino de programação orientada a objeto, como a difícil arte de programar, dificuldades atribuídas às características de POO, pensamento orientado a processo é forte e a falta de flexibilidade o conceito apenas recitado. 2.3 Dificuldades no Ensino de Programação Orientada a Objeto 2.3.1 A Difícil Arte de Programar À medida que cresce a complexidade dos sistemas de software e aumenta à concorrência dentro da indústria de software as linguagens de programação devem lidar com questões como as listadas a seguir: Como expressar a entidade real no projeto do sistema; Como garantir a desabilidade e extensibilidade do módulo; Como desenvolver módulos tolerantes a mudanças no futuro; Como melhorar a produtividade e reduzir consumo de software; Gerir a forma de programação; Como melhorar a qualidade de software; Como fazer que o processo de software se tornasse uma indústria de desenvolvimento. A arte de programação inclui o conhecimento de ferramentas de programação, resolução de problemas, domínio de linguagens, habilidades e estratégias eficazes para a concepção e implementação de um programa (BYRNE, LYONS, 2001). 37 Segundo Byrne e Lyons (2011) é importante que o ensino de programação seja iniciado, primeiramente, pelo ensino das noções básicas de uma linguagem de programação e que em seguida os estudantes sejam orientados ao desenvolvimento de estratégias eficazes para todo o processo de programação. Aprender a programar geralmente é considerado uma tarefa difícil e os cursos de programação frequentemente apresentam altas taxas de abandono escolar. Um iniciante leva cerca de 10 anos para se tornar um programador especialista (SOLOWAY, SPOHRER, 1989). Ultimamente diferentes abordagens de ensino de programação como o paradigma de programação orientada a objeto têm sido estudadas. Java e C++, tornaram-se linguagens comuns no processo de ensino. 2.3.2 Dificuldades atribuídas às características de POO Segundo (XINOGALOS et al., 2006), a maioria dos estudos sobre o ensino de programação orientada a objeto mostra que os estudantes confundem um pouco os elementos da linguagem, como identificadores de atributos e métodos. Além disso, eles enfrentam dificuldades na utilização de outros elementos da linguagem para a implementação da solução de determinados problemas. Segundo (HOLLAND et al., 1997) alguns estudantes confundem classes com objetos. Além disso, observou-se numa escala muito menor, a confusão entre classes e métodos. Semelhanças entre os identificadores dos atributos e métodos, como por te nesta confusão. Embora os estudantes pareçam compreender o conceito de coleções de objetos, eles acham que é difícil usar coleções com tamanho flexível para agrupamentos de objetos (como ArrayList), e até mesmo coleções de tamanho fixo (como matrizes). Essas dificuldades referem-se ao uso de coleções de objetos para implementações de soluções em geral, erros sobre os limites de uma matriz (TOPOR, 2002) ou usando para o primeiro elemento de um array ou coleção o índice 1 ao invés de 0 (TAYLOR, 2005) 38 2.3.3 Pensamento Orientado a Processo é Forte Segundo Zhu, Jingao (2010), na Computer Education College, a primeira linguagem de programação é a linguagem C, que tem como objetivo formar os estudantes a dominar a capacidade de raciocínio lógico. Depois dessa fase de aprendizagem, é muito difícil mudar os seus conceitos a partir do orientado a processo para o orientado a objeto rapidamente. Alguns países europeus e norte americanos, a linguagem de programação orientada a objeto é tratado como a primeira linguagem dos estudantes no ensino superior, os estudantes são treinados não só orientado a objeto, mas também o pensamento lógico (ZHU, JINGAO, 2010). Um estudo mais recente de (ZHI, 2012) diz que após a linguagem estruturada C, ensina-se Java como uma segunda linguagem de programação, com o objetivo de ensinar os alunos a construir idéias de programação orientada a objetos, dominar o básico da síntaxe da linguagem Java, com algumas habilidades de programação. 2.3.4 Conceito de POO apenas Recitado Existem muitos conceitos de programação orientados a objeto. Se o estudante apenas recitar os conceitos e não compreendê-los, o projeto do programa pode não refletir o conceito (ZHU, JINGAO, 2010). O estudante deve aprender a identificar problemas a partir dos conceitos e encontrar o conceito de que dependem os problemas. Os estudantes devem ser orientados a projetar o modelo de aplicação de conceitos, e entendo o conceito de modelo de aplicativo. Após esse treinamento repetido, o estudante passará a deter uma compreensão real do paradigma de programação orientada a objetos. Uma vez que os estudantes têm um sólido conhecimento dos conceitos de programação orientada a objeto, os estudantes podem analisar e resolver os problemas com o pensamento orientado a objetos. A seguir apresentamos o ensino de POO na modalidade semipresencial, como a colaboração e ambientes virtuais, ensino de POO com modelo de abordagem LCM, ensino de POO com M206 Computing e Ensino de Programação Orientada a Objeto através do Facebook. 39 2.4 Ensino de POO na modalidade semipresencial 2.4.1 Colaboração e Ambientes Virtuais As pessoas integram grupos ou organizações e a interação entre as pessoas implica na colaboração. Uma colaboração descreve o seguinte: o processo de criação, compartilhado por dois ou mais indivíduos com habilidades complementares que interagem para criação de um entendimento comum (OH, KIM, KIM, 1997). A internet se apresenta como um meio onipresente para a entrega de informação e aprendizagem nos setores públicos e privados. A facilidade de utilização e da uniformidade desta plataforma permite que todos os cidadãos acessem serviços modernos. Especialmente na educação, onde os estudantes esperam tanto a gestão como o conteúdo do curso para terum impacto significativo no aprendizado. A aprendizagem colaborativa deve ser definida como uma situação em que as pessoas aprendem ou tentam aprender algo juntos (DILLENBOURG, 1999). Uma pesquisa de Price (2005) demonstrou que a web é um meio de aprendizado eficaz, com os resultados equivalentes a uma sala de aula tradicional. Além disso, à medida que entramos numa época em que a web esta evoluindo para um meio dedicado à exibição de conteúdo, principalmente na Educação a Distância (EAD). Estudantes dispersos por uma enorme área geográfica podem se registrar e estudar em uma comunidade virtual, que elimina a necessidade de viagens caras e acomodação em um espaço físico. Mas o uso de EAD levanta importantes questões pedagógicas. Aprendizagem com uma comunidade distribuída nos permite consultar um componente social de aprendizagem (VYGOTSKY,1997). A Figura 10 representa uma comunidade virtual. Figura 10 - Comunidade Virtual. 40 2.4.2 Ensino de POO com Modelo de abordagens LCM Learning cycle mode (LCM), Modo de ensino em ciclo de aprendizagem (ou inquérito de ensino) é também um método de ensino "centrado no estudante possui um ciclo de processo de ensino e incremental. Neste método, os estudantes são incentivados a resolver problemas, despertanto o interesse em programação naturalmente. (Hong, Wang, 2009). A Figura 11, ilustra o Modelo LCM. Figura 11 - Modelo LCM. Na Figura 11, demonstra o modo de aprendizado em ciclo, aonde o estudando colhe materiais ou identifica requisitos do problema, estuda os materiais e resolve o problema, utilizando o paradigma orientado a objeto, fechando assim o ciclo. E inicia um novo ciclo com um novo problema com um grau de dificuldade maior. 2.4.3 Ensino de POO com M206 Computing A Universidade Aberta (UA) é a maior universidade do Reino Unido, educa quase 10% de todos os formandos do Reino Unido. Seus cursos são especificamente projetados e disponibilizados a distância para aprendizagem no Reino Unido, Europa Ocidental e todo o Mundo (WOODMAN et al., 1999). O curso M206 Computing: Uma abordagem Orientada a Objetos Uma introdução a projetar e descrever sistemas de softwares. Possui 440 horas de estudo durante 33 semanas, exigindo 1/6 do grau de dificuldade para pessoas acima de 50 anos para desenvolver uma abordagem a partir do zero. O curso oferece aos usuários 41 comuns um sistema com recursos para ensinar linguagem de programação orientada a objeto desde o início. M206 Computing matricula mais de 5000 anos por ano, com idade média de 37 normalmente, e gerencia estudantes com pouca ou nenhuma experiência. Consequentemente o impacto educacional de dezenas de milhares a aprender sobre software orientado a objeto (WOODMAN et al., 1999). Indústria de Software deixou claro que precisava de pessoas que poderiam pensar de forma complexa, sistemas de software de longa duração, não apenas em programas de simples de entrada-processamento-saída. A partir dessas considerações objeto e tecnologias de rede assumiram papéis centrais no curso e agora fortemente caracterizam a visão de computação (WOODMAN, HOLLAND, PRICE, 1994). Por razões de poder e simplicidade foi escolhida a linguagem Smalltalk-80 (WOODMAN, GRIFFITHS, 1996). Uma linguagem de força para indústria que oferece benefícios e é baseada em alguns conceitos do paradigma de programação orientada a objeto (GOLDBERG, ROBSON, 1980) e seu ambiente de programação tem as seguintes propriedades: Absorção simples de tecnologia de objetos; Facilita a produção dos estudantes, alteráveis simulações. O programa curso é orientado à indústria de software. Não é apenas sobre programação orientada a objeto, mas também, análise e design, redes, sistemas operacionais e interação humano-computador. Está disponível no endereço: http://goo.gl/TJwx1. O objetivo principal do ensino de object-oriented analysis and design (OOAD), análise orientada a objetos e design, é que os estudantes sejam capazes de usar a mesma lógica de programação que eles utilizarm durante a programação orientada a objeto. Detectando estruturas de objetos encontradas na programação Smalltalk. Para introdução do curso é importante um único conjunto coerente de conceitos de POO e apontar as escolhas de design que devem ser feitas para implementar as relações comuns (WOODMAN et al., 1999). 42 Principais características pedagógicas do curso são: 1. A aquisição e prática de habilidades disposicionais na identificação de classes, associações, responsabilidades e colaborações por expor os estudantes a uma série de cenários de problemas e que essas habilidades podem ser implantadas. 2. A separação de interesses (interface do usuário contra domínio do problema) como cruciais no projeto bem sucedido de sistemas. 3. A importância da reutilização dentro do projeto. 4. Uma ênfase na importância de produzir código Smalltalk como o produto demonstrável da análise e transformação de design é reconhecível (para o estudante). A Figura 12, ilustra a Interfase do Curso M206. Figura 12 - Interfase do Curso M206. Portanto, M206 Computing consiste numa abordagem para o ensino de programação orientada a objeto que tem como objetivo atender as necessidades da indústria de software. Seu objetivo é formar graduados em computação que podem raciocinar em termos de sistemas complexos orientados a objetos de longa duração. A 43 tecnologia utilizada no curso apoia o debate dos estudantes sobre os conceitos fundamentais de programação orientada a objeto, dessa forma o seu uso é apropriado para o ensino semipresencial à distância. 2.4.4 Ensino de Programação Orientada a Objeto através do Facebook Quando os estudantes têm dificuldades de aprendizagem de programação, eles costumam perguntar aos pares para encontrar respostas em vez de perguntar ao professor. Mas às vezes a capacidade dos colegas é pobre e limitada ou fazem a pergunta em horário errada, então eles não podem obter a resposta imediatamente. E então geram uma frustração na aprendizagem, assim, perdem a seu entusiasmo na aprendizagem. A fim de melhorar a situação de forma eficaz, para permitir os estudantes possam obter respostas em menor tempo. Um estudo de (LAI et al, 2013), leva características da plataforma de rede social. A plataforma rede social tem a vantagem de notificação e lembretes, que permitem estudantes obter uma resposta imediatamente. Especialmente o Facebook ocupa a maior taxa de utilização em muitas plataformas redes social. Como o Facebook permiti usar uma API fornecida pela plataforma para desenvolver os programas de aplicação desde 2006, esse estudo utiliza Facebook para fornecer uma plataforma para os estudantes se envolver em redes sociais, bem como aprender sobre programação. A função do Facebook a rede social pode facilitar o efeito de aprendizagem colaborativa entre pares. O estudo de (LAI et al, 2013) usa "programa aplicativo do Facebook" para incorporar o Java Assist Sistema de Aprendizagem (JALs) no Facebook, de modo que os estudantes podem usar JALs para sua aprendizagem. Figura 13 mostra a estrutura do sistema. Os estudantes podem participar de redes sociais, enquanto utilizando os programas aplicativos do Facebook. As aplicações de programa no Facebook estão ligados ao Canal social através da API fornecida pelo Facebook. Os JALs desenvolve assistente de tutoria programas aplicativos no Facebook. 44 Figura 13 - Arquitetura do JALs Os estudantes podem compor e praticar programação orientada a objeto em Java através da JALs, e o sistema proporciona um mecanismo de controle automático para compilar e testar os códigos de programação Java compostos pelos estudantes. Além disso, quando um estudante encontra problemas durante sua prática, o mecanismo de perguntar-para-ajudapode ajudar o estudante a encontrar pares de tutores no Facebook para responder à pergunta. O sistema seleciona a "pessoa que respondeu a pergunta corretamente", como a prioridade dos colegas tutores, porque aqueles que têm a pergunta, respondeu corretamente pode entender a pergunta e os pontos-chaves melhor, e pode emitir pareceres e orientações para resolver os problemas. Em segundo lugar, "a pessoa que respondeu a maioria das perguntas corretamente neste momento" é selecionado a partir de colegas tutores, porque aqueles que responderam a maioria das perguntas corretamente pode ter uma melhor capacidade de resolver os problemas que eles não têm respostas a essa pergunta antes. Se o sistema não encontrar um tutor adequado, a mensagem para pedir--ajuda vai ser enviada para o assistente de curso, que atua como tutor de pares de forma anônima. Os professores, por vezes, tem que mudar as estratégias de ensino, devido aos recursos de ensino limitado. A educação ajuda conforme as estratégias de ensino podem ser projetadas por API fornecidos pelo Facebook. 45 Estudos anteriores sugeriram que os estudantes muitas vezes procuram por assistência aos seus pares quando enfrentam problemas de aprendizagem. Os estudantes podem ser tutores e avaliar o outro, e obter uma melhor compreensão das perguntas. Além disso, os estudantes discutem questões com os colegas e expõem seus próprios pensamentos, a troca de opiniões e obtêm um novo entendimento comum a respeito de um julgamento e discussão mútua, de modo a melhorar e aumentar sua aprendizagem (JONG et al, 2012). Assim, o estudo de (LAI et al, 2013) projetou uma base do Facebook para um sistema de ensino assistente, JALs, que permite que os estudantes uma troca on-line e programação orientada a objeto em Java na prática. Os estudantes podem discutir uns com os outros no modo tutor pares para ajudar no aprendizado em programação. 2.5 Ensino de POO mediado por ambientes virtuais colaborativos 2.5.1 Ensino e aprendizagem de POO por ambientes colaborativos Como vimos, a programação e algoritmos são fundamentos na compreensão da tecnologia da informação. O entendimento de conceitos da programação orientada a objetos é um elemento importante no currículo da moderna computação (TUCKER et al., 2003). O ensino e a aprendizagem colaborativos é um método de ensino em que vários estudantes são agrupados virtualmente, com a finalidade de atingir um objetivo comum acadêmico. Os estudantes podem vir de diferentes locais. O propósito do ambiente de ensino e aprendizagem colaborativa é que o grupo como um todo use recursos de cada indivíduo. Assim quando em grupo, esses recursos podem ser disponibilizados para o melhor uso de todos os membros (BALOCHE, 1998). Dessa forma, cada membro pode utilizar vários recursos disponíveis no grupo, assim enriquecendo seu conhecimento, o que não é possível individualmente. Para (SAFIA, MALA, 2012), as principais características de um ambiente de ensino e aprendizagem colaborativa são: 46 1. Agrupamento heterogêneo Estudantes, comunicando uns com os outros em vários parâmetros diferentes, ajudando no trabalho do outro. 2. Interação entre as partes Os estudantes que precisam de ajuda, começam a interagir com os seus pares, o que resolve o seu propósito. 3. Responsabilidade Individual Cada membro é encorajado a compartilhar seu conhecimento com outros membros do grupo. 4. A interdependência positiva Cada membro, dada à oportunidade de partilhar sua experiência com outros, começa a sentir que é importante e que todos juntos são necessários para ter sucesso. 5. Habilidades Coorperação, em vez de competição ou isolamento, é incentivada entre os estudantes. Segundo (SHIJIAN, SHOUQIAN, YUNHE, 2005) as formas tradicionais de aprendizagem incluem a leitura da teoria e realização de tarefas que o professor definiu. Nesse processo, porém os estudantes podem ter alguns problemas para entender partes da teoria ou realizar uma tarefa por conta própria. Através da aprendizagem colaborativa os estudantes podem trabalhar em conjunto para um objetivo comum. Desta forma os estudantes estão aprendendo juntos e podem aumentar a consciência dos colegas sobre um assunto (FU-CHIEN, TIEN-HSIN, CHIA- LIANG, 2006). O ensino de POO pode ocorrer com base em método e técnicas de ensino e aprendizagem colaborativos. Essa abordagem é conhecida como Aprendizagem Colaborativa apoiada por computador (CSCL), tem como objetivo apoiar e mediar grupos de estudantes na aquisição de conhecimento do conteúdo de um domínio específico, por meio da computação. Computação para suporte a aprendizagem cria novas possibilidades de aprendizagem entre estudantes, o que pode beneficiar no uso na tutoria de uma linguagem (KESSLER E BIKOWSKI, 2010). Ambientes de ensino e aprendizagem colaborativa são usados para promover a mediação e a colaboração entre os estudantes e aprimorar suas habilidades desencadeadas dentro de um grupo ou aprender em um ambiente tecnológico virtual. Os estudantes são capazes de unir-se ativamente na construção do conhecimento, 47 ajudando na criação, intercâmbio e análise de informações e interações durante o aprendizado do grupo em programação orientada a objeto. Alguns benefícios particulares de colaboração incluem a resolução de problemas (BAGHAEI et al., 2006): Incentivar os estudantes a verbalizar o seu pensamento; Incentivar os estudantes a trabalhar juntos; Fazer perguntas; Explicar e justificar as suas opiniões; Estudantes são responsáveis pela sua própria aprendizagem e aumentam a possibilidade de resolver ou examinar os problemas de variadas maneiras. O ensino colaborativo tem um potencial para melhorar o pensamento crítico, pensamento criativo, o pensamento de elaboração, comunicação social e habilidades como liderança, tomada de decisão, construção da confiança e gestão de conflitos. Em anos de pesquisas para o desenvolvimento de sistemas personalizados, tem influenciado a área de software educacional (TSIRIGA E VIRVOU, 2004), para o desenvolvimento aplicativos educacionais colaborativos. 2.5.2 Modelo de Ensino Colaborativo de POO baseado na Web Programação Orientada a Objetos é uma das disciplinas mais importantes do curso de ciência da computação, que tem uma considerável dificuldade não só na aprendizagem, mas também no ensino. Um Modelo de ensino colaborativo baseado na web é uma alternativa para melhorar o aprendizado. Segundo (ANQUAN, LI, JIHUA, JIE, 2012), foi realizado pesquisas baseada no Modelo Web de Aprendizagem Colaborativa e Project-based Learning (PBL), aprendizado baseado em projeto, e conduzidos práticas de ensino em programação orientada a objeto, baseado na web colaborativa. O modelo de ensino e o Modelo de projeto baseado no aprendizado usam informações de suporte a tecnologia do modelo PBL para auxiliar o processo de ensino e aprendizagem e ajudar os estudantes a melhorar a resolução de problemas e a capacidade de análise. 48 Para (ANQUAN et al., 2012), WBCL (Modelo de Ensino Baseado na Web). WBCL é o processo de utilização da rede de computadores e tecnologia multimídia para proporcionar que diferentes estudantes interajam e cooperem com o mesmo conteúdo de aprendizagem, a fim de tornar que os estudantes tenham uma compreensão mais profunda e melhor domínio dos cursos. O WBCL proporciona a mediação para construir uma aprendizagem colaborativa, um ambiente com base na rede de computadores para fazer professores e os estudantes, conduzir aprendizagem colaborativa, sobre a base de discussão, cooperação e comunicação. A interface multimídia didática de programação orientada a objeto, como mostrado na Figura 14. Oferece uma riqueza de recursos pedagógicos. Para reforçar o espírito de colaboração entre os estudantes,facilitar a comunicação entre professores e estudantes, existe o fórum de aprendizagem colaborativa do curso de programação orientada a objeto com interface rápida e amigável. O fórum adotou a tecnologia de páginas dinâmicas para a construção do quadro principal. O site é implementado no Modelo Web baseado na Aprendizagem Colaborativa. A Figura 14 ilustra a interface multimídia didática de programação orientada a objeto. Figura 14 - A interface multimídia didática de programação orientada a objeto. Portanto, segundo (ANQUAN, LI, JIHUA, JIE, 2012), através de quase três anos de reforma no ensino, os estudantes tem notável melhoria na análise de projeto de software e alcançado o objetivo do ensino do curso de programação orientada a 49 objeto. A pesquisa mostra que a abordagem de ensino colaborativa é popular entre os estudantes. Os resultados estão melhorando, por exemplo rma e , ganhou o segundo lugar no prémio do Ensino Excelente em Jiangxi Normal University, em 2009. 2.5.3 Um sistema de Groupware para Apoiar a POO Colaborativa COLLECE Compilation (edição colaborativa, e execução de programas) permite aos usuários editar um programa ou fragmento de código, compilá-lo e executá-lo de forma colaborativa. Até agora, as linguagens apoiadas são Java e C (BRAVO et al., 2012a). O que proporciona o ensino colaborativo de programação orientada a objeto através da linguagem Java. Como o sistema é usado principalmente para fins de ensino-aprendizagem, dois atores diferentes são reconhecidos: professor e estudante. O professor define as sessões de trabalho e organiza os usuários participantes usando ferramentas de gestão (BRAVO et al., 2012a). Uma sessão é definida por meio de um nome, um tipo, um arquivo contendo a formulação do problema a ser resolvido e um calendário em que a sessão tem de ser realizada. A formulação do problema inclui uma descrição textual dos objetivos, requisitos e restrições que devem ser preenchidas com a criação de um programa. Quando os estudantes acessam o sistema, a ferramenta de gerenciamento de sessão é aberta, mostrando uma lista com as sessões disponíveis. Algumas delas são públicas e outras são privadas. Qualquer usuário pode acessar uma sessão pública, que é necessário para ser um membro para acessar sessões privadas. Quando uma sessão é acessada no horário programado, o COLLECE abre um espaço de trabalho. A fim de projetá-lo, tomamos o modelo semiestruturado para a colaboração na resolução síncrona proposto por (BRAVO et al., 2006b) como uma base. Este modelo propõe scripting (protocolos de colaboração) (WESSNER et al., 1999) para estruturar a tarefas de alto nível, a perspectiva linguagem / ação (Winograd, 1988) para expressar e categorizar as ações de coordenação dos usuários, e estruturação flexível (LUND et al., 1996) para a comunicação entre usuários. A Figura 15 ilustra a Interface do COLLECE. 50 Figura 15 - Interface do COLLECE. A fim de realizar as tarefas de programação orientada a objeto, uma colaboração explícita através protocolo deve ser seguido. Primeiro, os estudantes criam uma programa usando o editor colaborativo, Figura 15(1); após o que eles são capazes de compilar o programa, recebendo uma lista de erros compilação Figura 15(2); validação da edição do código na Figura 15(3); controle de compilação por usuário, Figura 15(4); execução do código, Figura 15(5); semáforo, Figura 15(6), usuários do código fonte, Figura 15(7); (Figura 15 a, d, g e j), elementos como retângulos e rótulos para destacar o usuário e mostrar algumas informações; retângulo colorido desenhado em torno da linha do código fonte (Figura 15 b); listas de interações (Figura 15 e). Finalmente, eles podem executar o programa. Um programa compilado está disponível. Iterações são possíveis entre estas três tarefas. No entanto, apesar deste roteiro, os estudantes são livre para tomar suas próprias decisões sobre quando editar, compilar e executar, bem como para decidir quem é responsável por cada tarefa. 51 O sistema COLLECE, trabalha com ensino de programação para professores na concepção participativa da interface do usuário em que vários estudantes de uma turma podem colaborar na escrita de uma classe Java, por exemplo, implementando de forma participativa a programação orientada a objeto e observando o resultado da execução em conjunto. Além de programar os participantes podem estabelecer diálogo síncrono entre si, através de uma conversa estruturada, o que torna o estudante parte integrante de um grupo. 2.5.4 Ferramenta Colaborativa no Ensino de POO Computer Supported Aprendizagem Colaborativa (CSCL) Suporte do Computador na Aprendizagem Colaborativa tem como objetivo apoiar grupos de estudantes na aquisição de conhecimento do conteúdo em um domínio específico, por meio de computadores. O suporte de Computadores na aprendizagem cria novas possibilidades de aprendizagem entre estudantes, o que pode beneficiar o uso de tutoria em uma linguagem (KESSLER, BIKOWSKI, 2010). Ambientes CSCL promovem a colaboração entre os estudantes e aprimora suas habilidades, por aprendizagem dentro um grupo ou por aprender em um ambiente rico em tecnologia (ENGELMANN et al., 2009). Ensinar uma linguagem de programação orientada a objeto sempre foi uma tarefa difícil para os docentes, especialmente quando os estudantes são iniciantes na programação ou não possuem base matemática. As formas tradicionais de ensino incluem a leitura da teoria e a realização de tarefas definidas pelo professor. Nesse processo os estudantes podem ter alguns problemas para entender partes da teoria ou desenvolver uma tarefa por conta própria. Através da colaboração a aprendizagem os estudantes podem trabalhar em conjuntos para um objetivo em comum, desta forma estão aprendendo juntos e podem aumentar sua própria consciência e dos colegas sobre um assunto (FU-CHIEN et al., 2006), (LUO, SUN, PAN, 2005). Os estudantes são capazes de juntar-se ativamente na construção do conhecimento, ajudando na criação, intercâmbio, análise das informações e interações 52 durante o aprendizado do grupo, o que facilita o trabalho do professor durante o processo de ensino de uma linguagem de programação orientada a objeto. Alguns benefícios particulares da colaboração incluem a resolução de problemas (BAGHAEI, et al, 2006): Incentivar os estudantes a verbalizar seu pensamento; Incentivar os estudantes a trabalhar em conjunto; Fazer perguntas; Explicar e justificar suas opiniões; Cresce a responsabilidade dos estudantes sobre sua própria aprendizagem e aumentam a possibilidade de resolver ou examinar os problemas de uma variedade de maneiras. A aprendizagem colaborativa tem um potencial para melhorar o pensamento crítico, o pensamento de elaboração, comunicação social e habilidades sociais como liderança, tomada de decisão, construção de confiança, gestão de conflitos. (CHANG, CHEN, 2008). Para (VIRVOU, SIDIROPOULOS, 2012), o Sistema de Tutoria Inteligente (STI), representa a teoria de programação orientada a objeto na linguagem Python, o modelo do estudante o usuário baseado em seu conhecimentos e habilidades sobre a teoria que está sendo ensinada, o Modelo de Ensino consiste nas regras e métodos que são utilizados para exibir o conteúdo adequado a cada usuário e, finalmente, a interface do usuário consiste na camada de apresentação para a interação com o sistema. O sistema suporta várias ferramentas colaborativas que ajudam estudantes acooperar na aprendizagem e resolução de problemas, como mostra a Figura 16 o processo de colaboração, o estudante pode colaborar com outros colegas em resolução de problemas de programação orientada a objeto. 53 Figura 16 - Processo de Colaboração. Funcionalidades da ferramenta de colaboraçãoem grupo para o ensino de programação orientada a objeto para a linguagem Python: Publicação do código: Quando um estudante termina a avaliação do exame que pode publicar o seu código para que seus colegas de classe observem e comentem sobre ele. Desta forma os estudantes podem compartilhar o código e ideias para uma codificação mais eficiente. Os estudantes são capazes de avaliar uma solução para que a melhor solução possa ser ilustrada como a mais eficaz e recomendada. Tag Social: Os usuários têm a opção de marcar as aulas, exercícios e soluções. Este método tem um impacto positivo no estudante e no professor. Os estudantes podem usar essas tags para encontrar a teoria 54 semelhante ou exercícios e professor pode usar as tags para entender o que os estudantes estão pensando sobre uma certa lição. Por exemplo, uma lição que o professor designa para os estudantes novatos e está sendo marcada como muito difícil por parte dos estudantes aparentemente significa que ele precisa ser repensada ou atribuída aos estudantes que são mais avançados na disciplina; Formação de Grupo: Existem três métodos de criação grupos. O primeiro é o mais comum e amplamente usado onde o professor atribui um grupo de trabalho. O segundo é comum entre os estudantes, onde eles têm a capacidade de criar o seu próprio grupo baseado principalmente amizade. O terceiro, que o sistema usa por padrão, é realizado automaticamente pelo sistema de acordo com os dados que foram coletados sobre o estudante. O sistema coleta dados cognitivo dos estudantes, nível, atividade social e atribui-los a um grupo. O sistema contém um componente que possui informações sobre cada estudante e promove o aprendizado individualizado, o que auxilia o professor em seu processo de ensino. Além disso, a colaboração é bem sucedida pela publicação e revisão de código entre os estudantes através de tags, demonstrando a dificuldade de uma lição ou exercício, bem como a formação de grupos entre dos estudantes. Através da colaboração de docentes e estudantes podem se beneficiar de seus pares e conseguir uma melhor compreensão dos conceitos de programação orientada a objeto. Um benefício importante é que os estudantes podem melhorar seu nível de conhecimento através da interação com outras pessoas de maneira competitiva. 2.5.5 Ensino Colaborativo de POO por CRC Card No ensino a distância é mais difícil ensinar habilidades. Particularmente análise de software, que normalmente é realizada com uma sincronizada atividade de grupo. Atividade síncrona é um dos benefícios do ensino a distância, a capacidade de aprender em um horário e lugar que seja conveniente para o estudante. A abordagem assíncrona permite o ensino de projeto orientado a objeto utilizando o método CRC card. O método CRC card requer grupos de estudantes para um projeto orientado a 55 objeto. A abordagem é concebida como um recurso de design colaborativo através da internet. As universidades cada vez mais se deslocam para oferecer cursos a distância, para isso é necessário que haja uma análise cuidadosa de como facilitar o aprendizado, que é centrado em torno de competências e práticas de grupo, em vez de conhecimento individual. No ensino a distância e mais difícil de ensinar habilidades que os fatos. Os fatos podem ser facilmente obtidos através da internet ou de materiais impressos. Habilidades requer alguma prática, e essa prática tem que ser monitorada e corrigida pelo feedback em tempo hábil (DOUGLAS,1999). No grupo é difícil gerir a atividade à distância, e qualquer requisito para a atividade síncrona é um dos principais benefícios do ensino a distancia, a capacidade de aprender em um lugar e tempo que seja conveniente para o estudante. Este problema foi enfrentado no projeto de curso de educação à distância para ensinar análise e projeto orientado a objetos que teve inicio na primavera de 2000. O curso é parte de uma iniciativa de aprendizagem em larga escala a distância sendo disponibilizado pela Universidade do Estado da Florida (DOUGLAS,1999). A classe Responsabilidade Colaboração consiste no método CRC card (BELLIN, 1997). Tem como objetivo facilitar o pensamento sobre as classes no desenvolvimento orientado a objeto. No desenvolvimento orientado a objeto a principal preocupação é identificar as classes dentro de um domínio e as interações que ocorrem entre estas classes. O método permite que um grupo de desenvolvedores de objetos interaja com o objeto para desenvolver um modelo de uma aplicação orientada a objeto. O método utiliza de cartões de papel como ilustrado na Figura 17. Os cartões são de 4 x 6 polegadas, nas quais é gravado o nome da classe, qualquer superclasse a que pertence. O conjunto de responsabilidade que tem outras classes colabora com o fim de cumprir sua responsabilidade. 56 Figura 17 - Exemplo de CRC card. Por exemplo, se estamos projetando um sistema orientado a objeto para gerenciamento de uma conferência, o que é perceptível que tenha uma super classe de trabalhos. Esta superclasse pode ter subclasses para papeis de curta responsabilidade. A classe de papel pode ter uma pouca responsabilidade para indicar o estado de aceitação de um determinado papel. A fim de cumprir a responsabilidade da classe que precisa se comunicar com uma classe que representa os indicadores de papel que tem a responsabilidade de determinar se um artigo é aceito ou rejeitado. Uma sessão CRC card começa usando os atores e objetos principais identificados através da análise. Estes seriam escritos em cartões e distribuídos no grupo participante. É responsabilidade de cada individuo usar os cartões para as aulas. Eles devem atualizar as informações contidas no cartão baseado no que ocorre na interação do grupo. Uma boa sessão irá gerar pensamento conceitual em torno dos cartões (DOUGLAS,1999). No percurso de cartão para nova sessão pode ser criado e cartões existentes podem ser modificados ou eliminados. Cartões descartados são colocados numa caixa, por vezes, podem ser reintegrados. Para a técnica on-line de colaboração com CRC card é importante que os estudantes ganhem experiência prática em trabalhar em grupo para problemas menos complexos. Para esta parte do aprendizado, os estudantes serão distribuídos em grupos pequenos que trabalha em um problema do projeto. Eles vão realizar uma sessão de CRC card através da internet usando um sistema web. Isto terá uma visão do espaço do trabalho, com uma interface semelhante à de simulação. No entanto, ao contrário do sistema independente com seus participantes simulados haverá menos 57 restrições sobre a área do problema ou como o desenho pode ser alterado. Cada grupo de estudantes terá seu próprio quadro na web. Eles terão de criar cartões e publica-los, para outro no grupo poderem ter acesso. Uma sessão CRC card será então iniciada com discussões sendo realizada de forma assíncrona sobre o número de nodos. Segundo (LIBERTY, 1999), descreve a investigação de protótipos que fornecem uma base para o desenvolvimento de uma ferramenta de apoio a internet para prática baseada no CRC card. No trabalho de (DOUGLAS,1999), a investigação foi inicialmente realizada através de mensagens de texto de sistemas. A conclusão foi que o usos de interface gráfica foi necessário, a fim de reduzir a carga cognitiva dos estudantes de fazer a tarefa. Portanto, para alcançar as diversas regiões mais distantes e de difícil acesso, cursos de ensino a distância estão se tornando cada vez mais popular em muitas universidades. São necessárias soluções para o problema para proporcionar prática de experiência colaborativa de ensino à distância para estudantes que não tem a possibilidade de frequentar um curso presencial. O simulador CRC card aplicado na web é uma solução possível
Compartilhar