Apresentação do trabalho de conclusão do curso de mestrado em Ciência da Computação feito no Instituto de Matemática e Estatística da USP, em Maio de 2010
Um tutor inteligente para o ensino/aprendizado de programaçã com técnicas de ...Wellington Pinheiro
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.
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...TestingUy
Expositor: Juliana Herbert
Resumen: Los profesionales que confían en el software para la ejecución de actividades cada vez más críticas y complejas también deben saber probarlo. Aunque estos profesionales no sean testers, enseñarles técnicas de testing aumenta su poder de análisis y de crítica, pues así es posible una investigación técnica cualificada. Esta investigación puede realizarse en profundidad si el profesional sabe utilizar su conocimiento de dominio de forma dirigida, buscando la realización de pruebas eficientes (que revelen defectos).
Esta charla presenta cuatro patterns para enseñar pruebas de software a no desarrolladores. Estos patterns se derivaron a partir de la experiencia de la proponente como instructora y profesora en cursos de testing en varios niveles de formación, para profesionales sin experiencia en desarrollo de software. Los patterns consideran el enfoque basado en el contexto, utilizando la estrategia basada en el riesgo, testing exploratorio y de caja negra. Para definir los patterns, fueron consideradas “patterns pedagógicos”, que captan el conocimiento de la práctica de la enseñanza y el aprendizaje y “testing patterns”. Los patterns que serán presentados en esta charla pueden ayudar a los profesores e instructores a enseñar el testing de software de manera significativa, cambiando el comportamiento y no solo aprendiendo conceptos.
Usando Dojos de Programação para o Ensino de TDDRamiro Luz
Apresentação de artigo academico no 23 Simpósio Brasileiro de Informática na Educação - SBIE, evento do Congresso Brasileiro de Informática na Educação - CBIE.
Um tutor inteligente para o ensino/aprendizado de programaçã com técnicas de ...Wellington Pinheiro
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.
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desar...TestingUy
Expositor: Juliana Herbert
Resumen: Los profesionales que confían en el software para la ejecución de actividades cada vez más críticas y complejas también deben saber probarlo. Aunque estos profesionales no sean testers, enseñarles técnicas de testing aumenta su poder de análisis y de crítica, pues así es posible una investigación técnica cualificada. Esta investigación puede realizarse en profundidad si el profesional sabe utilizar su conocimiento de dominio de forma dirigida, buscando la realización de pruebas eficientes (que revelen defectos).
Esta charla presenta cuatro patterns para enseñar pruebas de software a no desarrolladores. Estos patterns se derivaron a partir de la experiencia de la proponente como instructora y profesora en cursos de testing en varios niveles de formación, para profesionales sin experiencia en desarrollo de software. Los patterns consideran el enfoque basado en el contexto, utilizando la estrategia basada en el riesgo, testing exploratorio y de caja negra. Para definir los patterns, fueron consideradas “patterns pedagógicos”, que captan el conocimiento de la práctica de la enseñanza y el aprendizaje y “testing patterns”. Los patterns que serán presentados en esta charla pueden ayudar a los profesores e instructores a enseñar el testing de software de manera significativa, cambiando el comportamiento y no solo aprendiendo conceptos.
Usando Dojos de Programação para o Ensino de TDDRamiro Luz
Apresentação de artigo academico no 23 Simpósio Brasileiro de Informática na Educação - SBIE, evento do Congresso Brasileiro de Informática na Educação - CBIE.
Software educativo: Uma ferramenta a ser Explorada! Fabiana Zuliani
Este trabalho trará contribuições para a educação com base no uso das tecnologias digitais. Esse post é resultado da aula do dia 26/03, do componente curricular "TECNOLOGIAS DIGITAIS E EDUCAÇÃO (TDE)" na qual acontece na Universidade Federal da Fronteira Sul (Campus Chapecó)
Software Educativo e a Educação MatemáticaAdriana Sousa
Apresentação criada pela professora Adriana Sousa para o curso "Educação Matemática e o Uso das Tecnologias" oferecido pelo NTE16 - Vitória da Conquista -BA (2008) .
Em cursos tradicionais relacionados à Computação, o conhecimento teórico é primeiramente ensinado aos estudantes, os quais posteriormente devem lembrá-lo para resolverem problemas específicos. As grandes desvantagens dessa abordagem são a falta de motivação dos estudantes durante as aulas e o esquecimento rápido do conhecimento. Este artigo relata uma experiência no emprego de Aprendizagem Baseada em Problemas, como método pedagógico no ensino de Computação Ubíqua, no contexto do Programa Pós-Graduação em Ciência da Computação da Universidade Federal de São Carlos.
Diário de bordo da aula de Tecnologias Digitais e Educação, ministrada pelo Prof° Carlos França,na Universidade Federal da Fronteira Sul, no dia 26 de março de 2015.
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...João Henrique Berssanette
Apresentação da Defesa da Dissertação: ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASEADA EM AUSUBEL - do Programa de Mestrado em Ensino de Ciência e Tecnologia (PPGECT) - da Universidade Tecnológica Federal do Paraná (UTFPR) -
livro para professor da educação de jovens e adultos analisarem- do 4º ao 5º ano.
Livro integrado para professores da eja analisarem, como sugestão para ser adotado nas escolas que oferecem a educação de jovens e adultos.
Software educativo: Uma ferramenta a ser Explorada! Fabiana Zuliani
Este trabalho trará contribuições para a educação com base no uso das tecnologias digitais. Esse post é resultado da aula do dia 26/03, do componente curricular "TECNOLOGIAS DIGITAIS E EDUCAÇÃO (TDE)" na qual acontece na Universidade Federal da Fronteira Sul (Campus Chapecó)
Software Educativo e a Educação MatemáticaAdriana Sousa
Apresentação criada pela professora Adriana Sousa para o curso "Educação Matemática e o Uso das Tecnologias" oferecido pelo NTE16 - Vitória da Conquista -BA (2008) .
Em cursos tradicionais relacionados à Computação, o conhecimento teórico é primeiramente ensinado aos estudantes, os quais posteriormente devem lembrá-lo para resolverem problemas específicos. As grandes desvantagens dessa abordagem são a falta de motivação dos estudantes durante as aulas e o esquecimento rápido do conhecimento. Este artigo relata uma experiência no emprego de Aprendizagem Baseada em Problemas, como método pedagógico no ensino de Computação Ubíqua, no contexto do Programa Pós-Graduação em Ciência da Computação da Universidade Federal de São Carlos.
Diário de bordo da aula de Tecnologias Digitais e Educação, ministrada pelo Prof° Carlos França,na Universidade Federal da Fronteira Sul, no dia 26 de março de 2015.
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...João Henrique Berssanette
Apresentação da Defesa da Dissertação: ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASEADA EM AUSUBEL - do Programa de Mestrado em Ensino de Ciência e Tecnologia (PPGECT) - da Universidade Tecnológica Federal do Paraná (UTFPR) -
livro para professor da educação de jovens e adultos analisarem- do 4º ao 5º ano.
Livro integrado para professores da eja analisarem, como sugestão para ser adotado nas escolas que oferecem a educação de jovens e adultos.
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfenpfilosofiaufu
Caderno de Resumos XVIII Encontro de Pesquisa em Filosofia da UFU, IX Encontro de Pós-Graduação em Filosofia da UFU e VII Encontro de Pesquisa em Filosofia no Ensino Médio
proposta curricular para educação de jovens e adultos- Língua portuguesa- anos finais do ensino fundamental (6º ao 9º ano). Planejamento de unidades letivas para professores da EJA da disciplina língua portuguesa- pode ser trabalhado nos dois segmentos - proposta para trabalhar com alunos da EJA com a disciplina língua portuguesa.Sugestão de proposta curricular da disciplina português para turmas de educação de jovens e adultos - ensino fundamental. A proposta curricular da EJa lingua portuguesa traz sugestões para professores dos anos finais (6º ao 9º ano), sabendo que essa modalidade deve ser trabalhada com metodologias diversificadas para que o aluno não desista de estudar.
LIVRO MPARADIDATICO SOBRE BULLYING PARA TRABALHAR COM ALUNOS EM SALA DE AULA OU LEITURA EXTRA CLASSE, COM FOCO NUM PROBLEMA CRUCIAL E QUE ESTÁ TÃO PRESENTE NAS ESCOLAS BRASILEIRAS. OS ALUNOS PODEM LER EM SALA DE AULA. MATERIAL EXCELENTE PARA SER ADOTADO NAS ESCOLAS
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
Egito antigo resumo - aula de história.pdfsthefanydesr
O Egito Antigo foi formado a partir da mistura de diversos povos, a população era dividida em vários clãs, que se organizavam em comunidades chamadas nomos. Estes funcionavam como se fossem pequenos Estados independentes.
Por volta de 3500 a.C., os nomos se uniram formando dois reinos: o Baixo Egito, ao Norte e o Alto Egito, ao Sul. Posteriormente, em 3200 a.C., os dois reinos foram unificados por Menés, rei do alto Egito, que tornou-se o primeiro faraó, criando a primeira dinastia que deu origem ao Estado egípcio.
Começava um longo período de esplendor da civilização egípcia, também conhecida como a era dos grandes faraós.
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Depuração automática de programas baseada em modelos
1. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Depura¸˜o autom´tica de programas baseada em
ca a
modelos: uma abordagem hier´rquica para aux´
a ılio
ao aprendizado de programa¸˜o
ca
Wellington R. Pinheiro
Orientadora: Profa . Dra . Leliane Nunes de Barros
Departamento de Ciˆncia da Computa¸ao
e c˜
Instituto de Matem´tica e Estat´
a ıstica - Universidade S˜o Paulo
a
{wrp}@ime.usp.br
07 de Maio de 2010
IME, 07 de maio de 2010 Slide: 1
2. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conceitos Gerais
Sistema Tutor Inteligente para Programa¸˜o
ca
Sistema Tutor Inteligente [Wenger, 1987] (ITS - Intelligent Tutoring
System): ferramenta de aprendizado eletrˆnico que usa t´cnicas de
o e
Inteligˆncia Artificial.
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.
IME, 07 de maio de 2010 Slide: 2
3. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conceitos Gerais
Sistema Tutor Inteligente para Programa¸˜o
ca
Sistema Tutor Inteligente [Wenger, 1987] (ITS - Intelligent Tutoring
System): ferramenta de aprendizado eletrˆnico que usa t´cnicas de
o e
Inteligˆncia Artificial.
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.
IME, 07 de maio de 2010 Slide: 2
4. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conceitos Gerais
Sistema Tutor Inteligente para Programa¸˜o: exemplos
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
IME, 07 de maio de 2010 Slide: 3
5. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ 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¸ao e metas (inten¸oes) no
c˜ c˜ programa do aluno;
programa do aluno; n˜o requer uma biblioteca de planos
a
os planos de programa¸ao e as
c˜ e metas previamente definidos para
metas para um determinado a solu¸ao.
c˜
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¸ao para que o aluno
c˜
n˜o ´ poss´ detectar as falhas no
a e ıvel identifique os erros no programa.
programa do aluno.
IME, 07 de maio de 2010 Slide: 4
6. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ 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
IME, 07 de maio de 2010 Slide: 5
7. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conceitos Gerais
Depura¸˜o de Programas Baseada em Modelo
ca
Model Based Software
Debugging
(MBSD) [Mayer et al., 2002].
Ideia b´sica: fazer uma
a
simula¸˜o passo a passo do
ca
programa apontando as
instru¸˜es que justificam as
co
discrepˆncias observadas,
a
i.e., a diferen¸as entre as
c
sa´ıdas do programa e as
sa´ıdas esperadas (sintomas).
Pode ser usada por um ITS
para tentar entender as
diferen¸as entre as inten¸˜es
c co
do aluno e seu programa.
IME, 07 de maio de 2010 Slide: 6
8. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conceitos Gerais
Depura¸˜o de Programas Baseada em Modelo
ca
IME, 07 de maio de 2010 Slide: 7
9. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Motiva¸ao
c˜
Exemplo 1
Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um
u
programa que imprima esses n´meros em ordem crescente. Os casos de teste que
u
dever˜o ser usados para testar o seu programa solu¸ao s˜o:
a c˜ a
CT1 Entradas: 3, 5 Sa´
ıdas: 3, 5
CT2 Entradas: 5, 3 Sa´
ıdas 3, 5
CT3 Entradas: 3, 3 Sa´
ıdas: 3, 3
1 public class OrdemCrescente {
2 public static void crescente(int a, int b) {
3 int maior;
4 int menor;
5
6 if (a < b) {
7 maior = a;
8 menor = b;
9 } else {
10 maior = b;
11 menor = a;
12 }
13
14 writeInt("o menor numero e’", menor);
15 writeInt("o maior numero e’", maior);
16 }
17 }
IME, 07 de maio de 2010 Slide: 8
10. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Motiva¸ao
c˜
Exemplo 1
Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um
u
programa que imprima esses n´meros em ordem crescente. Os casos de teste que
u
dever˜o ser usados para testar o seu programa solu¸ao s˜o:
a c˜ a
CT1 Entradas: 3, 5 Sa´
ıdas: 3, 5
CT2 Entradas: 5, 3 Sa´
ıdas 3, 5
CT3 Entradas: 3, 3 Sa´
ıdas: 3, 3
1 public class OrdemCrescente {
2 public static void crescente(int a, int b) {
3 int maior;
4 int menor;
5
6 if (a < b) {
7 maior = a;
8 menor = b;
9 } else {
10 maior = b;
11 menor = a;
12 }
13
14 writeInt("o menor numero e’", menor);
15 writeInt("o maior numero e’", maior);
16 }
17 }
IME, 07 de maio de 2010 Slide: 8
11. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Motiva¸ao
c˜
Exemplo 1
Executando um depurador autom´tico de programas
a 6 if (a < b) {
baseado em modelos, para o programa do exemplo, 7 maior = a;
com o caso de teste CT1: 8 menor = b;
9 } else {
Entradas: 3, 5 Sa´
ıdas: 3, 5 10 maior = b;
11 menor = a;
s˜o obtidas as seguintes hip´teses de falha:
a o 12 }
13
14 writeInt(”o menor numero e’”, menor);
{6}, {7, 8}, {14, 15}, {8, 15}, {7, 14} 15 writeInt(”o maior numero e’”, maior);
Hip´tese
o Corre¸˜o
ca
{6} trocar o operador “>” pelo operador “<” na Linha 6
{7, 8} inverter os valores nas atribui¸oes das Linhas 7 e 8
c˜
{14, 15} inverter somente os nomes das vari´veis impressas nas Linhas 14 e
a
15
{8, 15} na Linha 8 mudar para menor = a e na Linha 15, imprimir o valor
de b
{7, 14} na Linha 7 mudar para maior = b e na Linha 14, imprimir o valor
de a
IME, 07 de maio de 2010 Slide: 9
12. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Motiva¸ao
c˜
Exemplo 1
Executando um depurador autom´tico de programas
a 6 if (a < b) {
baseado em modelos, para o programa do exemplo, 7 maior = a;
com o caso de teste CT1: 8 menor = b;
9 } else {
Entradas: 3, 5 Sa´
ıdas: 3, 5 10 maior = b;
11 menor = a;
s˜o obtidas as seguintes hip´teses de falha:
a o 12 }
13
14 writeInt(”o menor numero e’”, menor);
{6}, {7, 8}, {14, 15}, {8, 15}, {7, 14} 15 writeInt(”o maior numero e’”, maior);
Hip´tese
o Corre¸˜o
ca
trocar o operador “>” pelo operador “<” na Linha 6
{6}
{7, 8} inverter os valores nas atribui¸oes das Linhas 7 e 8
c˜
inverter somente os nomes das vari´veis impressas nas Linhas 14 e
a
{14, 15} 15
{8, 15} na Linha 8 mudar para menor = a e na Linha 15, imprimir o valor
de b
{7, 14} na Linha 7 mudar para maior = b e na Linha 14, imprimir o valor
de a
IME, 07 de maio de 2010 Slide: 9
13. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Motiva¸ao
c˜
Limita¸˜es do MBSD para o Aprendizado de Programa¸˜o
co ca
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
Informar as linhas do programa possivelmente falhas pode n˜o a
ser suficiente para que um aluno iniciante consiga corrigir o seu
programa.
Um aprendiz de programa¸˜o n˜o tem conhecimento suficiente
ca a
para fazer predi¸˜es a respeito do comportamento do programa
co
e fornecer os valores esperados para as vari´veis do programa,
a
durante a discrimina¸˜o de hip´teses.
ca o
IME, 07 de maio de 2010 Slide: 10
14. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Objetivo
Depura¸˜o Hier´rquica de Programas (HPD)
ca a
O objetivo desse trabalho ´ estender a t´cnica MBSD com o uso do
e e
Diagn´stico Hier´rquico Baseado em Modelos (diagn´stico
o a o
hier´rquico), de maneira que:
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 de alto
e
n´
ıvel, e n˜o somente atrav´s de linhas do programa.
a e
O tutor comunique um conjunto menor de hip´teses de falha
o
menor a cada itera¸˜o.
ca
IME, 07 de maio de 2010 Slide: 11
15. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Objetivo
Depura¸˜o Hier´rquica de Programas (HPD)
ca a
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¸oes a respeito do comportamento
c˜
esperado para o componente abstrato);
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.
IME, 07 de maio de 2010 Slide: 12
16. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Organiza¸˜o
ca
Fundamentos
Diagn´stico Baseado em Modelos
o
Diagn´stico Hier´rquico Baseado em Modelos
o a
IME, 07 de maio de 2010 Slide: 13
17. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
MBD
MBD: exemplo
A
3 X
M1
F
B
A1 12
2 Y
C
2
D
M2
3
G
A2 12
Z
E
M3
3
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˜
adder(x)∧ok(x)→add(in1 (x),in2 (x),out1 (x))
in1 (M1 )=3
multiplier(x)∧ok(x)→mult(in1(x),in2 (x),out1 (x))
out1 (M1 )=in1 (A1 ) in2 (M1 )=2
multiplier(M1 )
out1 (M2 )=in2 (A1 ) in1 (M2 )=2
multiplier(M2 )
out1 (M2 )=in1 (A2 ) in2 (M2 )=3
multiplier(M3 )
out1 (M3 )=in2 (A2 ) in1 (M3 )=2
adder(A1 )
in2 (M3 )=3
adder(A2 )
IME, 07 de maio de 2010 Slide: 14
18. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
MBD
MBD: exemplo
A A
3 X 3 X
M1 M1
10
F F
B
A1 12 A1 10
B
2 Y 2 Y
C C
2
D
M2 2 M2
3 D
G
3 12
G
A2 12 A2 10
Z
E
M3 M3
E
3 3
{{M1 },{M2 },{A1 }} {{M1 },{M3 },{A1 },{A2 }}
Algoritmo de Reiter
{M1, M2, A1}
M3 M1 M2 A1
M1
M2
A1 @ {M1, M3, A1, A2} @
A2
M1 M3 A1 A2
X @ X @
F deveria ser G deveria ser
12 mas é 10 10 mas é 12
Hip´teses de falha:
o {{M1 },{A1 },{M2 ,M3 },{M2 ,A2 }}
IME, 07 de maio de 2010 Slide: 15
19. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
HMBD
Diagn´stico Hier´rquico Baseado em Modelo
o a
Hierarchical Model Based Diagnosis (HMBD) [Mozetiˇ, 1991].
c
Usada para se obter melhor desempenho que a t´cnica de MBD
e
tradicional.
A descri¸˜o do sistema ´ feita em diferentes n´
ca e ıveis de
abstra¸˜o.
ca
Utiliza abstra¸oes para representar componentes ou o
c˜
comportamento do sistema (abstra¸oes estruturais e
c˜
comportamentais).
Utiliza a t´cnica de MBD tradicional para encontrar a solu¸˜o a
e ca
cada n´ de abstra¸˜o.
ıvel ca
IME, 07 de maio de 2010 Slide: 16
21. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
HMBD
´
Arvore de Abstra¸˜es
co
Suposi¸˜o de subsistemas independentes.
ca
IME, 07 de maio de 2010 Slide: 18
22. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ 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)
IME, 07 de maio de 2010 Slide: 19
23. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
HMBD
Algoritmo HMBD
O algoritmo de Diagn´stico Hier´rquico [Mozetiˇ, 1991], ´
o a c e
composto dos seguintes passos:
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
IME, 07 de maio de 2010 Slide: 20
24. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
HMBD
Algoritmo HMBD
IME, 07 de maio de 2010 Slide: 21
25. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
HMBD
Algoritmo HMBD
IME, 07 de maio de 2010 Slide: 21
26. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
HMBD
Algoritmo HMBD
IME, 07 de maio de 2010 Slide: 21
27. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
HMBD
Algoritmo HMBD
IME, 07 de maio de 2010 Slide: 21
28. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Organiza¸˜o
ca
Dr. Java Pro
Caracter´
ısticas
Componente abstrato de programa¸˜o
ca
Modelo hier´rquico de um programa
a
Algoritmo HPD
IME, 07 de maio de 2010 Slide: 22
29. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Caracter´
ısticas
Depura¸˜o Hier´rquica de Programas
ca a
O Hierarchical Program Debugging (HPD) tem as seguintes
caracter´
ısticas:
Extens˜o da t´cnica de MBSD que utiliza o diagn´stico
a e o
hier´rquico baseado em modelos para depurar programas.
a
Permite representar o programa do aluno em diversos n´ ıveis de
abstra¸˜o, sendo fun¸˜es, procedimentos e padr˜es elementares
ca co o
representados como componentes abstratos.
Possibilita discriminar hip´teses em v´rios n´
o a ıveis de abstra¸˜o,
ca
atrav´s das seguintes funcionalidades:
e
informar valores para vari´veis
a
refinar componente abstrato
IME, 07 de maio de 2010 Slide: 23
30. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Componente abstratro de programa¸ao
c˜
Constru¸˜o de um componente abstrato em programas
ca
a) Modelo com o componente representando
o padrão de Seleção Simples
Seleção Simples
a < m
componente
de seleção
b) Modelo base gerado para o
trecho de programa apresentado
condição a < m
Conditional
componente
de seleção
ação 1 ação 2 ação n
c) Padrão de Seleção Simples
aplicado usada em um programa
if (a < m) {
ação 1;
ação 2;
...
ação n;
}
IME, 07 de maio de 2010 Slide: 24
31. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Modelo hier´rquico de um programa
a
Exemplo 1
Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um
u
programa que imprima esses n´meros em ordem crescente. Os casos de teste que
u
dever˜o ser usados para testar o seu programa solu¸ao s˜o:
a c˜ a
CT1 Entradas: 3, 5 Sa´
ıdas: 3, 5
CT2 Entradas: 5, 3 Sa´
ıdas 3, 5
CT3 Entradas: 3, 3 Sa´
ıdas: 3, 3
1 public class OrdemCrescente {
2 public static void crescente(int a, int b) {
3 int maior;
4 int menor;
5
6 if (a < b) {
7 maior = a;
8 menor = b;
9 } else {
10 maior = b;
11 menor = a;
12 }
13
14 writeInt("o menor numero e’", menor);
15 writeInt("o maior numero e’", maior);
16 }
17 }
IME, 07 de maio de 2010 Slide: 25
32. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Modelo hier´rquico de um programa
a
Modelos do Exemplo 1
a) Modelo abstrato
a menor1 writeInt("menor", menor)
in1 Seleção out1 in1 Assignment (C6) out
Alternativa
b maior1 writeInt("maior", maior)
(CA1)
in2 out2 in1 Assignment (C7) out
b) Modelo base
a in1
a < b
Conditional - C1
b
Expr (C0) C1-Then
in2
a’ maior = a maior2
result
in1 Assign (C2) out
aux0 condResult
b’ menor = b menor3
menor1 writeInt("menor", menor)
in1 Assign (C3) out
in1 out1 in1 Assign (C6) out
maior1 writeInt("maior", maior)
in2
C1-Else Assign (C7)
out2 in1 out
a’’ maior = b maior4
in1 Assign (C4) out
b’’ menor = a menor5
in1 Assign (C5) out
IME, 07 de maio de 2010 Slide: 26
33. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Modelo hier´rquico de um programa
a
Modelos do Exemplo 1
Modelo estrutural interno
composit(C , E , Cond) →
in1 (C ) = in1 (E ) ∧ in2 (C ) = in2 (E )∧
in1 (C ) = in1 (Cond) ∧ in2 (C ) = in2 (Cond)∧
result(E ) = aux0 ∧ condResult(C ) = aux0∧
condResult(Cond) = aux0∧
out1 (C ) = out1 (Cond) ∧ out2 (C ) = out2 (Cond)
composit(CA1, C 0, C 1)
Modelo comportamental
cond(C ) ∧ ok(C ) → ∃E , Cond [
composit(C , E , Cond)∧
ok(E ) ∧ ok(Cond) ]
cond(CA1)
Modelo estrutural externo
in1 (CA1) = a
in2 (CA1) = b
out1 (CA1) = menor 1
out2 (CA1) = maior 1
IME, 07 de maio de 2010 Slide: 27
34. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Algoritmo HPD
Depura¸˜o Hier´rquica de Programas (HPD)
ca a
O algoritmo proposto utiliza uma abordagem inspirada no trabalho
de Mozetiˇ (1991), com as seguintes extens˜es:
c o
A discrimina¸˜o de hip´teses pode acontecer durante o pro-
ca o
cesso de diagn´stico hier´rquico.
o a
A falha pode ser encontrada e solucionada em qualquer n´ ıvel
de abstra¸˜o.
ca
N˜o ´ necess´rio refinar todos os componentes abstratos de um
a e a
n´ i para um n´ i − 1, que sejam considerados hip´teses
ıvel ıvel o
de falha.
Uma vez que um componente abstrato tem seu comporta-
mento definido como funcionando corretamente, ele n˜o pre-
a
cisar´ ser refinado at´ o final do processo de diagn´stico.
a e o
IME, 07 de maio de 2010 Slide: 28
35. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Algoritmo HPD
Tela principal do Dr. Java Pro
.
Vamos selecionar o Caso de Teste 1 para fazer a depura¸ao.
c˜
IME, 07 de maio de 2010 Slide: 29
36. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Algoritmo HPD
Hip´teses de falha no Dr. Java Pro
o
Nesse ponto, o aluno deve escolher um caminho de depura¸ao para seguir.
c˜
IME, 07 de maio de 2010 Slide: 30
37. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Algoritmo HPD
Alguns poss´
ıveis caminhos de depura¸˜o
ca
{SeleçãoAlternativa} {15,14}
Informar valores para Informar valores
{SeleçãoAlternativa} para {15,14}
menor = 3 menor = 3
maior = 5 maior = 5
{SeleçãoAlternativa}
Refinamento do
componente abstrato
de SeleçãoAlternativa
{6}, {7,8}
Informar Informar
valores valores
para {6} para {7,8}
a<b = a<b = menor=3
Falso Verdadeiro maior=5
{6} {7,8}
Vamos continuar a depura¸ao escolhendo a hip´tese de falha SelecaoAlternativa e
c˜ o
informar valores para as vari´veis.
a
IME, 07 de maio de 2010 Slide: 31
38. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Algoritmo HPD
Informando valores para uma hip´tese de falha
o
Ap´s informar os valores para as vari´veis, o depurador devolve a hip´tese de falha:
o a o
{SelecaoAlternativa}.
Vamos refinar o componente abstrato SelecaoAlternativa.
IME, 07 de maio de 2010 Slide: 32
39. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Algoritmo HPD
Refinando um componente abstrato
Ap´s o refinamento do componente abstrato SelecaoAlternativa, o depurador devolve as
o
seguintes hip´teses de falha:
o
{6},{7,8}
Vamos continuar o processo de depura¸ao informando valores para as vari´veis
c˜ a
relacionadas a hip´tese {6}.
` o
IME, 07 de maio de 2010 Slide: 33
40. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Algoritmo HPD
Informando valores para uma condi¸˜o l´gica
ca o
Ap´s informar o valor esperado condi¸ao na Linha 6, o depurador devolve somente a
o c˜
hip´tese de falha: {6}.
o
Nesse momento, o aluno deveria ser capaz de reconhecer que a falha est´ no operador
a
l´gico da express˜o na Linha 6 e realizar a corre¸ao adequada.
o a c˜
IME, 07 de maio de 2010 Slide: 34
41. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Avalia¸˜o do uso da ferramenta
ca
A avalia¸˜o foi feita com um grupo de alunos em duas aulas
ca
pr´ticas.
a
Os problemas de programa¸˜o foram classificados como:
ca
Resolva e Modifique.
A intera¸˜o dos alunos com a ferramenta Dr. Java Pro foram
ca
armazenadas em logs, a partir dos quais foram feitas nossas
an´lises.
a
IME, 07 de maio de 2010 Slide: 35
42. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Problema P1: C´lculo do n´mero par
a u
Nome: C´lculo do n´mero par
a u
Enunciado: Dado um n´mero inteiro n, calcule n/2 se n for par ou (n-3)/2,
u
caso contr´rio
a
Tipo: Resolva
Identificador Entradas Sa´ ıdas
CT1 10 5
Casos de teste: CT2 1 -1
CT3 0 0
CT4 23 10
Classe: CalculoPar
Justificativa: Esse problema tem como objetivo introduzir ao aluno a ferramenta
Dr. Java Pro e os conceitos de depura¸ao autom´tica. Nesse
c˜ a
primeiro contato, devem ser apresentados: o conceito de casos de
teste e sua aplica¸ao; os conceitos de hip´teses de falha; a tarefa
c˜ o
de discrimina¸ao de hip´teses que envolve informar valores para
c˜ o
vari´veis e refinamento de componentes abstratos.
a
IME, 07 de maio de 2010 Slide: 36
43. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Programas escritos pelos alunos para solucionar o
Problema P1
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 0) if (n % 2 == 0) if (n % 2 != 0)
resultado = n/2; resultado = n/2; resultado = n/2;
else else else
resultado = (n-3)/2; resultado = (n-2)/2; resultado = n/2;
return resultado return resultado return resultado
} } }
P1a P1b P1c
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 1) if (n % 2 == 0) if (n % 2 == 0)
resultado = (n-3)/2; resultado = n/2; resultado = n/2;
else else else
resultado = n/2; resultado = n/2; resultado = (n-3)/2;
return resultado return resultado return resultado
} } }
P1d P1e P1f
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 0) if (n % 2 == 1) if (n % 2 != 1)
resultado = (n-3)/2; resultado = (n-3)/2; resultado = n/2;
else else else
resultado = n/2; resultado = n/2; resultado = (n-3)/2;
return resultado return resultado return resultado
} } }
P1g P1h P1i
IME, 07 de maio de 2010 Slide: 37
44. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Sequˆncia de modifica¸˜es nos programas utilizados pelos
e co
alunos durante a solu¸˜o do Problema P1.
ca
Versão 1 Versão 2 Versão 3
8
P1a P1a P1a
1 5
P1b P1b P1b
6
P1c 1 P1c P1c
2
2
P1d 6 P1d P1d
1
1
P1e 1 P1e P1e
1 4
9
P1f P1f P1f
1
P1g 1 P1g P1g
P1h P1h P1h
P1i P1i P1I
IME, 07 de maio de 2010 Slide: 38
45. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Sequˆncia de programas: P1a →5 P1c →4 P1g
e
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 0) if (n % 2 == 0) if (n % 2 != 0)
resultado = n/2; resultado = n/2; resultado = n/2;
else else else
resultado = (n-3)/2; resultado = (n-2)/2; resultado = n/2;
return resultado return resultado return resultado
} } }
P1a P1b P1c
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 1) if (n % 2 == 0) if (n % 2 == 0)
resultado = (n-3)/2; resultado = n/2; resultado = n/2;
else else else
resultado = n/2; resultado = n/2; resultado = (n-3)/2;
return resultado return resultado return resultado
} } }
P1d P1e P1f
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 0) if (n % 2 == 1) if (n % 2 != 1)
resultado = (n-3)/2; resultado = (n-3)/2; resultado = n/2;
else else else
resultado = n/2; resultado = n/2; resultado = (n-3)/2;
return resultado return resultado return resultado
} } }
P1g P1h P1i
IME, 07 de maio de 2010 Slide: 39
46. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Sequˆncia de programas: P1c →6 P1g
e
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 0) if (n % 2 == 0) if (n % 2 != 0)
resultado = n/2; resultado = n/2; resultado = n/2;
else else else
resultado = (n-3)/2; resultado = (n-2)/2; resultado = n/2;
return resultado return resultado return resultado
} } }
P1a P1b P1c
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 1) if (n % 2 == 0) if (n % 2 == 0)
resultado = (n-3)/2; resultado = n/2; resultado = n/2;
else else else
resultado = n/2; resultado = n/2; resultado = (n-3)/2;
return resultado return resultado return resultado
} } }
P1d P1e P1f
public int calcula(int n) { public int calcula(int n) { public int calcula(int n) {
int resultado = 0; int resultado = 0; int resultado = 0;
if (n % 2 != 0) if (n % 2 == 1) if (n % 2 != 1)
resultado = (n-3)/2; resultado = (n-3)/2; resultado = n/2;
else else else
resultado = n/2; resultado = n/2; resultado = (n-3)/2;
return resultado return resultado return resultado
} } }
P1g P1h P1i
IME, 07 de maio de 2010 Slide: 40
47. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Problema P2: C´lculo da Mediana
a
Nome: C´lculo da mediana
a
Enunciado: Dados 3 n´meros inteiros, determinar um inteiro n, tal que ni ≤
u
n ≤ nj , sendo ni e nj os outros inteiros dados (lidos). Encontre e
corrija os erros no programa fornecido.
Tipo: Modifique
Identificador Entradas Sa´
ıdas
CT1 1, 2, 3 2
CT2 1, 3, 2 2
CT3 2, 1, 3 2
CT4 2, 3, 1 2
CT5 3, 1, 2 2
Casos de teste: CT6 3, 2, 1 2
CT7 9, -100, 10 9
CT8 12, 12, 5 12
CT9 12, 5, 12 12
CT10 5, 12, 12 12
CT11 12, 12, 12 12
CT12 0, -1, 1 0
Classe: Mediana
Justificativa: Esse problema tem como objetivo fixar os conceitos de padr˜es de
o
sele¸ao. O problema tamb´m ´ um bom exerc´
c˜ e e ıcio para utilizar a
funcionalidade de refinamento de componentes abstratos do Dr.
Java Pro, visto que cada sele¸ao aninhada ´ representada por um
c˜ e
componente abstrato.
IME, 07 de maio de 2010 Slide: 41
48. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Esqueleto do programa para o Problema da Mediana
1 public class Mediana {
2 /** ...
14 public int encontraMediana(int a, int b, int c) {
15 int resultado;
16 if (a < b) {
17 if (b < c) {
18 if (a < c)
19 resultado = c;
20 else
21 resultado = a;
22 } else {
23 resultado = b;
24 }
25 } else {
26 if (c > b)
27 resultado = b;
28 else if (c > a)
29 resultado = a;
30 else
31 resultado = c;
32 }
33 return resultado;
34 }
IME, 07 de maio de 2010 Slide: 42
49. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Sequˆncia de modifica¸˜es nos programas utilizados pelos
e co
alunos durante a solu¸˜o do Problema P2.
ca
P2a Modifica¸ao da condi¸ao: troca do operador da linha 16 de “<” para
c˜ c˜
“>”.
P2b Modifica¸ao da condi¸ao: troca do operador da linha 17 de “<” para
c˜ c˜
“>”.
P2c Invers˜o dos blocos: Linhas 19 e 23.
a
P2d [Programa correto]. Modifica¸ao da condi¸ao: troca do operador “<”
c˜ c˜
da Linha 17 para “>” e troca do operador “>” da linha 26 para “<”.
Versão 1 Versão 2 Versão 3
P2a P2a
1
3 P2b 1 P2b
7
Programa Mediana 2
3
P2c P2c
2
1
P2d P2d
IME, 07 de maio de 2010 Slide: 43
50. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Sequˆncia de programas: Mediana →3 P2b →3 P2d
e
16 if (a < b) { 16 if (a < b) { 16 if (a < b) {
17 if (b < c) { 17 if (b > c) { 17 if (b > c) {
18 if (a < c) 18 if (a < c) 18 if (a < c)
19 resultado = c; 19 resultado = c; 19 resultado = c;
20 else 20 else 20 else
21 resultado = a; 21 resultado = a; 21 resultado = a;
22 } else { 22 } else { 22 } else {
23 resultado = b; 23 resultado = b; 23 resultado = b;
24 } 24 } 24 }
25 } else { 25 } else { 25 } else {
26 if (c > b) 26 if (c > b) 26 if (c < b)
27 resultado = b; 27 resultado = b; 27 resultado = b;
28 else if (c > a) 28 else if (c > a) 28 else if (c > a)
29 resultado = a; 29 resultado = a; 29 resultado = a;
30 else 30 else 30 else
31 resultado = c; 31 resultado = c; 31 resultado = c;
32 } 32 } 32 }
33 return resultado; 33 return resultado; 33 return resultado;
Programa Mediana P2b P2d
IME, 07 de maio de 2010 Slide: 44
51. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Sequˆncia de programas: Mediana →2 P2c →2 P2d
e
16 if (a < b) { 16 if (a < b) { 16 if (a < b) {
17 if (b < c) { 17 if (b < c) { 17 if (b > c) {
18 if (a < c) 18 if (a < c) 18 if (a < c)
19 resultado = c; 19 resultado = b; 19 resultado = c;
20 else 20 else 20 else
21 resultado = a; 21 resultado = a; 21 resultado = a;
22 } else { 22 } else { 22 } else {
23 resultado = b; 23 resultado = c; 23 resultado = b;
24 } 24 } 24 }
25 } else { 25 } else { 25 } else {
26 if (c > b) 26 if (c > b) 26 if (c < b)
27 resultado = b; 27 resultado = b; 27 resultado = b;
28 else if (c > a) 28 else if (c > a) 28 else if (c > a)
29 resultado = a; 29 resultado = a; 29 resultado = a;
30 else 30 else 30 else
31 resultado = c; 31 resultado = c; 31 resultado = c;
32 } 32 } 32 }
33 return resultado; 33 return resultado; 33 return resultado;
Programa Mediana P2c P2d
IME, 07 de maio de 2010 Slide: 45
52. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Resultados das an´lises experimentais
a
As an´lises sugerem que o uso da ferramenta Dr. Java Pro auxiliou os
a
alunos na detec¸˜o e corre¸˜o dos problemas de programa¸˜o
ca ca ca
propostos, dadas as seguintes evidˆncias:
e
1 tradicionalmente, apenas 30% dos alunos dessa disciplina
conseguem acertar integralmente uma quest˜o equivalente ao
a
Problema P2 em prova escrita;
2 56% dos alunos acertaram os problemas P2 e 90% acertaram o
Problema P1.
Problema P1: dos 30 alunos avaliados, 18 seguiram a orienta¸˜o do
ca
depurador, obtendo sucesso na corre¸˜o de seus programas, ou seja,
ca
60% dos alunos seguiram um racioc´ l´gico na depura¸˜o de seus
ınio o ca
programas, ao inv´s de fazer modifica¸oes aleat´rias.
e c˜ o
IME, 07 de maio de 2010 Slide: 46
53. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Avalia¸ao do Dr. Java Pro
c˜
Resultados das an´lises experimentais
a
Problema P2: dos 16 alunos avaliados, 7 seguiram a orienta¸˜o do
ca
depurador, obtendo sucesso na corre¸˜o de seus programas, ou seja,
ca
44% dos alunos seguiram um racioc´ l´gico na depura¸˜o de seus
ınio o ca
programas.
Com base na avalia¸˜o feita pelos alunos sobre a ferramenta, a
ca
maioria acredita que a ferramenta ´ ´til para o aprendizado e que ela
eu
deveria ser usada mais frequentemente em disciplinas de Introdu¸˜o `
ca a
Programa¸˜o.
ca
IME, 07 de maio de 2010 Slide: 47
54. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conclus˜es e trabalhos futuros
o
Conclus˜es
o
Foi proposta uma extens˜o da t´cnica de diagn´stico hier´rquico para
a e o a
encontrar falhas em programas representados em diferentes n´
ıveis de
abstra¸˜o, considerando componentes abstratos, tais como: fun¸oes,
ca c˜
procedimentos e padr˜es elementares.
o
O diagn´stico hier´rquico fornece uma forma de comunicar aos alunos
o a
as falhas de um programa em termos de componentes abstratos, isto
´, em uma linguagem de alto n´
e ıvel.
A avalia¸˜o preliminar da ferramenta com um grupo de alunos de
ca
uma disciplina de Introdu¸˜o ` Programa¸˜o mostrou que um n´mero
ca a ca u
razo´vel de alunos foi capaz de compreender as hip´teses de falha
a o
geradas pelo depurador autom´tico e usar essas informa¸oes para
a c˜
corrigir seus programas.
IME, 07 de maio de 2010 Slide: 48
55. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conclus˜es e trabalhos futuros
o
Trabalhos futuros
Trabalhos futuros referentes `:
a
Implementa¸˜o
ca
Recurs˜o, uso de m´ltiplas classes, vetores e matrizes e uso de
a u
objetos.
T´cnicas de MBD
e
Modelo de falhas, explora¸˜o de falhas estruturais, modelagem
ca
de vari´veis do sistema e uso de modelos com probabilidades.
a
Avalia¸˜o pedag´gica mais detalhada.
ca o
IME, 07 de maio de 2010 Slide: 49
56. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conclus˜es e trabalhos futuros
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¸ao
o c˜
com padr˜es pedag´gicos.
o o
Disserta¸ao de mestrado, Instituto de Matem´tica e Estat´
c˜ 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.
IME, 07 de maio de 2010 Slide: 50
57. Introdu¸ao
c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental
c˜ Conclus˜es
o
Conclus˜es e trabalhos futuros
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.
IME, 07 de maio de 2010 Slide: 51