UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO



Documentos relacionados
Desenvolvendo Websites com PHP

Guia de Acesso Rápido AVA Ambiente Virtual de Aprendizagem Aluno

Aplicação Prática de Lua para Web

UNIVERSIDADE FEDERAL DA FRONTEIRA SUL AMBIENTE VIRTUAL INSTITUCIONAL MOODLE/UFFS

GUIA BÁSICO DA SALA VIRTUAL

COORDENAÇÃO DE ENSINO A DISTÂNCIA - EaD

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!!

Manual do Ambiente Moodle para Professores

Manual SAGe Versão 1.2 (a partir da versão )

INTRODUÇÃO AO AMBIENTE MOODLE DA UFPA. Guia rápido

TOTVS Série 1 Varejo (Simples) - Módulo e-commerce

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Noções de. Microsoft SQL Server. Microsoft SQL Server

Moodle - Tutorial para Alunos

Sistema de Acompanhamento ao Desempenho do Aluno

EQUIPE: ANA IZABEL DAYSE FRANÇA JENNIFER MARTINS MARIA VÂNIA RENATA FREIRE SAMARA ARAÚJO

Manual do. Modular Object-Oriented Dynamic Learning Environment. Manual do

Ambiente Virtual de Aprendizagem Moodle

Ajuda ao SciEn-Produção O Artigo Científico da Pesquisa Experimental

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Integração com o Ambiente Virtual de Aprendizagem Moodle

MANUAL DE NAVEGAÇÃO UNICURITIBA VIRTUAL

2 Diagrama de Caso de Uso

Indicie. 1.Introdução Como Surgiu Para que serve Instalação Oque ele permite fazer Primeiro Cenário...

Gestão inteligente de documentos eletrônicos

Manual de acesso ao UNICURITIBA Virtual (Moodle) para alunos EAD

Manual UNICURITIBA VIRTUAL para Professores

Engenharia de Software III

Fundação Presidente Antônio Carlos- FUPAC 1

MANUAL DO ALUNO AMBIENTE VIRTUAL DE APRENDIZAGEM

CONCEITO: Moodle Moodle Moodle Moodle

Orientação a Objetos

Moodle - Tutorial para Professores

Manual do Usuário 2013

02 - Usando o SiteMaster - Informações importantes

Curso de planilhas eletrônicas na modalidade EAD: Um relato de experiência

Artur Petean Bove Júnior Tecnologia SJC

Tutorial 5 Questionários

Manual do Participante do Curso de Gestão da Assistência Farmacêutica - EaD

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Ambiente Moodle 2º Semestre de 2010 Modelo A4

Módulo de Usuário 04 Orientações para o Uso 05 Acessando as Salas 06 Dentro do Ambiente das Salas 08 (1) Outros Usuários 09 (2) Seus Dados 09 (3)

EDITAL DE SELEÇÃO PÓS-GRADUAÇÃO LATO SENSU Modalidade Online

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

ROTEIRO PARA ELABORAÇÃO DE PROJETOS

tarefa 1. Para criar uma Tarefa clique em Ativar edição.

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Manual do Ambiente Moodle para Alunos

1 Sumário O Easy Chat Conceitos Perfil Categoria Instalação O Aplicativo HTML...

Manual Operacional AVA (Ambiente Virtual de Aprendizagem)

1. Introdução ao Campus Virtual 1.1. Introdução

MANUAL PARA UTILIZAÇÃO DO MOODLE FACULDADE INTERAÇÃO AMERICANA VIRTUAL - Versão: Aluno

Manual Ambiente Virtual de Aprendizagem Moodle-ESPMG 2.0

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

ISO/IEC 12207: Gerência de Configuração

Módulo 1 Configuração de Cursos. Robson Santos da Silva Ms.

Tutorial Moodle Visão do Aluno

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Sistema de Controle de Solicitação de Desenvolvimento

INSTRUMENTO NORMATIVO 004 IN004

Sumário INTRODUÇÃO Acesso ao Ambiente do Aluno Ferramentas e Configurações Ver Perfil Modificar Perfil...

mbiente Virtua de Aprendizagem

COORDENAÇÃO DE EAD MANUAL DE UTILIZAÇÃO DO MOODLE 2.6 PERFIL ALUNO. Versão 1.0

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Ambiente de Aprendizagem Moodle FPD Manual do Aluno

Planejando o aplicativo

INTRODUÇÃO: 1 - Conectando na sua conta

MANUAL DO GERENCIADOR ESCOLAR WEB

Universidade Anhanguera Uniderp Centro de Educação a Distância

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão Atualização 26/01/2009 Depto de TI - FASUL Página 1

TUTORIAL UNP VIRTUAL

Manual do Visualizador NF e KEY BEST

Manual de Utilização

Plano de Gerenciamento do Projeto

Footprints Service Core. Manual de uso do sistema

Tema 3 Ferramentas e Funcionalidades do Moodle

EDITAL DE SELEÇÃO PÓS-GRADUAÇÃO LATO SENSU Modalidade Online

Manual Geral do OASIS

CARDS - Jogo Educativo na Internet para Ensino a Distância

PROGRAMA DE CAPACITAÇÃO E APERFEIÇOAMENTO PARA TUTORES - PCAT

AULA 06 CRIAÇÃO DE USUÁRIOS

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

Sistema Gerenciador de Conteúdo OpenCms: um caso de sucesso no CEFET-MG

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

Demonstrativo de Informações Previdenciárias e Repasses

A PRESENTAÇÃO SUMÁRIO

SCIM 1.0. Guia Rápido. Instalando, Parametrizando e Utilizando o Sistema de Controle Interno Municipal. Introdução

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Registro e Acompanhamento de Chamados

Considerações a serem feitas antes da implantação.

Utilizando a ferramenta de criação de aulas

CONSTRUÇÃO DE BLOG COM O BLOGGER

CURSO DE EXTENSÃO ON-LINE EM. avançado. Edital de seleção

CENTRO EDUCACIONAL BANDEIRANTES MANUAL DO ALUNO

ESTADO DE RONDÔNIA PODER JUDICIÁRIO TRIBUNAL DE JUSTIÇA DOCUMENTAÇÃO: JULGAMENTO VIRTUAL

Transcrição:

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO INTEGRAÇÃO DE UM JUIZ ONLINE DE ALGORITMOS COM O AMBIENTE VIRTUAL DE APRENDIZAGEM MOODLE por Rafael Hernandez Galasso Itajaí(SC), julho de 2013

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO INTEGRAÇÃO DE UM JUIZ ONLINE DE ALGORITMOS COM O AMBIENTE VIRTUAL DE APRENDIZAGEM MOODLE Linguagens de programação por Rafael Hernandez Galasso Relatório apresentado à Banca Examinadora do Trabalho Técnico-científico de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientador: Benjamin Grando Moreira, M.Eng. Itajaí(SC), julho de 2013

To do nothing is sometimes a good remedy Hippocrates

RESUMO GALASSO, Rafael Hernandez. Integração de um juiz online de algoritmos com o ambiente virtual de aprendizagem Moodle. Itajaí, 2013. 72 f. Trabalho Técnico-científico de Conclusão de Curso (Graduação em Ciência da Computação) Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2013. O trabalho trata da integração de um juiz online ao Ambiente Virtual de Aprendizagem Moodle, tendo por objetivo permitir que questões envolvendo a criação de algoritmos sejam avaliadas de forma automatizada, gerando um feedback mais rápido ao aluno e facilitando a correção do professor. Para o aprendizado de algoritmos é de fundamental importância a pratica de exercícios de fixação, estimulando o raciocínio nos alunos. Com isso torna-se uma tarefa difícil para o professor a individualização nas correções dos exercícios propostos pelo mesmo, somado ao fato das turmas dos primeiros períodos de computação apresentarem grande número de alunos. Porém com a popularização e utilização de ambientes virtuais de aprendizagem pelas instituições de ensino para o auxilio e cursos online, surgiu a oportunidade da integração de um juiz online no ambiente Moodle, agregando um processo que executa, compila e compara a saída gerada a partir do algoritmo julgado com um conjunto de saídas previamente cadastrados. O juiz online utilizado neste trabalho foi o disponível no sistema BOCA. Com o sistema desenvolvido estima-se que com um feedback mais rápido para o aluno o interesse pela matéria não decresça e que facilite para o professor a aplicação de exercícios de fixação. Palavras-chave: Algoritmos. Juiz online. Moodle.

ABSTRACT The paper deals with the integration of a judge to the online Virtual Learning Environment Moodle, aiming to allow issues involving the creation of algorithms are evaluated in an automated manner, generating a faster feedback to the student and facilitating teacher's corrections. For learning algorithms is of fundamental importance to the practice of focusing exercises, stimulating thinking in students. Thus it becomes a difficult task for the teacher to individualize corrections in the exercises for the same, plus the fact that the classes of the first periods of computing present large number of students. But with the popularity and use of virtual learning environments for education institutions to aid and online courses, the opportunity of integrating a judge in the online environment Moodle, adding a process executes, compiles and compares the output generated from the judged algorithm with a set of outputs previously registered. The judge online used in this work was available in the system BOCA. With the system was estimated that with a faster feedback to the student's interest in the subject and not decreases the teacher to facilitate the application of fixation exercises. Keywords: Algorithms. Online Judge. Moodle.

LISTA DE FIGURAS Figura 1. Tela de inserção de código-fonte no ideone.... 27 Figura 2. Tela com os resultados da compilação do código-fonte.... 28 Figura 3. Diagrama de caso de uso das funcionalidades do professor.... 38 Figura 4. Diagrama de Casos de Uso das funcionalidades do aluno.... 41 Figura 5. Adaptação das tabelas do BOCA.... 43 Figura 6.Tabela tempaluno e tempprofessor criadas no BOCA.... 44 Figura 7. Esquema da integração de um juiz online no ambiente moodle.... 46 Figura 8. Tela de escolha do tipo de questão Juiz Online.... 48 Figura 9. Tela de criação da questão.... 49 Figura 10. Tela com o exercício para o aluno... 53 Figura 12. Tela de feedback.... 57

LISTA DE QUADROS Quadro 1. Valores retornados.... 30 Quadro 2. Descrição do método getlanguages.... 30 Quadro 3. Criação da trigger tg_atualiza_boca2.... 50 Quadro 4. Criação da função moodle_gatilho_to_boca().... 51 Quadro 5. Criação da trigger tg_envia_problemtable.... 51 Quadro 6. Criação da função tempprofessor_gatilho_problemtable().... 52 Quadro 7. Criação da trigger tg_atualiza_boca_aluno.... 54 Quadro 8. Criação da função moodle_gatilho_to_boca_aluno().... 55 Quadro 9. Criação da trigger tg_envia_runtable.... 55 Quadro 10. Criação da função tempaluno_gatilho_runtable().... 56 Quadro 11. Criação da trigger tg_atualiza_resposta_aluno.... 58 Quadro 12. Criação da função boca_to_moodle_resposta().... 59

LISTA DE ABREVIATURAS E SIGLAS API BOCA GCC HTTP IDE MOODLE PC2 SBC SOAP SQL TTC UML UNIVALI WSDL XML Application Programming Interface BOCA Online Contest Administrator GNU Compiler Collection Hypertext Transfer Protocol Integrated Development Environment Modular Object-Oriented Dynamic Learning Environment Programming Contest Control System Sociedade Brasileira de Computação Simple Object Access Protocol Structured Query Language Trabalho Técnico-científico de Conclusão de Curso Unified Modeling Language Universidade do Vale do Itajaí Web Services Description Language Extensible Markup Language

SUMÁRIO 1 INTRODUÇÃO... 11 1.1 PROBLEMATIZAÇÃO... 14 1.1.1 Formulação do Problema... 14 1.1.2 Solução Proposta... 14 1.2 OBJETIVOS... 15 1.2.1 Objetivo Geral... 15 1.2.2 Objetivos Específicos... 15 1.3 Metodologia... 15 1.4 Estrutura do trabalho... 16 2 FUNDAMENTAÇÃO TEÓRICA... 17 2.1.1 Algoritmos... 17 2.1.2 Problemas no ensino de algoritmos... 17 2.2 MOODLE... 20 2.2.1 Características do Moodle... 20 2.2.2 Módulo de questionário do Moodle... 22 2.3 Juízes online... 23 2.3.1 PC2(Programming Contest Control System Sistema de Controle de Concurso de Programação)... 23 2.3.2 Mooshak... 24 2.3.3 BOCA online... 25 2.4 Ferramentas de IDE e debugging online... 25 2.4.1 Ideone... 26 2.4.2 Integração de uma IDE e debugging online... 28 2.5 Trabalhos similares... 31 2.5.1 Um mecanismo para correção automática de exercícios práticos de programação introdutória... 31 2.5.2 Adaptação de um corretor automático de código para auxílio da atividade de exercício e prática no ensino de programação... 32 2.5.3 Corretor automático de exercícios programa para auxílio no ensino à distância... 33 2.5.4 Proposta de um laboratório virtual para aprendizagem de Prolog... 33 3 desenvolvimento... 35 3.1 DESCRIÇÃO DO SISTEMA... 35 3.2 Análise de Requisitos... 36 3.2.1 Requisitos Funcionais... 36 3.2.2 Requisitos não Funcionais... 37 3.3 DIAGRAMAS DE CASO DE USO... 38 3.3.1 Caso de Uso do professor... 38 3.3.2 Caso de Uso do aluno... 41 3.4 BANCO DE DADOS... 43

3.5 Integração do juiz online do BOCA... 45 3.6 INTERFACES DO SISTEMA... 47 3.6.1 Telas do professor... 47 3.6.2 Telas do aluno... 52 4 CONCLUSÕES... 60 APÊNDICE A.FUNÇÕES DO DBLINK... 65 APÊNDICE B.FUNÇÕES COMENTADAS DAS CLASSES TESTE.PHP E RENDERER.PHP... 71

11 1 INTRODUÇÃO Por definição, algoritmo é uma sequência de passos bem definida em uma ordem específica transformando uma entrada fornecida em uma saída, ou também pode-se dizer que algoritmo é uma ferramenta para resolver problemas bem especificados (CORMEN, 2002). Contudo, o termo algoritmo não surgiu a partir da computação, podendo ser encontrado em outras áreas, bem como, Administração e Engenharia. Atualmente o termo algoritmo é bastante associado à computação. Já na computação o seu uso está associado à criação de um programa de software (MEDINA, 2005). Segundo Tobar et. al. (2001 apud MOREIRA; FAVERO, 2008), é indispensável para o estudante de computação, dentre outras disciplinas, o estudo de programação que tem como fundamento o ensino de algoritmos. Algoritmos habilita os indivíduos a usarem lógica de programação na resolução de problemas, sendo estes de grande relevância em disciplinas posteriores e mais avançadas. A reprovação é um reflexo da dificuldade do individuo no aprendizado de programação, sendo que o mau desempenho não se limita apenas nessa disciplina, mas sim em todas as disciplinas que tomam por base a programação. Segundo Prior (2003 apud MOREIRA; FAVERO, 2008,pg.1): A habilidade de programação de computadores não pode ser adquirida sem um significante esforço em atividades práticas de laboratório. Neste contexto, muitas ferramentas foram propostas para auxiliar o educador no ensino de programação na prática. Algoritmos é uma disciplina fundamental para o ensino de programação, e se faz presente em outros cursos, como os de engenharia. O uso de algoritmos pode ser constatado em outras modalidades como a maratona de programação, exigindo dos alunos algumas aptidões tais como princípios de lógica e a resolução de problemas através da interpretação dos algoritmos descritos. Essa interpretação da solução aparece como um dos principais fatores para a desmotivação na disciplina, culminando assim em altos índices de reprovação e evasão por parte dos alunos, principalmente no curso de computação (RAPKIEWICZ, 2006). A maratona é um evento promovido e organizado em parceria com demais entidades, mas de forma preponderante pela Fundação Carlos Chagas, destinada aos alunos de graduação e de pós-graduação na área de Computação e Tecnologia (FERREIRA, 2012).

12 Os fins almejados pela maratona são estimular em seus participantes a capacidade de trabalhos em equipe, criatividade e habilidade de resolução de problemas em um ambiente sob pressão. Os problemas apresentados envolvem a resolução de algoritmos de uma forma mais eficaz e no menor tempo possível. Na competição um dos critérios de escolha do vencedor é o tempo em que as respostas são enviadas, fazendo-se uso de um juiz online (FERREIRA, 2012). Partindo disso o Juiz online faz o papel de um avaliador de algoritmos. Uma vez submetido o problema ele analisará um conjunto de dados de entrada e saída, comparando com as respostas esperadas. Logo em seguida, as aprovações são feitas pelo menor tempo possível atestando se a resposta encontrada está certa ou errada. Caso esteja errada o participante poderá repara-la, e enviar novamente (CAMPOS, 2004). A utilização do juiz online não se limita apenas em competições, mas também em ambientes de ensino virtuais como o Moodle (Modular Object-Oriented Dynamic Learning Environment - Ambiente de Aprendizagem Dinâmico Modular Orientado a Objetos). Muitas instituições de ensino que procuram modernizar seu sistema e facilitar o acesso ao conhecimento estão optando pelo uso do ambiente Moodle, que surge usando o conceito construcionista social de educação. São pacotes de software tendo utilidade para profissionais da educação e programadores, abordando o ensino on-line, em produções de cursos e sites na internet (MOODLE, 2012a). Por se tratar de um software Open Source oferece permissões de cópia, modificação e uso, contanto que seja mantida a licença original, os direitos autorais e o fornecimento do código-fonte aos demais usuários (MOODLE, 2012a). Conforme supracitado o ambiente acadêmico está cada vez mais dinâmico, sendo que este trabalho visou à criação de um tipo de questão para o módulo de questionário no Moodle, com a finalidade de professores criarem problemas para seus alunos que envolvam a resolução de algoritmos. No envio da resolução, por parte do aluno, um juiz online compila o código com um conjunto de casos de testes, sendo que cada caso de teste contém as entradas esperadas pelo programa que são cadastrados pelo professor, e compara com um conjunto de saída padrão, também cadastrado pelo mesmo. Estando o conjunto de saída padrão idêntico ao conjunto de saída gerado pelo algoritmo do aluno a resolução é considerada correta. Isso permite que haja um feedback imediato sobre a solução enviada pelos estudantes.

13 Assim com uma resposta imediata o aluno irá manter o interesse na matéria lecionada e com isso o rendimento será maior. O trabalho então busca utilizar os princípios e mecanismo utilizados na maratona de programação para motivar os alunos no aprendizado de algoritmos. Para a integração do juiz online, no ambiente Moodle foi criado um tipo de questão no módulo de questionário do mesmo. Esse questionário especifico, com campos para os dados de entrada dos problemas que serão cadastrados pelo professor foi feito em PHP. Já na parte de banco foram criados 5 gatilhos (triggers) que servem para transferência de informações. O cadastro de questões se da através do ambiente Moodle, onde cadastrada uma questão pelo professor, a mesma é armazenada em seu banco de dados. Já com a questão cadastrada no banco de dados do ambiente Moodle, um gatilho ao perceber uma mudança ou atualização em seus registros, é acionado levando as informações dos problemas para o banco de dados do sistema BOCA. Onde foi criada uma tabela temporária, que serve como ponte para a tabela de cadastro do problemas. O segundo gatilho é acionado quando essa tabela temporária recebe os dados, adicionando os mesmos na tabela de cadastro do problemas no sistema BOCA. Portanto a medida que o aluno, estiver respondendo um problema de algoritmos no ambiente Moodle, ao envia-lo, os seus dados serão armazenados no Moodle e o gatilho se encarregará de enviar essas informações para o banco de dados do sistema BOCA, onde outra tabela temporária foi criada. A tabela temporária do aluno ao receber os dados aciona outro gatilho que irá guardar os dados na tabela referente a solução dos problemas para ser julgado. Com isso o ultimo gatilho será acionado quando um processo do BOCA chamado autojuding fizer a sua função, que é verificar de minuto em minuto se há nas tabelas do BOCA algo para ser julgado. Havendo algum algoritmo para ser julgado, o mesmo irá julgar. O funcionamento para julgar um algoritmo inicia a partir da compilação do algoritmo criado pelo aluno, e com o conjunto de casos de testes, sendo que cada caso de teste contém as entradas esperadas pelo programa criados pelo professor junto ao problema, e que gera uma saída. Essa saída é comparada com o conjunto de saídas padrão, cadastrado junto com o

14 problema pelo professor, gerando um possível acerto ou erro. Esse possível acerto ou erro é enviado para o banco de dados do Moodle e com isso gerando o feedback imediato ao aluno. 1.1 PROBLEMATIZAÇÃO 1.1.1 Formulação do Problema Com um grande número de alunos em disciplinas de algoritmos e programação a falta de individualização para a correção de trabalhos e exercícios propostos pelo professor são fatores para o crescimento de desistência na matéria. Os primeiros períodos do curso de Ciência da Computação são de suma importância para o desenvolvimento restante do curso, pois é onde a noção de logica é construída com linguagens de programação desde C, C++ e posteriormente JAVA. Com isso os alunos das disciplinas iniciais do curso acabam se frustrando à medida que criam algoritmos, pois sem saberem ao menos se o que estão construindo atende o esperado deixam de lado exercícios que são essenciais para o aprendizado de algoritmos e consequentemente desistem da matéria e do curso. 1.1.2 Solução Proposta A integração de um juiz online no ambiente virtual Moodle, possibilitando assim a pratica de exercícios de algoritmos. O juiz gera um feedback imediato baseado na comparação da saída gerada pelo juiz com a saída padrão que o professor irá cadastrar. O aluno ao praticar os exercícios recebe um feedback imediato, de um possível acerto ou erro.

15 1.2 OBJETIVOS 1.2.1 Objetivo Geral Adicionar no ambiente virtual Moodle o recurso de juiz online de algoritmos de programação. 1.2.2 Objetivos Específicos Pesquisar trabalhos similares; Pesquisar as ferramentas a serem utilizadas: o Pesquisar diferentes juízes online; e o Pesquisar ferramentas de IDE e debugging online. Pesquisar os conceitos necessários à implementação do sistema. Compreender a estrutura do ambiente Moodle para a integração do juiz online; Modelar a ferramenta para as funcionalidades de aluno e professor; Desenvolver as funcionalidades modeladas; Documentar. 1.3 Metodologia A metodologia utilizada para se alcançar os objetivos do trabalho proposto envolveu pesquisa sobre trabalhos similares que tivessem integração com o ambiente Moodle ou que fossem Web, mas que tivessem exercícios com correções de forma online. Assim foram encontrados os três principais: Adaptação de um avaliador automático de código para auxílio da atividade de exercício e prática no ensino de programação (SOUZA, 2009), Avaliador automático de exercícios programa para auxílio no ensino à distância (CUNHA et. al., 2006), Proposta de um laboratório virtual para aprendizagem de Prolog (SANTOS NETO, 2007) e Um mecanismo para correção automática de exercícios práticos de programação introdutória (PELZ, 2012). Para encontrar ferramentas que possibilitassem o feedback imediato foram analisados diversos juízes online que fizessem a comparação entre a saída padrão do professor com a saída gerada pelo mesmo. Alguns encontrados são: BOCA online Campos (2004), PC2 (Programming Contest Control System Sistema de Controle de Concurso de Programação) PC2 (2012a) e Mooshak (2012). Porém foi estabelecido um critério para a escolha: o sistema

16 deveria ser Open Source, tornando assim inviável a utilização do PC2 (não tem o seu código aberto), restando apenas o Mooshak e o BOCA online como opção. Com pouca documentação existente do Mooshak, tornou-se viável e única a utilização do BOCA online Algumas ferramentas de IDE e debugging online foram pesquisadas. Muitas encontradas não se enquadraram no requisito mínimo estipulado, que seria a execução dos programas de forma online e que linguagens como C, C++ e Java, fizessem parte das linguagens do programa. Dentre alguns IDE s pesquisadas estão: Coderun (CODERUN, 2012), Codepad (CODEPAD, 2012), Online Compiler (ONLINE COMPILER, 2012), Compilr (COMPILR, 2012) e Ideone (IDEONE, 2012d). Porém a única que se enquadrou foi a Ideone por executar de forma online os programas e ter C, C++ e Java como linguagens em sua lista, além de ser de código-aberto e fácil integração a outros sistemas. Durante a pesquisa alguns conceitos foram encontrados bem como: Algoritmos (SOUZA, 2005), e Problemas no ensino de algoritmos (RODRIGUES JUNIOR,2008; RAPKIEWICZ,2006; SIEBRA,2009), que de forma positiva mostrou a importância de exercícios de algoritmos em sala de aula para o aprendizado e também a falta de um feedback nesses exercícios sendo como um dos fatores desmotivacional. 1.4 Estrutura do trabalho Este documento está estruturado em quatro capítulos. O Capítulo 1, Introdução, apresentou uma visão geral do trabalho. No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão bibliográfica sobre trabalhos similares, o que é algoritmos, problemas no ensino de algoritmos, assim como uma análise a respeito do ambiente moodle e sua estrutura, juizes online e ferramentas de IDEs e debugging online. O Capítulo 3 apresenta o projeto detalhado do sistema desenvolvido, incluindo sua especificação e a sua modelagem em UML. O capítulo também discute como foi implementado o sistema proposto, apresentando a metodologia utilizada no desenvolvimento. Concluindo, no Capítulo 4, apresentam-se as conclusões, onde são abordados os resultados, mudanças de algumas estratégias de desenvolvimento do projeto, alterações de cronograma, dentre outros.

17 2 FUNDAMENTAÇÃO TEÓRICA Este capítulo trata dos seguintes temas: Algoritmos, Problemas no Ensino de Algoritmos, Ambiente Moodle, Juízes Online, Ferramentas de IDE e Debugging Online, Trabalhos Similares. Para o desenvolvimento do sistema proposto foi estudada a estrutura do ambiente Moodle, a fim de adaptá-lo de forma a atender os requisitos necessários para o desenvolvimento do trabalho proposto, e que também seja de fácil uso para os usuários. O funcionamento do juiz online também foi estudado, pois o sistema depende principalmente da sua integração com o ambiente Moodle, para que haja um feedback imediato dos problemas resolvidos. Os trabalhos similares foram analisados para que possíveis sistemas já criados pudessem contribuir de alguma forma no desenvolvimento e podendo assim reutilizar o que já se foi criado em seu desenvolvimento. 2.1.1 Algoritmos Uma definição formal de algoritmos é um conjunto de instruções ou passos bem definidos para a solução de um problema (SOUZA, 2005). É necessária a extração, no problema, de informações fundamentais na construção de um algoritmo, sendo nessa etapa a modelagem do algoritmo, resultante de uma abstração mental. Após abstrair uma possível solução do problema, resultando assim em como resolver o problema, deve-se descrever em passos bem definidos o processo para se chegar à solução. Mas somente os passos não resolvem o problema, é necessário que seja montada uma sequencia logica para a execução do problema, tornando assim de fato a solução completa (SOUZA, 2005). 2.1.2 Problemas no ensino de algoritmos Para o desenvolvimento de programas de computador os principais fundamentos são obtidos em disciplinas como algoritmos e programação, que tem por finalidade habilitar alunos no desenvolvimento e estruturação de algoritmos. Em sua tradicional apresentação do conteúdo da disciplina para os alunos todas as áreas do conhecimento são abordadas como a

18 teoria, apresentação de exemplos e proposição de exercícios práticos que inicialmente são simples e gradativamente, conforme o adiantamento do conteúdo, aumentam sua complexidade (RODRIGUES JUNIOR, 2004). Com um índice elevado de reprovação e desistência em instituições de ensino no Brasil, a disciplina de algoritmos tem sido foco dos professores, preocupados com a melhoria no processo de ensino e a qualidade oferecida para os alunos, mostrando assim necessidade de algumas alterações tanto na parte didática como na metodológica da apresentação (RODRIGUES JUNIOR, 2004). A falta de interesse pela disciplina por parte do aluno deve-se ao fato dos métodos tradicionais de ensino utilizados por professores não promoverem o interesse no aluno. Nos primeiros períodos do curso, principalmente para alunos que não atuam de forma profissional na área da informática, acaba não ficando clara a importância de certos conceitos e conteúdos para sua formação acadêmica, conteúdos esses que acreditam não serem muito uteis na pratica. Assim o desafio não fica a cargo só da necessidade de motivação, mas também de mostrar que a disciplina e seu conteúdo são importantes e merecem cuidados e afeição especial (RODRIGUES JUNIOR, 2004). Outro problema encontrado ainda relacionado à motivação é a do aluno julgar o grau de dificuldade da disciplina, esperando por um obstáculo difícil de ser vencido ou um problema. Às vezes muitos professores reforçam essa ideia, prometendo realizar avaliações complicadas e fazendo com que a avaliação perca o seu papel, que é o de avaliar (RODRIGUES JUNIOR,2004). O segundo problema encontrado no método tradicional de ensino na disciplina é o de avaliar. As avaliações acabam sendo uma ação isolada, especial, com data marcada, sendo o seu objetivo único de aprovação. Isto desenvolve no aluno um receio, prejudicando assim seu aprendizado na disciplina (RODRIGUES JUNIOR, 2004). O problema visto por Rapkiewicz (2006), por parte do aluno, é com relação a verificação se o algoritmo que foi construído realmente funciona como esperado. Testes de mesa costumam ser empregados nessa etapa da disciplina para a verificação se o algoritmo desenvolvido pelo mesmo é eficaz. Um passo a passo deve ser executado pelo aluno para verificar a funcionalidade de sua solução. Isso além de desmotivar o aluno traz um novo problema, que seria o ato de seguir o passo a passo. Algumas habilidades são destacadas no processo de desenvolvimento de algoritmos, tais como, resolver problemas e mostrar o passo a passo na resolução dos mesmos. Para o desenvolvimento de algoritmos são necessários em suas atividades habilidades como

19 raciocínio, compreensão e de representação. Muitos alunos na criação de algoritmos para a resolução de problemas não conseguem desenvolvê-lo, sendo problemas que são considerados fáceis do ponto de vista das estruturas lógicas envolvidas. Essas observações dão indícios da dificuldade dos alunos com a resolução de problemas bem como o entendimento do problema e o passo a passo para resolvê-lo (SIEBRA,2009). Algumas dificuldades são da natureza da disciplina de algoritmos, não sendo do aluno ou professor. De acordo com SIEBRA (2009) algumas destas dificuldades são: O grande numero de alunos; Dificuldade do professor compreender a logica do aluno; Turmas heterogêneas; Motivar os alunos. Por se tratar de uma disciplina oferecida nos primeiros períodos do curso de computação é formada por alunos recém saídos do segundo grau, alunos repetentes ou transferidos de outras instituições. Desta forma há um grande numero de alunos matriculados, dificultando a individualização de sua avaliação e o numero de avaliações propostos pelo professor. Por falta de tempo hábil em um semestre para a aplicação de diversos trabalhos valendo nota o professor se reserva ao direito de não aplica-los, por não conseguir corrigir em pouco tempo tudo (SIEBRA,2009). A dificuldade do professor em compreender a lógica do aluno deve-se ao fato de ser difícil mudar um raciocínio logico depois de construído, e tentar construir outra forma de resolução de problemas. Isso acarreta em uma difícil tarefa para o professor de compreender a lógica especifica de cada aluno que muitas vezes acabam não sendo bem sucedidos na construção de soluções de algoritmos. Isto atrapalha o desenvolvimento do professor em provas, tendo que elaborar provas com mais atenção e requerendo mais tempo nas correções das soluções de algoritmos (SIEBRA, 2009). Para gerir a forma de ensinar, agradando ou até mesmo tornando mais atrativa para os diferentes grupos, o professor encontra um grande desafio. Por serem turmas heterogêneas, existem diferentes níveis de conhecimento entre os alunos e ritmo de aprendizagem. Alguns possuem um contato prévio antes de ingressar no curso ou até mesmo trabalham na área, enquanto muitos nunca tiveram contato com algoritmos e programação. Mesmo alunos com níveis equivalentes mostram diferentes maneiras de raciocínio sendo estritamente pessoal e

20 único, diferenciando cada individuo dos demais. Essa forma única e pessoal de pensar e raciocinar gera diferentes soluções de um mesmo problema (SIEBRA, 2009). Em muitas dificuldades encontradas a motivação dos alunos fica a cargo do professor, fazendo com que o interesse pela matéria não se vá, não acarretando em desistência da disciplina. Muitos meios podem ser usados para que o professor consiga deixar o aluno interessado na matéria, como instigar o aluno para que busque outras formas de soluções de problemas ou técnicas novas. É importante que o professor deixe explícita a importância da matéria e o seu uso em futuras matérias ou até mesmo na vida profissional (SIEBRA, 2009). Com o sistema desenvolvido acredita-se que se o aluno tiver um feedback imediato em exercícios práticos seu interesse irá crescer, o que pode influenciar de forma positiva na disciplina. 2.2 MOODLE O Moodle é um projeto que foi desenvolvido e ainda liderado por Martin Dougiamas, software Open Source que é fornecido gratuitamente, sendo que seu uso se limita a copia, modificação e uso desde que a sua modificação (código-fonte) seja compartilhada com a comunidade Moodle. É um software visando à produção de cursos para a internet, com sua filosofia construcionista social de educação. Sua utilidade acaba sendo principalmente para profissionais da educação e programadores. (MOODLE, 2012a). A sua instalação pode ser feita em qualquer computador/servidor que faça a execução da linguagem PHP e que comporte base de dados do tipo SQL (MOODLE, 2012a). O sistema é focado em segurança o tempo todo, sendo que os seus formulários são todos checados, os dados validados e os cookies codificados. É um sistema adequado para aulas online, complementando a aprendizagem presencial (MOODLE, 2012b). 2.2.1 Características do Moodle De uma forma geral o ambiente Moodle é constituído de uma arquitetura modular, um sistema simples, possibilitando sua instalação em qualquer plataforma que suporte o PHP. Os cursos podem ser categorizados e pesquisados, tendo seu foco em total segurança (MOODLE,2012b). Segundo Moodle (2012b) as principais características do Moodle são:

21 Administração do site: o site tem como administrador um usuário que é definido em sua instalação. Algumas extensões ou plugins dão ao administrador a autonomia para a modificação no tema (fonte e aparência) podendo também adicionar módulos com atividades e pacotes de idioma que permite a total compatibilidade com qualquer idioma; Administração dos usuários: a administração dos usuários tem por objetivo minimizar o envolvimento por parte do administrador, mas mantendo a segurança. Algumas extensões existem para auxiliar no mecanismo de autenticação, com módulos de autenticação. Para a autenticação os alunos criam suas contas de acesso, havendo uma verificação dos e-mails para confirmação. A conta é única para todo o servidor, sendo que cada conta pode ter diferentes tipos de acessos.para a criação de curso e de professores é necessário uma conta de administrador que faz esse controle. Já a conta de um criador de cursos somente permite criar cursos e dar aula em cada curso. Os usuários também tem a opção de selecionar um idioma desejado na interface do ambiente Moodle; Administração de curso: a administração do curso tem a possibilidade da existência de um professor pleno, tendo total controle sobre um curso e podendo até restringir outros professores. Alguns formatos do curso existentes são semanal e por tópico. Ainda na administração do curso existe a atividade, sendo sua composição, fóruns, jornais, questionários, recursos, pesquisas de opinião, pesquisas, tarefas e chats. Os professores podem personalizar escalas para serem usadas na hora de dar a nota para tarefas e fóruns; Módulo Tarefa: neste módulo as tarefas podem conter datas para o seu cumprimento e uma nota máxima. Os alunos também podem enviar suas tarefas, sendo que tarefas atrasadas podem ser permitidas, porém o tempo de atraso será mostrado para o professor. As tarefas podem conter uma avaliação da classe; Módulo Chat: neste módulo existe uma interação via texto, também aceitando o envio de imagens. As sessões são todas documentas para possível visualização posterior; Módulo Pesquisa de Opinião: este módulo basicamente serve para uma votação ou até mesmo para a obtenção de um feedback de cada aluno. O professor tem acesso e visualização de quem escolheu o que;

22 Módulo Fórum: existem diferentes tipos de fóruns como fórum para professores, news e fórum para uso geral. As discussões podem ser vistas começando pelas mais recentes ou pelas mais antigas; Módulo Questionário: podem ser escolhidos diferentes tipos de questões, além de permitir mostrar um feedback com as respostas corretas. Como esse módulo é de grande importância para o sistema desenvolvido será detalhado mais adiante; Módulo Recursos: neste módulo existe um suporte para qualquer conteúdo eletrônico como Word, Powerpoint, Flash, Vídeo e Sons. Existe a possibilidade de envio de arquivos que são administrados no servidor, para os conteúdos que são externos, por exemplo, da internet eles podem ser interligados ou incluídos na interface do curso; Módulo Pesquisa de Avaliação: o módulo pesquisa de avaliação é utilizado como análise das classes nos cursos online. Os seus dados podem ser baixados no formato de uma planilha Excel ou até mesmo arquivos de texto; e Módulo Laboratório de Avaliação: já o módulo laboratório de avaliação permite que parceiros façam avaliações de documentos, sendo administrado pelo professor que pode dar notas na avaliação feita pelos alunos. Diversos critérios de avaliação são suportados, havendo também a possibilidade de documentos de exemplo fornecidos pelo professor, que irão servir para os alunos praticarem a avaliação. 2.2.2 Módulo de questionário do Moodle Dentre alguns módulos existentes na estrutura do ambiente virtual Moodle foi abordado nesse trabalho o módulo questionário, mostrando sua estrutura e possibilitando a integração de um juiz online e uma IDE e debugging online. O módulo de questionário permite ao professor criar questões que serão armazenadas em uma base de dados, para poderem ser utilizadas posteriormente, tanto na disciplina para a qual ele criou bem como podendo ser reutilizada em outros questionários ou até mesmo disciplinas. Os questionários são avaliados de forma automática, havendo também a possibilidade do professor definir um prazo limitado de disponibilidade do questionário. Quando exceder o prazo o questionário se torna indisponível, ficando a critério do professor se os questionários podem ser respondidos várias vezes, e ainda podem mostrar o feedback e/

23 ou as respostas. Alguns tipos de questão são padrão dos questionários, segundo (MOODLE,2012b): Questionários de múltipla escolha com resposta única ou respostas múltiplas; Questões de Resposta Breve (palavras ou frases); Questões Verdadeiro-Falso; Questões de associação; Questões aleatórias; Questões numéricas (com escalas permissíveis); Questões com resposta embutida (estilo fechado) com respostas dentro de passagens do texto; Texto e gráficos descritivos embutidos. 2.3 Juízes online Foram pesquisados diferentes juízes online a fim de proporcionar a realização do projeto proposto. Dentre os pesquisados houve uma seleção, eliminando de antemão alguns juízes que não fossem Open Source, como o PC2que não atendeu a esse requisito. Para a escolha do juiz online levou-se em consideração, além do sistema ser Open Source, que sua documentação fosse disponível e de fácil acesso. E o que mais se enquadrou foi o BOCA. 2.3.1 PC2(Programming Contest Control System Sistema de Controle de Concurso de Programação) Sistema projetado com o intuito de dar suporte na operação do concurso de programação, podendo ser utilizado em uma variedade de ambientes de computação. Permite que os competidores (equipes) submetam programas através de uma rede para os juízes da competição, que irão recompilar o programa submetido, executá-lo, ver o código fonte e/ou resultado de execução, e enviar uma resposta de volta à equipe. O sistema também tem um juiz automático, modo em que o software é quem realiza o julgamento, em vez de juízes humanos (PC2, 2012b).

24 O sistema registra automaticamente o momento da submissão do algoritmo enviado e o armazena, exibindo a classificação atual do concurso de vários modos, e permite que o juiz recupere e execute novamente algoritmos arquivados. Permite também interação com os juízes referentes a duvidas e esclarecimentos. O PC2 suporta manter competições simultâneas em vários sites por transmissões de informações automáticas do concurso entre locais, gerando assim um grande concurso e mostrando em cada local remoto o placar (PC2, 2012b). Uma grande variedade de opções configuráveis permite ao administrador da competição ajustar o sistema para as operações especificas da competição, como número de equipes, problemas, linguagens de programação no concurso e o método de pontuação a ser aplicado (PC2, 2012b). O PC2 é um sistema construído em Java, projetado e distribuído para gerenciar e controlar concursos de programação em tempo real. Suporta múltiplos sites de concursos, sendo uma plataforma de operações heterogênea, incluindo uma mistura de Windows e Unix em um mesmo concurso, atualizações dinâmicas em tempo real do estado do concurso e a classificação para todos os sites (PC2, 2012c). O sistema opera através de uma arquitetura cliente-servidor, onde cada site em um concurso é executado um único servidor PC2 (PC2, 2012c). Contudo o sistema PC2 não é um projeto Open Source, assim não existe uma forma de obter o seu código-fonte para modifica-lo ou fazer uso em outro sistema (PC2, 2012d) 2.3.2 Mooshak Mooshak é um sistema de gestão de competição de programação na Web. Algumas características básicas sobre o Mooshak incluem um juiz automático de algoritmos apresentados, respostas as perguntas de esclarecimento sobre descrições de problemas, reavaliação de programas e acompanhamento de impressões (MOOSHAK, 2012). Mooshak suporta diferentes tipos de competição, em especial aquelas com base em regras ICPC. Também pode ser facilmente estendido para novos tipos de concursos (MOOSHAK, 2012). O sistema foi inicialmente concebido para concursos, mas está cada vez mais sendo usado em cursos de programação por dar feedback instantâneo sobre aulas práticas, por receber e validar tarefas a submissões e por pré-avaliar e marcar tarefas (MOOSHAK, 2012).

25 2.3.3 BOCA online Software feito em PHP que tem interação com as equipes via navegador, foi desenvolvido com o objetivo de controlar competições no modelo da Maratona de Programação da SBC. (CAMPOS, 2011). O sistema BOCA conta com um juiz online que ajuda no processo de julgar uma submissão, fornecendo um script PHP. Uma vez submetido o problema pelas equipes o script é capaz de executar comandos de compilar, executar e comparar a saída gerada pelos times com a saída correta. Não é essencial para o sistema o processo de julgar de forma automatizada, já que os juízes podem baixar do sistema BOCA todos os arquivos para avaliar uma submissão (CAMPOS, 2011). Mesmo com o juiz que corrige de forma automática, a idéia do sistema não consiste em automatizar o sistema de avaliação as submissões, mas sim um apoio para os juízes fazerem o seu trabalho. Sendo assim o juiz automático fornece ao juiz os dados gerados pelos scripts ao tentar compilar, executar e comparar os resultados. Apresentados de uma forma formatada durante o julgamento, os dados podem auxiliar na hora do juiz julgar a avaliação submetida (CAMPOS, 2011). 2.4 Ferramentas de IDE e debugging online O objetivo deste capítulo é apresentar algumas ferramentas de IDEs existentes priorizando as que abordam pelo menos linguagens como C, C++ e Java, e que mostrem a execução dos programas de forma online. Foram pesquisadas 6 ferramentas de IDEs, são elas: Coderun (CODERUN, 2012); Codepad (CODEPAD,2012); Py I/O (PY I/O, 2012); Online Compiler (ONLINE COMPILER, 2012); Compilr (COMPILR, 2012); e

26 Ideone (IDEONE, 2012a). As ferramentas Coderun, Codepad e Py I/O foram desclassificadas por não se enquadrarem nos requisitos mínimos estipulados da linguagem de programação suportada pelo sistema. Mesmo qualificadas no requisito mínimo de linguagem de programação suportada pelo sistema a ferramenta Online Compiler acabou sendo descartada por não permitir a execução dos programas de forma online. Já a ferramenta Compilr atendia aos dois requisitos preestabelecidos, mas a sua integração com o ambiente virtual Moodle não seria possível. Dessa forma a ferramenta Ideone acabou sendo a escolhida por atender aos requisitos mínimos solicitados e será analisada a fim de entende-la para melhor aplica-la ao projeto proposto 2.4.1 Ideone Projetado para programadores, o Ideone é uma mini IDE e ferramenta de depuração online. Permite compilar e executar o código online em mais de 40 linguagens de programação dentre elas C, C++ e Java. O usuário seleciona a linguagem de programação desejada, digita o seu código fonte e entrada dos dados na caixa de texto especifica, escolhe se quer executar o código e escolhe sintaxe highlight.(ideone, 2012a). Por ser uma ferramenta destinada a usuários domésticos, instituições educacionais e pequenas empresas, facilita o seu uso nesse projeto, estando disponível em seu site a Ideone API com um webservice e seu WSDL (IDEONE, 2012b). O sistema disponibiliza para seus usuários gratuitos 1000(mil) submissões por mês. Ultrapassando essas submissões gratuitas o usuário ainda tem a possibilidade de comprar mais um conjunto de submissões, com preços variados (IDEONE, 2012c): 1.000 submissões por 10 dólares que prorroga a validade de todas as suas submissões pagas até 60 dias a partir da data da compra. 10.000 submissões para 50 dólares que prorroga a validade de todas as suas submissões pagas até 120 dias a partir da data da compra.

27 30.000 submissões para 140 dólares que prolongam a validade de todas as suas submissões pagas até 180 dias a partir da data da compra. 100.000 submissões para 450 dólares prorroga a validade de todas as suas submissões pagas até 365 dias a partir da data da compra. A Figura 1 mostra a esquerda uma lista de possíveis linguagens a ser escolhida, já no centro existe uma caixa de texto para a inserção do código-fonte, abaixo uma caixa para a entrada de dados, um campo para habilitar ou desabilitar sintaxe highlight aparece no canto direito. Figura 1. Tela de inserção de código-fonte no ideone. Fonte: Ideone (2012a). A Figura 2 mostra a ferramenta Ideone recebendo valores de entrada, e após a execução do código-fonte gera uma saída, que é apresentada conforme o algoritmo criado

28 Figura 2. Tela com os resultados da compilação do código-fonte. Fonte: Ideone (2012a). 2.4.2 Integração de uma IDE e debugging online Como o ambiente Moodle é online e o sistema desenvolvido utiliza o mesmo, é interessante a integração de uma IDE e debugging online pois assim o aluno a medida que cria as suas soluções pode testa-las para poder enviar novamente. Alguns métodos que podem ser usados, bem como a interpretação dos dados retornados por eles serão mostrados para melhor entendimento de sua API (IDEONE, 2012d): O WebService; Métodos; Variáveis, valores, códigos e constantes. Informações gerais do webservice, o Ideone.com é um serviço web padrão sendo acessado via o protocolo SOAP. SOAP (Simple Object Access Protocol Protocolo de Acesso Objeto Simples) é um protocolo que fornece uma comunicação entre aplicações rodando em diferentes sistemas operacionais, com diferentes tecnologias e linguagens de programação. Essa comunicação é feita através de HTTP, sendo o mesmo suportado por todos os navegadores de internet e servidores (SOAP,2012). As funcionalidades do webservice permitem (IDEONE, 2012d):

29 fazer upload de código-fonte onde o mesmo pode ser compartilhado na Internet; execução do código-fonte no servidor com dados de entrada, podendo escolher entre mais de 40 linguagens de programação; permite fazer o download dos resultados da execução como saída, erro padrão, informação de compilação, tempo de execução e uso de memória. Para fazer o uso do webservice o algoritmo cria uma pasta e executa no servidor, sendo um processo bem simples como visto a seguir (Ideone, 2012d). Primeiro utilizando o método getlanguages para recuperar uma lista de linguagens de programação disponíveis; Após o primeiro estagio com o método createsubmission cria-se uma pasta; Na verificação se o Ideone terminou a execução do programa usa-se o método getsubmissionstatus. Caso o programa tenha terminado, vá para o próximo passo. Caso o programa não estiver terminado repetir o processo após esperar 35 segundos; O uso do método getsubmissiondetails para recuperar informações detalhadas sobre a execução do programa; Ir para o passo 2 caso não queira fazer nada ou queira executar outro programa. Alguns métodos bem como getsubmissionstatus e getsubmissionsdetails não são obrigados a sua chamada. Se apenas a tarefa for colocar código-fonte no ideone, então apenas o método createsubmission será chamado (IDEONE,2012d). Em cada método existem parâmetros comuns, sendo que cada função apresenta pelo menos dois parâmetros. Desta forma os parâmetros que são encontrados são usuários e senha (IDEONE,2012d).

30 Para valores retornados os métodos retornam um conjunto especifico de pares, formando uma matriz associativa onde encontra-se as chaves como strings e os valores sendo de vários tipos, tais como visto no Quadro 1 (IDEONE,2012d). Chave Tipo de Valor Valor de amostra error string OK/AUTH_ERROR/... chave2 algumtipo algumvalor......... Quadro 1. Valores retornados. Fonte: adaptado de Ideone (2012d). O par [error,errorcode] está sempre incluso na matriz retornada. Se o erro!= OK, significa que algo deu errado e que alguns pares que seriam retornados pelo método pode não aparecer na matriz. As variáveis status e resultado que são retornadas dos métodos getsubmissionstatus e getsubmissiondetails merecem uma melhor explicação. A execução do programa é especificada pelo Status, seus valores são interpretados conforme o Quadro 2 Valor Significado <0 Espera de compilação a pasta aguarda execução na fila. 0 Feito o programa termina. 1 Compilação o programa está sendo compilado 3 Em execução o programa está sendo executado. Quadro 2. Descrição do método getlanguages. Fonte: adaptado de Ideone (2012d). Ao usar o método getsubmissionstatus e o status não ser igual a 0 deve-se esperar de 3 a 5 segundos para chamar o método novamente.

31 2.5 Trabalhos similares Muitos trabalhos sobre esse assunto estão surgindo devido ao dinamismo que ambientes virtuais de aprendizagem podem proporcionar, bem como a utilização de recursos para esses ambientes como, por exemplo, exercícios de fixação propostos. Ainda existem formas de integralizar outras funções, sendo assim o objetivo deste capítulo é apresentar algumas ferramentas existentes que abordam juízes online no ambiente virtual Moodle, e/ou que abordam a pratica de exercícios de programação em outro ambiente virtual de aprendizagem, assim comparando-as, mas dando ênfase no sistema desenvolvido neste TTC. 2.5.1 Um mecanismo para correção automática de exercícios práticos de programação introdutória O projeto propõe a correção automatizada de exercícios práticos dando ênfase no feedback ao aluno, permitindo ao mesmo verificar se os resultados são os desejados em cada atividade. (PELZ, 2012). O mecanismo de correção automática de exercícios práticos de programação introdutória tem quatro etapas, verificação sintática do algoritmo construído pelo aluno, verificação da presença de comandos obrigatórios, verificação de similaridade entre a estrutura do aluno com a proposta pelo professor sendo a ultima o gabarito e por último a execução do programa a fim de verificar se a saída gerada corresponde a saída esperada/padrão (PELZ, 2012). Portanto o sistema faz a verificação sintática do algoritmo para avaliar se a sua execução ocorre sem erros. Faz a verificação da presença de comandos obrigatórios, assim quando dado um exercício que necessite de desvios condicionais ele deve conter obrigatoriamente esses desvios. Também faz a verificação de similaridade entre a estrutura do programa do aluno com o proposto pelo professor, sendo que a estrutura criada pelo professor será previamente definida pelo mesmo, portanto para tal feito a serialização da estrutura do programa do aluno tem que ser feita, para que a comparação seja feita de uma forma mais simplificada. E por fim faz a verificação das saídas sendo que os valores são estipulados pelo professor nas variáveis do programa, sendo assim o código do aluno é

32 executado gerando uma saída a partir de entradas de teste. Essa saída é comparada com a saída padrão definida pelo professor (PELZ, 2012). O sistema foi utilizado por três turmas sendo que alguns exercícios foram propostos, notando-se que em alguns casos os alunos construíam seus programas no processo de tentativa e erro aproveitando o feedback do corretor automático para complementarem a estrutura do seu programa. Mas de forma geral os experimentos realizados foram positivos (PELZ, 2012). O projeto descreve a forma de correção. Não apresentando facilidade para criação de questões, sendo assim o professor necessita criar um XML manualmente. Além disso dá ênfase ao feedback em atividades realizadas pelos alunos. Com isso o projeto ajudou a dar uma visão na escolha de um ambiente virtual como o Moodle que abstrai do professor a parte de código para a criação dos problemas, sendo que os problemas podem ser criados com alguns passos e de forma visual. Além disso norteou sobre o feedback das atividades para os alunos. 2.5.2 Adaptação de um corretor automático de código para auxílio da atividade de exercício e prática no ensino de programação Esse projeto propõe a adaptação do corretor BOCA para um corretor automático chamado BOCA-LAB, fazendo uso de partes da programação já existentes no BOCA. Diferente de outros corretores automáticos de código, o BOCA-LAB não utiliza um juiz na confirmação das correções, deixando a cargo do sistema essa tarefa, sendo realizada de forma automática (SOUZA, 2009). Nesse sistema o professor pode inserir problemas, cadastrar dicas e ter um controle do usuário. Já o aluno tem a opção de submeter seu código para a análise aguardando o resultado de sua correção (SOUZA, 2009). O sistema recebe a submissão de um problema por um aluno, analisa o código, compila e testa. A entrada padrão gerada pelo professor deve estar contida na entrada do programa compilado, a saída do programa do aluno é comparada com a saída esperada do professor. Caso as saídas sejam iguais o problema estará correto, caso contrário estará errado. BOCA-LAB é um sistema Web multiplataforma (SOUZA, 2009). O resultado da aplicação prática com as turmas foi positivo. Os participantes foram ativos no processo das numerosas correções, assim possibilitando uma estatística mais

33 detalhada, ficando comprovado que a ferramenta contribuiu de forma positiva no processo de aprendizagem, gerando uma métrica de desempenho da turma (SOUZA, 2009). O projeto faz uso de uma adaptação do corretor do BOCA, assim dando uma visão maior para a utilização juiz online do sistema BOCA. 2.5.3 Corretor automático de exercícios programa para auxílio no ensino à distância O objetivo desse projeto é o de auxiliar no aprendizado de alunos em programação, facilitando assim o mesmo e procurando uma menor dependência de professores (CUNHA et.al., 2006). O sistema funciona a partir de um compilador GCC e um testador que verifica se dado uma entrada padrão sua saída está de acordo com a saída esperada em um arquivo XML. Esse corretor gera relatórios de problemas encontrados através dos resultados obtidos nos testes e na análise do código (CUNHA et.al., 2006). Para integração com o ambiente virtual Moodle sua interface é divida em três etapas: envio de tarefas, envio de gabarito e resultado dos testes (CUNHA et.al., 2006). O projeto deu ênfase no aprendizado de programação, utilizando o ambiente virtual de aprendizagem Moodle, com isso dando diretrizes para que fosse possível a integração de um juiz online no ambiente Moodle. 2.5.4 Proposta de um laboratório virtual para aprendizagem de Prolog Esse projeto tem como objetivo o desenvolvimento de um Ambiente Virtual de Aprendizagem para a prática da linguagem de programação Prolog. Por se tratar de um ambiente com interação em tempo real com um interpretador da linguagem via web, correções e execuções automáticas de exercícios são feitas. Algoritmos são usados para a avaliação de questões discursivas de forma automática (SANTOS NETO, 2007). O ambiente faz uso do interpretador Pépe, sendo esse na plataforma Java, o que permite que o mesmo possa ser acessado em qualquer parte do mundo (SANTOS NETO, 2007).

34 O sistema possibilita aos professores cadastrar questões em formatos diferentes: verdadeiro/falso, discursiva e múltipla escolha. Ainda há a disponibilização de material de apoio, avaliações e também a geração de relatórios (SANTOS NETO, 2007). Em todas as listas de questões de exercícios ou da avaliação em questão, compara-se com a resposta padrão do professor. Com base na comparação do algoritmo de correção obtém-se uma nota (SANTOS NETO, 2007). Os fins almejados pelo projeto foram atingidos, sendo uma ferramenta para auxiliar o ensino de programação em lógica e auxiliando alunos e professores (SANTOS NETO, 2007). O projeto se assemelha ao criado, por se tratar de um ambiente virtual utilizando exercícios de fixação e que verifica se a resposta está conforme o esperado, para o ensino de linguagem de programação. Assim contribuindo de certa forma por ser possível a utilização em ambientes virtuais mecanismos para comparar e validar os exercícios dos alunos e assim gerando um feedback para o mesmo.

35 3 DESENVOLVIMENTO 3.1 DESCRIÇÃO DO SISTEMA O sistema tem como principal finalidade a criação de problemas de algoritmos, auxiliando professores que ministram disciplinas de programação bem como os alunos, por permitir a pratica de exercícios de fixação. Para a construção dos problemas o professor preenche os campos necessários no ambiente Moodle, sendo eles, o titulo do problema, corpo do problema (enunciado do problema), um conjunto de casos de teste, cada caso de teste contém as entradas esperadas pelo programa(entrada) e saída padrão e por fim a linguagem de programação para a resolução do problema. Já para que os alunos pratiquem os exercícios, os seus algoritmos devem ser submetidos em forma de código-fonte na linguagem especificada pelo professor, assim o código deve ser adicionado em um campo textarea, recebendo assim um feedback imediato do sistema. Esse feedback pode ser tanto positivo, quando um algoritmo estiver correto ou negativo, quando o algoritmo não estiver funcionando como o esperado. Para que esse feedback ocorra o código-fonte submetido pelo aluno é compilado por um juiz online de algoritmos, que está integrado ao ambiente Moodle. Esse código-fonte compilado, com o conjunto de casos de testes cadastrados pelo professor( entrada padrão) ao criar o problema, gera uma saída que é comparada com a saída padrão definida pelo professor, ao criar o problema. Para o aluno poder praticar este sistema possibilita o envio de algoritmos em três tipos de linguagens sendo elas C, C++ e Java, porém quem delimita qual linguagem será usada em cada problema é o professor, uma vez que na construção do sistema encontraram-se dificuldades para que fosse o aluno quem escolhesse o tipo de linguagem. A linguagem de programação utilizada para o desenvolvimento do sistema foi PHP em conjunto com HTML. A ferramenta utilizada para o desenvolvimento da interface foi o NetBeans IDE 7.1.2. Os servidores utilizados para a instalação/alocação do ambiente Moodle e do sistema BOCA são distintos, ambos rodando o PostgreSQL como banco de dados. A utilização de dois servidores distintos se deve por se tratar de questões de segurança, uma vez que o sistema BOCA encontre algum problema em seu funcionamento devido a códigos maliciosos o ambiente virtual Moodle não dê problema ou não pare o seu funcionamento.

36 Devido a incompatibilidade de linguagem entre SGBDs diferentes optou-se pelo PostgreSQL como banco de dados no ambiente Moodle, uma vez que o sistema BOCA é tratado com esse SGBD. Na primeira etapa de projeto foi realizada a modelagem do sistema por meio da UML (Unified Modeling Language), abrangendo análise de requisitos (funcionais do professor e do aluno e não funcionais), diagramas de caso de uso e banco de dados, descritos nos itens seguintes. Para a realização da modelagem do sistema, com os conceitos da UML, a ferramenta utilizada foi o Enterprise Architect 8. 3.2 Análise de Requisitos Foram levantados, a partir de estudos e junto ao professor que orienta o projeto, requisitos básicos necessários para garantir o seu funcionamento. 3.2.1 Requisitos Funcionais São funções detalhadas do comportamento esperado de um sistema, mostrando como ele reage a entradas específicas e seu comportamento em determinadas situações (SOMMERVILLE, 2003). Em um sistema servem para descrever essas funções ou até mesmo serviços que se espera de um sistema, podendo definir funções detalhadas como entradas e saídas (SOMMERVILLE, 2003). A utilização de requisitos funcionais no sistema desenvolvido foi dividida em requisitos funcionais do professor e requisitos funcionais do aluno. Tais requisitos servem para a criação e envio de questões no ambiente virtual Moodle. Requisitos funcionais do professor: o O sistema permite ao professor cadastrar novas questões; o O sistema permite ao professor alterar as questões cadastradas; o O sistema permite que o professor possa visualizar a estatística de desempenho tanto individual quanto coletiva dos alunos. Requisitos funcionais do aluno: o O sistema permite ao aluno enviar respostas aos problemas propostos pelo professor;

37 o O sistema dá um feedback imediato mostrando o status do problema (certo, errado, erro de compilação ou tempo excedido), enviado pelo aluno; o O sistema permite ao aluno compilar o seu código-fonte e o resultado da sua execução online; o O sistema permite ao aluno editar um solução enviada e reenviar. o O tempo limite de execução dos algoritmos é de 30 segundos. 3.2.2 Requisitos não Funcionais Ao contrario dos requisitos funcionais, os requisitos não funcionais não descrevem as funções especificas do sistema: são restrições sobre funções ou serviços que o sistema proporciona, podendo estar relacionado a propriedades de sistema. Assim ele pode expressar tempo de resposta, confiabilidade e espaço em disco. Ainda existe a alternativa até podendo definir restrições para o sistema (SOMMERVILLE, 2003). Requisitos não funcionais do sistema desenvolvido: o A solução envolveu somente tecnologia open source; o Os perfis de acesso ao sistema são: Administrador: tem permissão para efetuar todas operações; Professor: tem permissão para cadastrar turmas, problemas, disciplinas, avaliar os exercícios e cadastrar exercícios; Aluno: tem permissão para acessar o curso, ver participantes e enviar respostas para o professor; o Na correção automática dos exercícios enviados pelos alunos o sistema utiliza um juiz online que foi integrado ao mesmo; o O sistema utiliza banco de dados PostgreSQL; o Foi utilizada a versão 2.0 do ambiente virtual Moodle.

38 3.3 DIAGRAMAS DE CASO DE USO 3.3.1 Caso de Uso do professor A Figura 3 apresenta os Casos de Uso realizados pelo professor no ambiente Moodle. O professor pode cadastrar questões em um banco de questões, alterar questões já cadastradas e ainda há a possibilidade do professor gerar uma estatística de desempenho dos alunos. uc PCT01- Módulo de cadastro e relatórios do professor UC01.01 Cadastrar questões «include» Professor UC01.02 Alterar questões cadastradas UC01.03 Gerar estatística de desempenho dos alunos Figura 3. Diagrama de caso de uso das funcionalidades do professor. 3.3.1.1 UC01.01 Cadastrar questões Permite que após um questionário criado o professor possa cadastrar questões novas, alimentando o banco de questões que posteriormente poderão ser usadas em outros questionários ou até mesmo em outras disciplinas. Cadastrar questões (Principal) 1. O professor estando devidamente logado no ambiente Moodle, e selecionando o curso desejado, deve criar um questionário. 2. O sistema irá mostrar um botão edição de questionário. 3. O professor seleciona o botão edição.

39 4. O sistema irá mostrar a opção de adicionar uma nova pergunta ou adicionar perguntas já existentes em outros cursos ou até mesmo questionários. 5. O professor seleciona adicionar perguntas novas. 6. O sistema apresenta várias opções de questões. 7. O professor escolhe o tipo de questão, que no caso será o tipo criado pelo sistema desenvolvido chamado: juiz online de algoritmos. 8. O sistema apresenta alguns campos para o preenchimento que são: titulo da questão, texto da questão, entrada e saída padrão. 9. O professor preenche os campos com os dados do problema - titulo da questão, texto da questão, entrada e saída padrão. 10. O professor clica no botão salvar. 11. O sistema retorna para a edição do questionário. Adicionar mais questões ao questionário (Alternativo). 1. Após o passo 11 o professor, querendo adicionar mais questões ao questionário, retorna ao passo quatro onde irá começar o processo novamente. Cancelamento (Exceção). 1. A qualquer passo o professor pode cancelar o cadastro de uma nova questão, retornando assim à agenda do curso. 3.3.1.2 UC01.02 Alterar questões cadastradas Permite ao professor a alteração de questões cadastradas. Alteração de questões cadastradas (Principal). 1. O sistema mostra a lista de questões já cadastradas.

40 2. O professor seleciona a questão que deseja alterar. 3. O sistema mostra os campos da questão. 4. O professor altera os campos desejados. 5. O professor seleciona o botão salvar alterações. 6. O sistema altera a questão e retorna a lista de questões. Cancelamento (Exceção). 1. A qualquer passo o professor pode cancelar a alteração de uma questão, retornando assim a lista de questões. 3.3.1.3 UC01.03 Gerar estatística de desempenho dos alunos Permite ao professor gerar estatística do desempenho dos alunos, a fim de comparar e ver o rendimento da turma. Gerar estatística de desempenho dos alunos (Principal). 1. O professor após estar logado, e no curso desejado, seleciona na agenda do curso o questionário desejado. Nele existe um botão resultados que será clicado pelo mesmo. 2. O sistema exibe um submenu, onde se encontra estatísticas. 3. O professor clica em estatísticas. 4. O sistema apresenta algumas informações referentes ao questionário, bem como tentativas avaliadas, nota média das tentativas e nota mediana. 5. O professor retorna aos problemas. Cancelamento (Exceção). 1. A qualquer passo o professor pode cancelar a geração de estatística, retornando assim a agenda do curso.

41 3.3.2 Caso de Uso do aluno A Figura 4 apresenta os Casos de Uso realizados pelo aluno no ambiente Moodle. uc PCT02 - Módulo de relatórios UC02.01 Env iar respostas dos problemas Aluno «include» «include» UC02.02 Visualizar o feedback do problema UC02.03 Editar solução env iada Figura 4. Diagrama de Casos de Uso das funcionalidades do aluno. 3.3.2.1 UC02.01 Enviar respostas dos problemas professor. Permite que o aluno possa enviar sua solução para os problemas propostos pelo Enviar respostas dos problemas (Principal). 1. O aluno devidamente logado no ambiente moodle e no curso desejado seleciona o questionário criado pelo professor. 2. O sistema irá exibir a tela para o aluno iniciar o questionário, tendo um botão para iniciar esse processo. 3. O aluno clica no botão iniciar questionário. 4. O sistema apresenta o questionário, podendo o aluno escolher qual questão irá responder primeiro. 5. O aluno visualiza o problema e a linguagem escolhida pelo professor para que possa criar o seu algoritmo. 6. O aluno digita o código-fonte no campo especificado e clica em enviar.

42 7. O sistema retorna se foi enviado com sucesso. 8. O aluno clica em voltar para a agenda do curso. 3.3.2.2 UC02.02 Visualizar o feedback do problema O aluno tem a possibilidade de visualizar após o envio de seus problemas o feedback com sua nota, podendo estar certa ou errada Visualizar o feedback do problema (Principal). 1. O sistema exibe após o aluno enviar seus problemas a opção de visualizar sua nota. 2. O aluno seleciona em visualizar o feedback do problema enviado. 3. O sistema exibe o feedback com a nota podendo ser certo e errado, sendo que quando estiver certo aparecerá 100% e quando estiver errado aparecerá 0%. 4. O aluno retorna à agenda do curso. 3.3.2.3 UC02.03 Editar solução enviada desempenho. O aluno tem a possibilidade de editar uma solução já enviada a fim de melhorar o seu Editar solução enviada (Principal). 1. O aluno clica em questões enviadas. 2. O sistema exibe o código-fonte já enviado. 3. O aluno pode fazer qualquer tipo de alteração em seu código, após feito isso clica no botão enviar. 4. O sistema pergunta se o aluno deseja enviar e terminar tudo. 5. O aluno confirma. 6. O aluno clica em voltar para a agenda do curso.

43 Alteração diversas vezes (Alternativo) 1. Após o passo 4, depois de enviar a correção, caso o aluno queira alterar novamente e reenviar, ele retorna ao passo 1. 3.4 BANCO DE DADOS O banco de dados do sistema BOCA possui doze tabelas. Dentre elas quatro são utilizadas pelo juiz do BOCA, conforme na Figura 5. Porém, foram criadas duas tabelas a mais, como mostra a Figura 6, para que houvesse a manipulação dos dados entre as tabelas já existentes. Figura 5. Adaptação das tabelas do BOCA. A tabela problemtable serve para o cadastramento das questões por parte do professor. O BOCA espera por um arquivo.zip com as entradas e saídas cadastradas pelo professor, bem

44 como informações do problema. Além disso, a tabela é alimentada com outros atributos da questão. Esse arquivo.zip, tem em sua estrutura alguns diretórios, bem como: compare, compile, description, input, limits, output, run, tests. Como nesse projeto serão alterados só dois diretórios, os mesmos serão descritos. Para o diretório input, um arquivo contendo o conjunto de casos de teste, sendo que cada caso de teste contém as entradas esperadas pelo programa, que foram criados pelo professor, assim é adicionado a esse diretório. Já para o diretório output, um arquivo contendo o conjunto de saídas criado pelo professor é adicionado. Na tabela runtable a medida que o aluno submete os seus algoritmos o atributo rundata é alimentado, com um arquivo com a extensão necessária de cada linguagem de programação. Após a execução do algoritmo o mesmo irá alimentar com valores da tabela answertable o campo runanswer, onde diz se o algoritmo está correto ou se deu algum problema na compilação ou na execução. Langtable será uma tabela fixa onde as linguagens de programação serão apenas C, C++ e Java, sendo assim com valores definidos. Figura 6.Tabela tempaluno e tempprofessor criadas no BOCA.

45 3.5 Integração do juiz online do BOCA A integração do juiz online do BOCA no ambiente Moodle foi feita através da criação de gatilhos (Triggers). Segundo Silberschatz, Korth e Sudarshan (2006) gatilhos são uma instrução que faz a execução automática pelo sistema caso haja alguma modificação no banco de dados. O armazenamento do triggers no banco de dados é representado como sendo um dado normal, sendo acessível a todas as operações do banco de dados. Sua introdução faz com que o sistema de banco assuma a responsabilidade em executa-lo quando o evento especificado ocorrer. Portanto quando um professor cadastra uma questão no ambiente Moodle será gravada no banco de dados do mesmo. Após a inserção dos problemas no banco de questões do Moodle, o primeiro trigger (gatilho) é acionado, gravando os dados da questão na tabela tempprofessor, criada no banco de dados do sistema BOCA. Com isso os dados são gravados na tabela tempprofessor, e um segundo gatilho é acionado carregando os dados relacionados ao problema criado pelo professor e o arquivo problem.zip com o input e output do problema são adicionados a tabela problemtable. Tabela essa já nativa do BOCA. Feito isso, à medida que o aluno responder a questão no ambiente Moodle o envio será registrado nas tabelas do banco do ambiente. Já gravados no ambiente, outra trigger é acionada, na tabela onde a resposta do aluno foi gravada, para a tabela tempaluno. Criada no banco de dados do sistema BOCA. A seguir outra trigger é acionada mas já na tabela tempaluno, que pega o arquivo com a resposta do aluno e as informações da questão e cadastra na tabela runtable, tabela já nativa do sistema BOCA. Para a verificação se um problema submetido está correto faz-se uso de um processo do BOCA chamado autojuding (juiz online), que compila o algoritmo enviado pelo aluno, gerando assim uma saída, que é comparada com a saída padrão definida pelo professor na criação do problema.

46 O mesmo fica sendo executado em paralelo indeterminadamente com uma atualização de minuto em minuto, sempre verificando se há algum problema para ser julgado existente nas tabelas do BOCA. Havendo um novo problema para ser julgado, ele julga e o resultado será gravado na tabela do BOCA. Com isso a trigger na tabela runtable é acionada, pegando o resultado na tabela do BOCA e alterando as tabelas do ambiente Moodle, possibilitando que o aluno possa visualizar o feedback do seu problema (Figura 7). Figura 7. Esquema da integração de um juiz online no ambiente Moodle. Portanto o feedback imediato é a resposta 1.000000 no caso de uma resposta correta ou 0.000000 quando a resposta estiver errada. Já o feedback do professor no corpo da resposta poderá ser: Erro de compilação. Output erro de formatação (representando que a saída do programa não segue a especificação exigida). Tempo limite excedido(representando que excedeu o tempo estipulado que é de 30 segundos na execução). Para viabilizar a utilização dos gatilhos criados, é necessária a utilização, para a transferência dos dados em servidores distintos o uso do Dblink. O Dblink, é um conjunto de funções, que possibilita a conexão entre banco de dados PostgreSQL com o intuito de ter acesso a dados externos. Os dados externos podem ser

47 considerados, tanto banco de dados distantes fisicamente exemplo, em servidores distintos, como um banco de dados local. Sendo assim o Dblink permite o acesso remoto a uma tabela de uma determinada base de dados, e a realizar a execução de queries. O seu desempenho depende da infraestrutura da rede, por realizar o seu acesso através do protocolo TCP/IP. (SMANIOTO, 2006) Para a utilização do Dblink no banco de dados PostgreSQL é preciso que o conjunto de funções que o compõem, sejam instalados. Sendo que o mesmo não vem instalado por padrão. (SMANIOTO, 2006) O conjunto de funções que compõem o Dblink estão descritos no Apêndice A 3.6 INTERFACES DO SISTEMA Serão apresentadas nessa seção as principais interfaces do sistema desenvolvido, sendo elas, a tela do professor, retratando a administração do curso, criação de questões e relatórios de desempenho dos alunos. Ainda serão apresentadas as telas referentes ao aluno compondo a tela para responder as questões e a tela de feedback. 3.6.1 Telas do professor A tela de administração do curso permite ao professor a criação de questionários, posteriormente a adição de questões aos questionários e a geração do curso criando turmas e visualizando o desempenho dos alunos. Para possibilitar a edição e a criação de questionários o botão de ativar edição deve ser clicado. A Figura 7 apresenta uma lista de tipos de questões para a escolha do professor. Nessa tela será escolhida pelo professor os exercícios do Juiz Online. Após a escolha do tipo de questão o sistema irá apresentar outra tela para criação da questão, mostrando os campos necessários para cada tipo de questão.

48 Figura 8. Tela de escolha do tipo de questão Juiz Online. A Figura 8 mostra a tela para a criação da questão, após a seleção do tipo de questão. O professor deve inserir o titulo para a questão, o texto do enunciado da questão, um conjunto de entradas e um conjunto de saídas padrão. O professor deve especificar qual o tipo de linguagem utilizada pelo aluno na criação do algoritmo. Para poder julgar as questões o juiz do BOCA, necessita de um conjunto de entradas e saídas padrão, que estarão em um arquivo.zip contendo também algumas informações referentes a questão. Para possibilitar a criação dos arquivos contendo um conjunto de entrada e um conjunto de saída padrão e posteriormente os mesmos serem adicionados a um arquivo.zip. foi criado um código em PHP inserido na classe edit_juiz_form.php que encontrasse na pasta /question/type/juiz, do ambiente Moodle. Assim após a criação dos arquivos contendo as entradas e saídas, esses arquivos são inseridos no arquivo problem.zip existente no servidor do Moodle. Como via dblink não é possível o envio de arquivos, a forma encontrada para o envio desse arquivo problem.zip foi via FTP, para o servidor onde o BOCA está instalado. Sendo assim quando o gatilho da criação de questão é acionado ele insere os atributos da questão na tabela tempprofessor criada no BOCA que faz uma ponte para posteriormente

49 outro gatilho ser acionado e adicionar os atributos da questão juntamente com o arquivo problem.zip na tabela problemtable onde é a tabela em que se é cadastrada o problema no sistema BOCA. Figura 9. Tela de criação da questão. No Quadro 3 é apresentado o gatilho (trigger) tg_atualia_boca2, criado na tabela mdl_question_juiz, que tem como papel acionar a função moodle_gatilho_to_boca() toda vez que um dado for atualizado (AFTER UPDATE) na tabela.

50 Uma questão quando criada no ambiente Moodle tem os seus atributos comuns entre questões inseridos na tabela mdl_question. Após esses dados serem inseridos, um id é criado e inserido na tabela do tipo de questão desejado. Partindo desse principio a escolha na utilização do AFTER UPDATE se deve ao fato de que o id é inserido primeiro na tabela mdl_question_juiz, deixando o restante dos atributos em branco, para em seguida os seus atributos serem atualizados, portanto um AFTER INSERT não serviria nesse caso. CREATE TRIGGER tg_atualiza_boca2 AFTER UPDATE ON mdl_question_juiz FOR EACH ROW EXECUTE PROCEDURE moodle_gatilho_to_boca(); Quadro 3. Criação da trigger tg_atualiza_boca2. No Quadro 4, a função moodle_gatilho_to_boca cria uma ligação com o servidor onde o banco de dados do BOCA está. Essa ligação entre bancos é feita através do dblink. Dessa forma possibilita o envio de comandos SQL para o banco de dados do BOCA, onde é feita uma inserção na tabela tempprofessor. Essa inserção contem os atributos de uma questão do juiz online, salvas na tabela mdl_question_juiz no ambiente Moodle. Os atributos enviados da questão são: o numero da questão, o nome da questão e a linguagem de programação escolhida pelo professor.

51 CREATE OR REPLACE FUNCTION moodle_gatilho_to_boca() RETURNS trigger AS $BODY$ DECLARE nomequestao text; BEGIN nomequestao := (SELECT name FROM mdl_question WHERE id= NEW.question); PERFORM dblink_exec('hostaddr= XXX.XXX.XX.XX port=5432 user=xxxx password=xxxx dbname=bocadb', 'INSERT INTO tempprofessor(id,questionid,namequestion,langprog) VALUES ((SELECT max(id) FROM tempprofessor) +1,' NEW.question ',''' nomequestao ''',' NEW.linguagempro g ')'); RETURN NEW; END; $BODY$ LANGUAGE plpgsql; Quadro 4. Criação da função moodle_gatilho_to_boca(). O gatilho tg_envia_problemtable, visto no Quadro 5, foi criado na tabela tempprofessor do banco de dados do BOCA. O mesmo é acionado à medida que algum dado é inserido ou atualizado na tabela. A função chama-se tempaluno_gatilho_problemtable(). CREATE TRIGGER tg_envia_problemtable AFTER INSERT OR UPDATE ON tempprofessor FOR EACH ROW EXECUTE PROCEDURE tempprofessor_gatilho_problemtable(); Quadro 5. Criação da trigger tg_envia_problemtable. A função tempaluno_gatilho_problemtable, vista no Quadro 6, ao ser acionada pelo gatilho tg_envia_problemtable pega os dados que foram inseridos recentemente na tabela tempprofessor e os insere em outra tabela, chamada problemtable. A mesma é a responsável pela criação das perguntas pelo professor. Essa inserção é feita com os atributos na criação da questão pelo professor, que foram inseridos na tabela do Moodle, e enviados para a tabela

52 tempprofessor do BOCA. Dentre os atributos passados estão o numero do problema, nome do problema, nome do arquivo e o arquivo contendo o problema. CREATE OR REPLACE FUNCTION tempprofessor_gatilho_problemtable() RETURNS trigger AS $BODY$ BEGIN INSERT INTO problemtable(contestnumber, problemnumber, problemname, probleminputfilename, fake) VALUES (5,NEW.questionid, NEW.namequestion, 'problem.zip', lo_import('/home/icpcadmin/public/problem.zip'),'false'); RETURN NEW; END; $BODY$ LANGUAGE plpgsql; Quadro 6. Criação da função tempprofessor_gatilho_problemtable(). 3.6.2 Telas do aluno A Figura 9 apresenta a tela do aluno com o problema, mostrando o titulo do problema, o corpo do enunciado contendo exemplos de entrada e saída que o programa deverá gerar, além disso, existe uma caixa de texto para que o aluno possa colar o seu código-fonte e por fim um texto mostra em qual linguagem deve ser criado o algoritmo. Para que o juiz do BOCA possa julgar a solução submetida pelo aluno ele espera um arquivo contendo o código-fonte do algoritmo. Portanto foi necessário criar um arquivo do aluno a partir de seu código-fonte. Para viabilizar esse processo foi inserido um código em PHP na classe renderer.php. Essa classe é a responsável por gerar a tela do aluno pelo Moodle. Sendo assim o aluno ao clicar em submeter a sua solução via Moodle o arquivo é criado no servidor onde o Moodle se encontra. Mas para enviar esse arquivo ao servidor onde o juiz do BOCA se encontra foi necessário a utilização do envio via FTP, uma vez que via dblink não seria possível, já que o dblink não suporta envio de arquivos. Após a criação do arquivo, sequencialmente o gatilho de envio da solução do aluno é acionado, enviando à tabela tempaluno, criada no banco de dados do BOCA os atributos da questão e atributos da

53 solução do aluno. Assim outro gatilho é acionado na tablea tempaluno que envia o arquivo com a solução do aluno e os atributos referentes a mesma para a tabela runtable, onde a mesma é responsável para que o juiz possa julgar as questões. Figura 10. Tela do aluno com o problema a ser resolvido.

54 É apresentado no Quadro 7 o gatilho (trigger) tg_atualiza_boca_aluno, criado na tabela mdl_question_attempts, que tem como papel acionar a função moodle_gatilho_to_boca_aluno(), toda vez que um dado for atualizado (AFTER UPDATE) na tabela. A tabela mdl_question_attempts, é uma tabela criada pelo Moodle quando o mesmo é instalado. Essa tabela é a responsável por guardar a resposta do aluno e alguns atributos referentes à questão. Os atributos referentes a questão são inseridos a partir do momento em que o aluno inicia uma tentativa. Mas a sua resposta só é salva nessa tabela quando o aluno finaliza e envia tudo. Devido a isso foi escolhido para a sua utilização o AFTER UPDATE, onde um AFTER INSERT não iria capturar a resposta do aluno ao terminar de responder a questão. CREATE TRIGGER tg_atualiza_boca_aluno AFTER UPDATE ON mdl_question_attempts FOR EACH ROW EXECUTE PROCEDURE moodle_gatilho_to_boca_aluno(); Quadro 7. Criação da trigger tg_atualiza_boca_aluno. O Quadro 8, mostra a função moodle_gatilho_to_boca_aluno, que cria uma ligação com o servidor onde o banco de dados do BOCA está. Essa ligação entre bancos é feita através do dblink. Via dblink, uma instrução de inserção é enviada, para a tabela tempaluno, onde os atributos enviados são: o timemodified, id da questão, nome da questão, a resposta do aluno e a linguagem escolhida pelo professor para a resolução do problema.

55 CREATE OR REPLACE FUNCTION moodle_gatilho_to_boca_aluno() RETURNS trigger AS $BODY$ DECLARE slinguagem int; codigo text; BEGIN IF NEW.responsesumary <> ' ' THEN slinguagem := (SELECT linguagemprog FROM mdl_question_juiz WHERE question = NEW.questionid); PERFORM dblink_exec('hostaddr= XXX.XXX.XX.XX port=5432 user=xxxx password=xxxx dbname=bocadb', 'INSERT INTO tempaluno(id, timemodified, questionid, namequestion, bodyquestion, langprog) VALUES ((SELECT max(id) FROM tempaluno)+1, ' NEW.timemodified ',' NEW.questionid ', $$' NEW.questionid '.c$$, $$' NEW.responsesumary '$$,' slinguagem ' )'); END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql; Quadro 8. Criação da função moodle_gatilho_to_boca_aluno(). O gatilho tg_envia_runtable, visto no Quadro 9, foi criado na tabela tempaluno do banco de dados do BOCA. O mesmo é acionado à medida que algum dado é inserido ou atualizado na tabela. Assim chamando a função tempaluno_gatilho_runtable(). CREATE TRIGGER tg_envia_runtable AFTER INSERT OR UPDATE ON tempaluno FOR EACH ROW EXECUTE PROCEDURE tempaluno_gatilho_runtable(); Quadro 9. Criação da trigger tg_envia_runtable. A função tempaluno_gatilho_runtable, vista no Quadro 10, ao ser acionada pelo gatilho tg_envia_runtable pega os dados que foram inseridos recentemente na tabela tempaluno e os insere em outra tabela, chamada runtable. A mesma é a responsável pelas respostas do aluno. Essa inserção é feita com os atributos da resposta do aluno, que foram inseridos na tabela do Moodle, e enviados para a tabela tempaluno do BOCA. Dentre os

56 atributos passados estão: o numero da questão, nome do arquivo, arquivo contendo o códigofonte da resposta do aluno e a linguagem selecionada pelo professor. CREATE OR REPLACE FUNCTION tempaluno_gatilho_runtable() RETURNS trigger AS $BODY$ DECLARE nomearquivo text; BEGIN nomearquivo := NEW.questionid (SELECT CASE WHEN NEW.langprog = 1 THEN '.c' WHEN NEW.langprog = 2 THEN '.cpp' WHEN NEW.langprog = 3 THEN '.java' ELSE 'other' END); INSERT INTO runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate, rundatediff, rundatediffans, runproblem, runfilename, rundata, runstatus, runlangnumber) VALUES (5,1,(SELECT max(runnumber) FROM runtable)+1, 2,NEW.timemodified, 5620,99999999,NEW.questionid, nomearquivo, lo_import('/home/icpcadmin/teste/' nomearquivo), 'openrun', NEW.langprog); RETURN NEW; END; $BODY$ LANGUAGE plpgsql; Quadro 10. Criação da função tempaluno_gatilho_runtable(). A Figura 11 apresenta o feedback para o aluno. Com isso o aluno tem uma resposta se o seu algoritmo fez o que era esperado ou não. Assim quando o algoritmo estiver como o esperado o textarea fica na cor verde e caso contrário fica na cor vermelha, simbolizando que o algoritmo não está como esperado.

57 Figura 11. Tela de feedback. Essa resposta é gerada na tabela runtable no banco de dados do BOCA. Sendo assim a medida em que o juiz julga a questão é inserida a resposta em um campo em sua tabela. Portanto, quando é inserida a resposta do juiz na tabela um gatilho é acionado. Esse gatilho tem como função verificar se a resposta obtida é um yes (quando estiver correto) ou outros tipos de erros (quando não estiver correto), assim transformando a resposta que é uma string, em formato numérico, para poder ser inserida em duas tabelas no ambiente Moodle. São elas