Apresentação feita no Encontro Nacional de Inteligência Artificial (ENIA) em 2009. Esse trabalho foi apresentado no evento pela professora Leliane Nunes de Barros.
Um tutor inteligente para o ensino/aprendizado de programaçã com técnicas de diagnóstico hierárquico baseado em modelos
1. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Um tutor inteligente para o ensino/aprendizado de
programa¸˜o com t´cnicas de diagn´stico
ca e o
hier´rquico baseado em modelos
a
Wellington R. Pinheiro, Leliane N. de Barros
Departamento de Ciˆncia da Computa¸˜o
e ca
Instituto de Matem´tica e Estat´
a ıstica - Universidade S˜o Paulo
a
{wrp,leliane}@ime.usp.br
24 de Julho de 2009
ENIA, 24 de julho de 2009 Slide: 1/22
2. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conceitos Gerais
Sistema Tutor Inteligente para Programa¸˜o
ca
Sistema Tutor Inteligente [Wenger, 1987] (ITS): ferramenta de
aprendizado eletrˆnico que usa t´cnicas de Inteligˆncia Artificial.
o e e
Um ITS para programa¸˜o deve ser capaz de:
ca
propor problemas de programa¸˜o que promovam o aprendizado
ca
de um determinado aluno;
detectar os poss´
ıveis erros de programa¸˜o do aluno
ca
(diagn´stico do programa do aluno);
o
comunicar as falhas ao aluno com a expectativa que ele aprenda
durante esse processo;
construir o modelo do aluno (representa¸˜o de seu
ca
conhecimento) com base no resultado do diagn´stico de
o
problemas.
ENIA, 24 de julho de 2009 Slide: 2/22
3. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conceitos Gerais
Sistema Tutor Inteligente para Programa¸˜o
ca
Sistema Tutor Inteligente [Wenger, 1987] (ITS): ferramenta de
aprendizado eletrˆnico que usa t´cnicas de Inteligˆncia Artificial.
o e e
Um ITS para programa¸˜o deve ser capaz de:
ca
propor problemas de programa¸˜o que promovam o aprendizado
ca
de um determinado aluno;
detectar os poss´
ıveis erros de programa¸˜o do aluno
ca
(diagn´stico do programa do aluno);
o
comunicar as falhas ao aluno com a expectativa que ele aprenda
durante esse processo;
construir o modelo do aluno (representa¸˜o de seu
ca
conhecimento) com base no resultado do diagn´stico de
o
problemas.
ENIA, 24 de julho de 2009 Slide: 2/22
4. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conceitos Gerais
ITS para Programa¸˜o
ca
PROUST [Johnson and Soloway, 1984]
PROUST ´ o principal sistema encontrado na literatura capaz
e
de detectar erros de l´gica de programa¸˜o.
o ca
ProPAT: Tutor de Padr˜es Elementares [Delgado, 2005].
o
Utiliza diagn´stico baseado em modelo para fazer depura¸˜o de
o ca
programas (MBSD).
Funciona para um subconjunto de instru¸˜es da linguagem C.
co
Utiliza um plugin Eclipse como ambiente de programa¸˜o e
ca
interface de comunica¸˜o com o estudante.
ca
Permite que o aluno programe usando padr˜es elementares de
o
programa¸˜o.
ca
ENIA, 24 de julho de 2009 Slide: 3/22
5. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conceitos Gerais
Diagn´stico do Programa do Aluno
o
PROUST [Johnson and Soloway, 1984] ProPAT [Delgado, 2005]
Caracter´
ısticas
tenta construir o modelo do utiliza diagn´stico baseado em
o
estudante reconhecendo planos de modelo para detectar falhas no
programa¸˜o e metas (inten¸oes) no
ca c˜ programa do aluno;
programa do aluno; n˜o requer uma biblioteca de planos
a
os planos de programa¸˜o e as
ca e metas previamente definidos para
metas para um determinado a solu¸˜o.
ca
conjunto de problemas s˜o
a
armazenados em uma biblioteca.
Limita¸oes
c˜
os planos da biblioteca podem n˜oa as falhas s˜o comunicadas ao aluno
a
cobrir todas as poss´
ıveis solu¸oes
c˜ em termos de linhas do programa, o
para um determinado problema; que fornece pouca ou nenhuma
se nenhum plano for encontrado informa¸˜o para que o aluno
ca
n˜o ´ poss´ detectar as falhas no
a e ıvel identifique os erros no programa.
programa do aluno.
ENIA, 24 de julho de 2009 Slide: 4/22
6. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conceitos Gerais
Diagn´stico Baseado em Modelo
o
´
E uma t´cnica de Inteligˆncia
e e
Artificial usada para
encontrar componentes
falhos em sistemas f´ısicos.
Raciocina sobre modelos que
descrevem o comportamento
correto dos sistemas.
Envolve trˆs
e
subtarefas [Benjamins, 1993]:
detec¸˜o de sintomas,
ca
gera¸˜o de hip´teses e
ca o
discrimina¸˜o de hip´teses.
ca o
ENIA, 24 de julho de 2009 Slide: 5/22
7. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conceitos Gerais
Depura¸˜o de Programas Baseada em Modelo
ca
[Mayer et al., 2002]
Id´ia b´sica: fazer uma simula¸˜o passo do programa
e a ca
apontando as instru¸˜es que justificam as discrepˆncias
co a
observadas (i.e. a diferen¸as entre as sa´
c ıdas do programa e as
sa´
ıdas esperadas (sintomas).
Pode ser usada por um ITS para tentar entender as diferen¸as
c
entre as inten¸˜es do aluno e seu programa.
co
ENIA, 24 de julho de 2009 Slide: 6/22
8. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conceitos Gerais
Depura¸˜o de Programas Baseada em Modelo
ca
ENIA, 24 de julho de 2009 Slide: 7/22
9. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conceitos Gerais
Limita¸˜es do MBSD para o Aprendizado de Programa¸˜o
co ca
Informar as linhas do programa possivelmente falhas pode n˜oa
ser o suficiente para que o aluno consiga corrigir seu programa.
Mesmo para um programa pequeno, podem haver muitas
hip´teses de falha para serem comunicadas (e discriminadas) ao
o
aluno, podendo deix´-lo cansado e confuso.
a
Um aprendiz de programa¸˜o n˜o tem conhecimento o
ca a
suficiente para fazer predi¸˜es a respeito do comportamento do
co
programa.
ENIA, 24 de julho de 2009 Slide: 8/22
10. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Objetivo
Proposta
Estender a t´cnica MBSD com o uso do Diagn´stico Hier´rquico
e o a
Baseado em Modelos (diagn´stico hier´rquico), de maneira que:
o a
Falhas no programa do aluno possam ser encontradas em
diferentes n´
ıveis de abstra¸˜o.
ca
Fun¸˜es, procedimentos e padr˜es elementares sejam vistos
co o
como componentes abstratos.
A comunica¸˜o com o aluno possa ser feita em termos desses
ca
componentes abstratos , i.e. atrav´s de uma linguagem alto
e
n´
ıvel, e n˜o somente atrav´s de linhas do programa.
a e
Na m´dia, o tutor comunique um conjunto de hip´teses de
e o
falha menor.
ENIA, 24 de julho de 2009 Slide: 9/22
11. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Objetivo
Id´ia do MBSD + HMBD
e
Dar a oportunidade para que aluno entenda e corrija a falha do
programa em diferentes n´
ıveis de abstra¸˜o.
ca
Ap´s serem encontradas as hip´teses de falha em um
o o
determinado n´ de abstra¸˜o, o aluno pode:
ıvel ca
fazer a discrimina¸˜o de hip´teses no n´ de abstra¸˜o atual
ca o ıvel ca
(fornecendo novas observa¸˜es a respeito do comportamento
co
esperado para o programa);
depurar o programa em um n´ mais detalhado, substituindo
ıvel
um componente abstrato pelos seus componentes internos
(refinamento);
modificar o programa para tentar corrigir as falhas.
ENIA, 24 de julho de 2009 Slide: 10/22
12. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Objetivo
Id´ia do MBSD + HMBD
e
Dar a oportunidade para que aluno entenda e corrija a falha do
programa em diferentes n´
ıveis de abstra¸˜o.
ca
Ap´s serem encontradas as hip´teses de falha em um
o o
determinado n´ de abstra¸˜o, o aluno pode:
ıvel ca
fazer a discrimina¸˜o de hip´teses no n´ de abstra¸˜o atual
ca o ıvel ca
(fornecendo novas observa¸˜es a respeito do comportamento
co
esperado para o programa);
depurar o programa em um n´ mais detalhado, substituindo
ıvel
um componente abstrato pelos seus componentes internos
(refinamento);
modificar o programa para tentar corrigir as falhas.
ENIA, 24 de julho de 2009 Slide: 10/22
13. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
MBD
Modelos do Circuito de Exemplo
ok(C ) indica que o componente C est´ funcionando corretamente e;
a
¬ok(C ) indica que o componente C est´ falho.
a
Modelo comportamental Modelo estrutural Observa¸oes
c˜
in1 (M1 )=3
adder (x)∧ok(x)→add(in1 (x),in2 (x),out1 (x))
in2 (M1 )=2
multiplier (x)∧ok(x)→mult(in1 (x),in2 (x),out1 (x))
out1 (M1 )=in1 (A1 ) in1 (M2 )=2
multiplier (M1 )
out1 (M2 )=in2 (A1 ) in2 (M2 )=3
multiplier (M2 )
out1 (M2 )=in1 (A2 ) in1 (M3 )=2
multiplier (M3 )
out1 (M3 )=in2 (A2 ) in2 (M3 )=3
adder (A1 )
out1 (A1 )=10
adder (A2 )
out1 (A2 )=12
ENIA, 24 de julho de 2009 Slide: 11/22
14. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
Diagn´stico Hier´rquico Baseado em Modelo (HMBD)
o a
Uma t´cnica usada para se obter melhor desempenho no
e
processo de diagn´stico.
o
A descri¸˜o do sistema ´ feita em diferentes n´
ca e ıveis de abstra¸˜o.
ca
Utiliza abstra¸˜es para representar componentes ou o
co
comportamento do sistema (abstra¸˜es estruturais e
co
comportamentais).
Utiliza a t´cnica de MBD tradicional para encontrar a solu¸˜o.
e ca
ENIA, 24 de julho de 2009 Slide: 12/22
15. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
Modelos com Abstra¸˜es
co
Modelos do n´ 1
ıvel
Modelo estrutural interno Modelo comportamental Modelo estrutural externo
nand−composition(NandComp,And,Inv )→ nand(C )∧ok(C )→
in1 (NandComp)=in1 (And)∧ ∃A,I [ nand−composition(C ,A,I )∧
in2 (NandComp)=in2 (And)∧ and−ok(A)∧inv−ok(I ) ]
out1 (NA1 )=in1 (A2 )
out1 (And)=in1 (Inv )∧ and−ok(C )≡out1 (C )=1↔
out1 (NandComp)=out1 (Inv )) in1 (C )=1∧in2 (C )=1
nand−composition(NA1 ,A1 ,I1 ) nand(NA1 )
ENIA, 24 de julho de 2009 Slide: 13/22
16. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
´
Arvore de Abstra¸˜es
co
Suposi¸˜o de subsistemas independentes.
ca
ENIA, 24 de julho de 2009 Slide: 14/22
17. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
Comportamento de um Componente Interno
Modelos de um componente abstrato
Um componente abstrato pode ser descrito pelos modelos:
estrutural interno, estrutural externo e comportamental.
Comportamento de um componente abstrato
Um componente abs- O comportamento de Assim, o comporta-
trato AC 1 e os compo- AC 1 ´ assumido como
e mento de C 1, C 2 e C 3
nentes internos C 1, C 2 correto devem ser assumidos
e C3 como corretos
Esse comportamento pode ser descrito formalmente pelo seguinte axioma:
ok(CA) → ok(C1 ) ∧ ok(C2 ) ∧ · · · ∧ ok(Cm ) (Axioma 1)
ENIA, 24 de julho de 2009 Slide: 15/22
18. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
Abordagem top-down para fazer Diagn´stico Hier´rquico
o a
Algoritmo de Diagn´stico Hier´rquico [Mozetiˇ, 1991]:
o a c
1 Verificar quais observa¸˜es dever˜o ser usadas em cada um dos
co a
n´
ıveis de abstra¸˜o.
ca
2 Para cada n´ i, de l at´ 0, sendo l o n´ mais alto que n˜o
ıvel e ıvel a
esconde todas as conex˜es com observa¸˜es, encontrar o
o co
conjunto de hip´teses de falha utilizando algum algoritmo de
o
MBD. Para cada componente abstrato CA n˜o envolvido em
a
nenhuma hip´tese de falha no n´ i, usar o Axioma 1 para o
o ıvel
n´ i − 1.
ıvel
3 Devolver as hip´teses de falhas encontradas no n´ 0.
o ıvel
ENIA, 24 de julho de 2009 Slide: 16/22
19. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
Exemplo do HMBD
ENIA, 24 de julho de 2009 Slide: 17/22
20. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
Exemplo do HMBD
ENIA, 24 de julho de 2009 Slide: 17/22
21. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
Exemplo do HMBD
ENIA, 24 de julho de 2009 Slide: 17/22
22. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
HMBD
Exemplo do HMBD
ENIA, 24 de julho de 2009 Slide: 17/22
23. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
MBSD+HMBD=HMBSD
Exemplo de Programa
Problema da Multa: Dados trˆs inteiros: (1) o valor de uma presta¸˜o, (2) um inteiro 1
e ca
ou 0 informando se deve ou n˜o ser aplicada uma multa de atraso e; (3) um inteiro 1 ou
a
0 informando se deve ou n˜o ser aplicada a multa de mora. O valor da presta¸˜o deve
a ca
ser calculado da seguinte forma: se multa for igual a 0, decremente 25 da presta¸˜o,
ca
sen˜o, incremente 50. Al´m disso, caso o valor da mora seja 0, decremente 5 do valor
a e
obtido no c´lculo da multa, caso contr´rio, incremente 15.
a a
1 public static void main(String[] args) {
2 int valor, multa, mora, valorTotal;
3 valor = Integer.parseInt(args[0]);
4 multa = Integer.parseInt(args[1]);
5 mora = Integer.parseInt(args[2]);
6 valorTotal = valor;
+ 7 if (multa == 1)
+ 8 valorTotal = valorTotal + 50;
+ 9 else valorTotal = valorTotal -25;
∗ 10 if (mora == 1)
∗ 11 valorTotal = valorTotal - 5;
∗ 12 else valorTotal = valorTotal + 15;
13 System.out.println(valorTotal);
14 }
(+), (*) Linhas que fazem parte do padr˜o elementar Sele¸˜o Alternativa [Bergin, 1999].
a ca
ENIA, 24 de julho de 2009 Slide: 18/22
24. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
MBSD+HMBD=HMBSD
Modelos do programa de exemplo
a) Modelo abstrato
valor = Integer.parse..
valor0
Assignment (C0) novoValor = valor
novoValor3
Assignment (C3)
multa = Integer.parse..
Seleção novoValor5
Alternativa Seleção
Assignment (C1) multa1 System.out.println(...
1 [7-9] (CA1) A l t e r n a t i v a novoValor11
Assignment (C16)
mora = Integer.parse.. 1 [10-12] (CA2)
mora2
Assignment (C2)
b) Modelo base
Conditional - C5
valor = Integer.parse.. novoValor = valor
valor0 novoValor3
C5 - Then
Assignment (C0) Assignment (C3)
novoValor’
novoValor + 50 aux6 novoValor += 50
multa = Integer.parse.. novoValor7
multa1 multa == 1 50 Adder (C6) Assignment (C7)
Assignment (C1) aux4
1 Expr (C4) condResult
mora = Integer.parse.. C5 - Else
Assignment (C2) mora2 mora == 1
novoValor’’
novoValor - 25 aux8 novoValor += -25 novoValor9
-25 Adder (C8) Assignment (C9)
1 Expr (C10)
aux10
novoValor5
Conditional - C11
C11 - Then
novoValor’’’
novoValor - 5 novoValor += -5
aux12 novoValor13
-5 Adder (C12) Assignment (C13)
System.out.println(...
novoValor11
condResult Assignment (C16)
C11 - Else
novoValor’’’’
novoValor + 15 novoValor += 15 novoValor15
aux14
15 Adder (C14) Assignment (C15)
ENIA, 24 de julho de 2009 Slide: 19/22
25. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Conclus˜es e trabalhos futuros
o
Nessa apresenta¸˜o mostramos:
ca
uma extens˜o do diagn´stico hier´rquico para encontrar falhas em
a o a
programas representados em diferentes n´
ıveis de abstra¸˜o,
ca
considerando componentes abstratos, tais como: fun¸˜es,
co
procedimentos e padr˜es elementares;
o
propriedades importantes para tornar o processo de depura¸˜o mais
ca
eficiente;
que a abordagem hier´rquica para depurar programas de aprendizes
a
serve para comunicar as falhas em uma linguagem de alto n´
ıvel
(considerando as abstra¸˜es).
co
Trabalhos futuros:
Finalizar a implementa¸˜o do algoritmo de MBSD + HMBD;
ca
Fazer uma avalia¸˜o atrav´s de um experimento com alunos.
ca e
ENIA, 24 de julho de 2009 Slide: 20/22
26. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Bibliografia
Benjamins, R. (1993).
Problem Solving Methods for Diagnosis.
PhD thesis, University of Amsterdam.
Bergin, J. (1999).
Patterns for selection.
http://csis.pace.edu/ bergin/patterns/Patternsv4.html.
de Kleer, J. and Williams, B. C. (1987).
Diagnosing multiple faults.
Artif. Intell., 32(1):97–130.
Delgado, K. V. (2005).
Diagn´stico baseado em modelos num sistema tutor inteligente para programa¸˜o
o ca
com padr˜es pedag´gicos.
o o
Disserta¸˜o de mestrado, Instituto de Matem´tica e Estat´
ca a ıstica.
Johnson, W. L. and Soloway, E. (1984).
Proust: Knowledge-based program understanding.
In ICSE ’84: Proc. of the 7th international conference on Software engineering,
pages 369–380, Piscataway, NJ, USA. IEEE Press.
ENIA, 24 de julho de 2009 Slide: 21/22
27. Introdu¸˜o
ca Fundamentos Solu¸˜o
ca Conclus˜es
o
Bibliografia
Mayer, W., Stumptner, M., Wieland, D., and Wotawa, F. (2002).
Observations and results gained from the jade project.
In Proc. of the 13th International Workshop on Principles of Diagnosis,
Semmering, Austria.
Mozetiˇ, I. (1991).
c
Hierarchical model-based diagnosis.
Int. J. Man-Mach. Stud., 35(3):329–362.
Reiter, R. (1987).
A theory of diagnosis from first principles.
Artif. Intell., 32(1):57–95.
Wenger, E. (1987).
Artificial intelligence and tutoring systems: Computational and cognitive
approaches to the communication of knowledge.
Morgan Kaufmann Press.
ENIA, 24 de julho de 2009 Slide: 22/22