Versão em inglês, em forma de relatório

ProPAT

Programming Patterns Tutor

Tutor de Padrões Pedagógicos para Programação

(um dos projetos Eclipse-IME)


Equipe

Orientadora:
Leliane Nunes de Barros

Professores colaboradores:
Ronaldo Fumio Hashimoto
Leônidas de Oliveira Brandão

Aluna de mestrado:
Karina Valdivia Delgado

Aluno de graduação:
Wendel Scardua (bolsista de Iniciação Científica)

Aluno colaborador:
Domingos Dellamonica Jr. (até 10/12/2003)


Introdução

A área de Sistemas Tutores Inteligentes investiga a aplicação de técnicas de Inteligência Artificial em ferramentas computacionais de ensino e aprendizagem. Sistemas Tutores devem, entre outras coisas, comunicar o conhecimento a ser aprendido através de uma interface apropriada, bem como monitorar e diagnosticar as ações do aluno com o objetivo de construir uma representação interna de seu desempenho. A representação interna do aluno (modelo do aluno) pode, por sua vez, ser usada para Sistema Tutor tomar decisões quanto a: (i) explicações e dicas sobre solução de problemas e (ii) geração de cursos personalizados de acordo com a necessidade de cada aluno.

Objetivos

Interface de Programação

A construção de um Sistema Tutor de Introdução à Programação tem como objetivo auxiliar o aluno a adquirir habilidade na resolução de um conjunto de problemas numa determinada linguagem de programação. Um dos objetivos desse projeto é construir uma interface de programação que disponibilize ao aprendiz componentes conceituais (metas, planos e ações para resolução de problemas) e componentes de programação (comandos e padrões elementares em uma determinada linguagem de programação). Para isso, será selecionado um conjunto de problemas para os quais pretendemos fazer um mapeamento entre uma descrição de alto nível de abstração da solução (componentes conceituais) e uma descrição de mais baixo nível (componentes de programação).

Através desta interface o aluno deverá ser capaz de:

O conjunto de problemas será selecionado a partir do Caderno de Exercícios adotado nos cursos de Introdução à Programação oferecidos pelo IME-USP. Para especificar os componentes de programação serão usados alguns padrões elementares para diferentes paradigmas, entre eles, programação procedimental e programação orientada a objetos.

Pretendemos basear a interface de programação no plugin CDT do Eclipse.

Interface do Professor

A interface do professor permitirá que este adicione novos padrões (ou modificar os existentes), caso isso seja necessário (durante o desenvolvimento da base de padrões, por exemplo). Durante a edição de um padrão, o usuário-professor poderá referenciar outros padrões, selecionados a partir de uma lista de padrões existentes. Se ele deseja se referir a algum padrão que só vai ser escrito depois, ele também pode fazê-lo.

Diagnóstico da Solução do Aluno

É possível traduzir o programa construido pelo aluno para uma representação que permita aplicarmos técnicas de Diagnóstico Baseado em Modelos da Inteligência Artificial para localizar falhas (bugs). Esta é a proposta de um trabalho de mestrado que será desenvolvido no IME-USP. O sistema de diagnóstico a ser implementado poderá ser integrado ao plugin do ProPAT.

Disciplinas de Introdução à Computação ministradas pelo IME

As disciplinas de Introdução à Computação oferecidas para os diversos institutos da USP são:
 
Sigla Disciplina Instituto
MAC 110 Introdução à Computação Instituto de Matemática e Estatística
MAC 113 Introdução à Computação para Ciências Humanas Faculdade de Economia e Administração
MAC 115 Introdução à Computação para Ciências Exatas e Tecnologia Instituto de Física
MAC 2166 Introdução à Computação para Engenharia Escola Politécnica da USP

MAC Multimídia

Um dos objetivos do projeto MAC Multimídia está relacionado à elaboração de material didático para disciplinas de Introdução à Computação. A página do projeto contém: (a) um texto introdutório sobre a História do Computador; (b) uma versão eletrônica do Caderno de Exercícios elaborado pelos professores do departamento de Ciência da Computação do IME que reflete a experiência de mais de 20 anos no ensino de Introdução à Ciência da Computação; (c) um conjunto de exercícios selecionados com uma animação da solução do problema em sala de aula, a construção do programa através de perguntas de múltipla escolha e a simulação do programa gerado.

É importante observar que a construção passo-a-passo de programas para os problemas selecionados consiste em fazer com que o aluno escolha a alternativa certa entre algumas opções. Além disso, a simulação da execução do programa construído para cada problema foi construída como uma animação e não pode ser generalizada para simular programas quaisquer construidos pelo próprio aluno.


Referências sobre desenvolvimento para o Eclipse

Desenvolvendo plugins para o Eclipse  - Texto pessoal, contendo tudo o que aprendi sobre o assunto.

Referências sobre padrões pedagógicos de programação

The Elementary Patterns Home Page (Eugene Wallingford)

Proposed Programming and Design Patterns (Alyce Brady)

Patterns for Selection - Version 4 (Joseph Bergin)

Loop Patterns (Owen Astrachan & Eugene Wallingford)

C++ Patterns: Conditional (Stina Bridgeman)

Referências específicas do ProPAT

Restrições para a inserção de código de padrões

Projeto correlacionado

Uma das propostas de trabalho futuro é incluir no ProPAT um simulador do programa do aluno. Uma primeira versão de um simulador para um computador simplicado foi feita como um exercício-programa na disciplina de Estruturas de Dados (MAC323).

Simulador de execução de programas


Cronograma

(obs: dados até setembro-outubro e entre fevereiro e abril podem estar incompletos/imprecisos)
 
 
Data Tarefa
Maio/2003
  • Seminário sobre o Projeto Eclipse IME
  • Levantamento bibliográfico sobre Padrões Elementares de Programação
  • Estudo de artigos relacionados ao ensino de linguagens procedimentais
  • Seleção de padrões relevantes 
Junho/2003
  • Seleção de exercícios do Caderno e elaboração de soluções usando os padrões selecionados 
  • Documento contendo a lista de problemas e soluções com padrões (enunciados + soluções)
  • Criação do "documento de padrões"
Julho/2003
  • Construção da página  inicial do projeto 
  • Instalação e uso do Eclipse 
Agosto-Setembro/2003
  • Especificação das interfaces do professor e do aluno 
  • Banco de Dados XML de Padrões
  • Representação XML de Padrões
  • Pesquisa sobre o uso de compiladores C dentro do Eclipse -> CDT 
  • Decisão: Manipulação de programas como textos, e não como gráficos (pelo menos na fase inicial do projeto)
  • Decisão: Manipulação dos padrões e dos problemas (por parte do professor) será também um plugin
  • Implementação um exemplo de plugin Eclipse
  • Curso sobre uso geral do Eclipse
  • Início da leitura da ajuda do Eclipse sobre desenvolvimento de plugins
  • Leitura de um exemplo prático de extensão de uma IDE do Eclipse (porém o texto omitia informações)
Outubro/2003
  • Experiência de extensão da IDE Java
  • Pesquisa sobre o uso das funcionalidades do CDT para o sistema ProPAT (o que vai ser reutilizado ou modificado) 
  • Reunião dos bolsistas e orientadores do Eclipse
  • Estudar os pontos de extensão do Eclipse (continuamente :)
  • Teste prático de extensão (criação de menus, editores, perspectivas, etc.)
  • Criação da perspectiva ProPAT
  • Início do uso de CVS para controlar as versões do plugin
  • Escrever sobre desenvolvimento de plugins no Eclipse
Novembro/2003
  • Implementar inserção de texto em um editor através de uma "ação"
  • Implementar recuperação dos padrões.
  • Dia 24 - Término da interface simples, com inserção de padrões na posição atual do cursor no programa.
  • Última semana - Desenvolver a idéia de hierarquia (facilmente implementável depois de definida); criar tela de propriedades
  • Transformar tela de visualização de padrões, para ficar "eclíptica"
Dezembro/2003
  • Sistema deve estar funcionando (pelo menos um protótipo)
Janeiro/2004
  • 13 - Criar botão de undo.
  • 16 - Exibir "documentação do padrão" (baseado em html)
  • 19 - Definir "tipos de padrões" (View deve refletir o fato de existirem tais tipos)
Fevereiro/2004
  • [falta escrever]
Março/2004
  • Início do relatório final
  • Tradução de um padrão do patterns.xml
  • [falta escrever]
Abril/2004
  • Definição de xml pra representar exercícios
  • Tradução de todo o patterns.xml (início)
  • Exibir exercícios (início)
  • [falta escrever]
Maio/2004
  • Pattern View deixa de ser hierárquico para não confundir o usuário
  • Exibir exercícios (fim)
  • Tradução do patterns.xml (fim)
  • "Reforma" do patterns.xml (remoção de pequenos defeitos e inconsistências)
  • Deve ser feita alguma distinção entre padrões e metadados (senão fica pro próximo release)
  • Pattern View deve exibir apenas padrões e não os metadados (?)
  • Teste de substituição inválida com mensagem personalizada em função do metadado.
  • Botão Redo pro Editor
  • Inserção com verificação de contexto (início)
  • Mais exercícios
Junho/2004
  • Inserção com verificação de contexto - problemas particulares ( for e strings )
  • Documentação de todas as restrições que possam existir com relação a essa inserção
  • Rede Eclipse offline - greve no IME
Julho/2004
  • Rede Eclipse online (pelo menos para acesso remoto)
  • Adicionar item à documentação do padrão - explicação de como se pode implementar os metadados.
  • ProPAT-Teacher funcionando
  • Árvore de decomposição de padrões (pro professor)
  • Representar "hierarquia de padrões" visualmente em algum lugar.
  • Histórico de ações  + Programação orientada apenas a inserções (?)
    (edit: passa para Planos Futuros, agora é só registrar padrões inseridos)
  • Testes de mesa (bench tests) funcionando
  • Final do projeto
Legenda: [Vermelho = Passado] [Azul = Presente] [Verde = Futuro]


'Webmaster': Wendel Scardua [wendel scardua (a) gmail . com]

Last modified: Fri  Jun 18 15:23:35 BRT 2003 
 
 
  Tradução do patterns.xml (fim)