autora: thais castro orientador: prof. hugo fuks uma abordagem sistematizada para aprendizagem de...
TRANSCRIPT
Autora: Thais CastroAutora: Thais CastroOrientador: Prof. Hugo FuksOrientador: Prof. Hugo Fuks
Uma Abordagem Sistematizada para Aprendizagem de
Programação em Grupo
ContextoContexto
As aulas de Introdução à Computação na UFAM se baseiam no modelo tradicional...
Seguidas de práticas de laboratório...
Os professores queriam que fossem como abaixo
em algum outro lugar...
Contexto – Prática AdotadaContexto – Prática Adotada
• A dificuldade em saber quando intervir.A dificuldade em saber quando intervir.
O ProblemaO Problema
As oportunidades de intervenção na As oportunidades de intervenção na aprendizagem de programação em grupo aprendizagem de programação em grupo são ampliadas com o uso de uma são ampliadas com o uso de uma abordagem sistematizada de abordagem sistematizada de acompanhamento.acompanhamento.
A HipóteseA Hipótese
A TeseA Tese
Generalizaçãopara outraatividade
colaborativa
Esquemaprogressivopara adoçãode práticas
colaborativasMétodo de
Colaboração
Sistematizaçãoda Aprendizagemde Programação
em Grupo
Tecnologias deapoio
Ambientes CSCLFerramentas,
LMSs
Ensino deProgramação
EpistemologiaGenética
Programaçãoem Grupo
PressupostoPedagógico
A Tese – Elaboração do 1º. EixoA Tese – Elaboração do 1º. Eixo
Generalizaçãopara outraatividade
colaborativa
Esquemaprogressivopara adoçãode práticas
colaborativasMétodo de
Colaboração
Sistematizaçãoda Aprendizagemde Programação
em Grupo
Tecnologias deapoio
Ambientes CSCLFerramentas,
LMSs
Ensino deProgramação
EpistemologiaGenética
Programaçãoem Grupo
PressupostoPedagógico
Pressuposto PedagógicoPressuposto Pedagógico
Programação em Grupo
Ensino de Programação
Epistemologia Genética (Piaget): estudo dos mecanismos do aumento dos
conhecimentos.
Pair programmi
ng
Jogos
Animação de
códigos
Times de desenvolvimen
to
Solução de
problemas
Programação em GrupoProgramação em Grupo
Métodos Ágeis (pair programming) Times de desenvolvimento
Ensino de ProgramaçãoEnsino de Programação
Animação de Códigos / Algoritmos
Ensino de ProgramaçãoEnsino de Programação
Solução de problemas
John Mason, baseado em Polya
Ensino de ProgramaçãoEnsino de Programação
Jogos
A Tese – Elaboração do 1º. EixoA Tese – Elaboração do 1º. Eixo
Epistemologia genética
Fases do desenvolvimento da cognição
Necessidade de interagir com os pares
A abstração precisa ser mais desenvolvida
Ensino de programação
As atividades precisam ser prazerosas
O processo de solução de problemas precisa ser explícito
Pressupõe-se que cada passo para a solução tem relação com um estágio do raciocínio
Apoio de ferramentas computacionais
Ênfase nos processos de solução de problemas
Programação em grupo
Times de desenvolvimento para o contexto de aprendizagem
Algo como pair programming para direcionar os alunos
• Uso do AAEP e entrevistas seguindo o Uso do AAEP e entrevistas seguindo o método clínico piagetianométodo clínico piagetiano– Elaboração de trabalhos práticos com registros Elaboração de trabalhos práticos com registros
parciais da soluçãoparciais da solução– Análise de correlações estatísticas para Análise de correlações estatísticas para
identificar os alunos que estavam acima ou identificar os alunos que estavam acima ou abaixo do corteabaixo do corte
• Na teseNa tese– As modificações foram agrupadas de acordo As modificações foram agrupadas de acordo
com nível de reflexão envolvidocom nível de reflexão envolvido– Desenvolvimento do AcKnowDesenvolvimento do AcKnow
Evolução dos Códigos na Evolução dos Códigos na Aprendizagem de ProgramaçãoAprendizagem de Programação
• Tipos de ModificaçãoTipos de Modificação– Sintáticas: visam tornar o código interpretável, Sintáticas: visam tornar o código interpretável,
processo que sugere correções em intervalos processo que sugere correções em intervalos menoresmenores
– Semânticas: afetam diretamente a avaliação Semânticas: afetam diretamente a avaliação da função, resultando em uma saída diferente da função, resultando em uma saída diferente da esperadada esperada
– Refactoring: refinamentos nas soluções Refactoring: refinamentos nas soluções visando melhor legibilidade no códigovisando melhor legibilidade no código
Evolução dos Códigos na Evolução dos Códigos na Aprendizagem de ProgramaçãoAprendizagem de Programação
O funcionamento do AcKnowO funcionamento do AcKnow
Evolução dos Códigos na Evolução dos Códigos na Aprendizagem de ProgramaçãoAprendizagem de Programação
Histórico da Aluna Jane DoeHistórico da Aluna Jane Doe
Evolução dos Códigos na Evolução dos Códigos na Aprendizagem de ProgramaçãoAprendizagem de Programação
Versão
Intervalo Categoria
1 0 Sintática
2 Mesmo minuto Sintática
3 1 minuto Sintática
4 1 minuto Sintática
5 8 minutos Refactoring
6 2 horas e 51 minutos Semântica
7 44 horas Refactoring
A Tese – Elaboração do 2º. EixoA Tese – Elaboração do 2º. Eixo
Ferramentas, LMS, etc.Ferramentas, LMS, etc.
Ambientes CSCL
Linguagens de
representação
Sistemas multiagente
Métodos de Avaliação de Ambientes
Tecnologias de Apoio
Ambientes CSCLAmbientes CSCL
O que é necessário para o contexto da programação?
Configuração e adaptação
Estrutura adicional de
acompanhamento das
interações
Uso de ferramentas de coordenação para facilitar
a intervenção
Ferramentas para Apoiar a Ferramentas para Apoiar a Programação em GrupoProgramação em Grupo
RAPTOR
Apóiam as atividades relacionadas à aprendizagem de programação em grupo:
Construção de
algoritmos
Ferramentas para Apoiar a Ferramentas para Apoiar a Programação em GrupoProgramação em Grupo
Scratch
Apóiam as atividades relacionadas à aprendizagem de programação em grupo:
Entendimento de construção de algortimos
Ferramentas para Apoiar a Ferramentas para Apoiar a Programação em GrupoProgramação em Grupo
ScratchJeCo
Apóiam as atividades relacionadas à aprendizagem de programação em grupo:
Visualização de
programas
Percepção dos times
Ferramentas para Apoiar a Ferramentas para Apoiar a Programação em GrupoProgramação em Grupo
RECIPE – compartilhamento de códigos
Jazz – foi incorporado ao Rational Team Concert
Apóiam as atividades relacionadas à programação em grupo:
Métodos para Avaliação de Métodos para Avaliação de Ambientes CSCLAmbientes CSCL
Uso do Método de Inspeção
Semiótica (MIS)
Contexto de Aprendizagem
de Programação
Sugestões de Melhoramentos na Interface
MIS no ColabWebMIS no ColabWeb
O ColabWeb possui várias camadas de interface, de acordo com o perfil.
•Os grupos utilizam seus próprios recursos, como chat e fórum•Visualização da turma e dos grupos em espaços diferentes•Programas são desenvolvidos externamente•Os grupos seguem um esquema para resolução de exercícios
Características
Problemas encontradosProblemas encontrados
SugestõesSugestões
Não há dicas de como
configurar o curso
Linguagens de Representação de Linguagens de Representação de Interações (Sistemas Multiagente)Interações (Sistemas Multiagente)
Acompanhamento das interações é difícil: os logs tornam-se muito extensos quanto mais participativo é o grupo
Linguagens de Representação de Linguagens de Representação de Interações (Sistemas Multiagente)Interações (Sistemas Multiagente)
Acompanhamento das interações é difícil: os logs tornam-se muito extensos quanto mais participativo é o grupo
A Tese – Elaboração do 2º. EixoA Tese – Elaboração do 2º. Eixo
Ambientes CSCL
Tecnologias de Apoio
Podem ser utilizados ambientes de propósito geral, desde que sejam configurados para o contextoAlgumas ferramentas específicas para visualização de código e ambientes de desenvolvimento devem ser incorporadas
Recursos como chat e fórum podem ser configurados para atender a especificidades dos exercíciosAmbientes multiagente podem ser integrados aos ambientes CSCL para auxiliarem na identificação de características de interação
Métodos de inspeção ou avaliação de elementos de interface devem ser aplicados periodicamente
Apesar de alguns problemas de navegabilidade, um curso de programação se configurado no ColabWeb conforme IC-Ccomputacao tem uma estrutura e interface aceitáveis para o propósito
A Tese – Elaboração do 3º. EixoA Tese – Elaboração do 3º. Eixo
Generalizaçãopara outraatividade
colaborativa
Esquemaprogressivopara adoçãode práticas
colaborativasMétodo de
Colaboração
Sistematizaçãoda Aprendizagemde Programação
em Grupo
Tecnologias deapoio
Ambientes CSCLFerramentas,
LMSs
Ensino deProgramação
EpistemologiaGenética
Programaçãoem Grupo
PressupostoPedagógico
• Precisa usar algum método?Precisa usar algum método?
• Como os alunos colaboram em Como os alunos colaboram em programação?programação?– Estudo de Caso ExploratórioEstudo de Caso Exploratório– Um exercício no final da disciplina. Como Um exercício no final da disciplina. Como
requisito necessário, as soluções foram requisito necessário, as soluções foram acompanhadas pelos registros das interações acompanhadas pelos registros das interações nos gruposnos grupos
– Questionário de avaliaçãoQuestionário de avaliação
Método de ColaboraçãoMétodo de Colaboração
• É necessário se trabalhar em grupo e há É necessário se trabalhar em grupo e há uma demanda por compromisso, esforço e uma demanda por compromisso, esforço e acordo dos participantes.acordo dos participantes.
• Os grupos apresentaram dificuldades Os grupos apresentaram dificuldades relativas à codificação em linguagem relativas à codificação em linguagem Haskell possivelmente em decorrência da Haskell possivelmente em decorrência da falta de critérios para a interação nos falta de critérios para a interação nos gruposgrupos
• Os grupos acharam a atividade prazerosa, Os grupos acharam a atividade prazerosa, embora difícil de coordenar o grupoembora difícil de coordenar o grupo
Estudo de Caso Exploratório Estudo de Caso Exploratório (2007.1)(2007.1)
Achados:
Um Esquema Progressivo para Um Esquema Progressivo para Aprendizagem de Programação Aprendizagem de Programação em Grupoem Grupo
Fase 1 Fase 2 Fase 3 Fase 4 Fase 5 Fase 6
Preparação
Codificação
Individual I
Codificação
Individual II
Codificação
em Grupo I
Codificação
em Grupo II
Codificação
em Grupo
III
Indivíduo Grupo Time
Workflow do Esquema ProgressivoWorkflow do Esquema Progressivo
• Investigar como os grupos utilizam o Investigar como os grupos utilizam o esquema progressivo de aprendizagem de esquema progressivo de aprendizagem de programação em grupoprogramação em grupo– Reutilização de códigosReutilização de códigos– Qualidade das interaçõesQualidade das interações– Estilos individuais de programaçãoEstilos individuais de programação– Intervenção do professorIntervenção do professor
• Como identificar oportunidades de Como identificar oportunidades de intervenção nos grupos?intervenção nos grupos?
Estudo de Caso Descritivo Estudo de Caso Descritivo (2008.1)(2008.1)
Padrões de InteraçãoPadrões de Interação
Atos de fala estendidos
Padrões de interação em ambientes CSCL
Cada turno de conversa tem uma intenção que pode gerar uma continuidade
Identificação de Padrões de Identificação de Padrões de InteraçãoInteração
StVi Aê pessoal!!! já fiz a minha e
achei bem simples:
aux_menores x xs = [ y | y <- xs
, y < x ]
indice_menor xs = [i | i <-
[0..length xs-1], aux_menores
(xs!!i) xs == []]
Mas apesar de ter achado
simples, queria que dessem uma
olhado no final da função do
"indice_menor xs" ( aux_menores
(xs!!i) xs == []), porque foi
onde tive mais dificuldade.
esclarecer
disponibilizar
perguntar
Identificação de Padrões de Identificação de Padrões de InteraçãoInteração
StFla Bem a minha ficou bem pequena,
achei até estranho, mas axo q
está completa já que era uma
questão simples. O que fiz foi
aproveitar a questão 2 que
mostra o índice menor, e usa-la
para mostrar o médico com menos
pacientes. Segue abaixo:
medicos_menos_pacientes = disp!!
indice_menor
Indice_menor foi a questão usada
na 2ª, já que ela pode ser usada
para mostar também o médico com
menos pacientes. Vejam aew qq
pode estar errado!
esclarecer
explicar
disponibilizar
explicar
Identificação de Padrões de Identificação de Padrões de InteraçãoInteraçãoStJa Eu achei que o problema é sequêncial...
Cada uma das funções exigidas tem a sua
resolução facilitada se usada a
anterior a ela, já que uma aparente
interdepender da outra... Acredito que
a melhor solução do problema seria
fazer ordenadamente cada função para ir
aproveitando-as aos poucos,
criando funções auxiliares quando
necessário.
sugerir
StLu Eu também acho que é um problema em que
cada resposta segue a lógica de sua
anterior, deveriamos então fazê-las em
ordem para tornar o problema mais fácil
e "entendível".
re-sugerir
Identificação de Padrões de Identificação de Padrões de InteraçãoInteração
Categoria Exemplo
Disponibilizar artefato “Minha funções…”
Informar “Pessoal, o problema não é tão difícil…”
Esclarecer “Eu não pude logar antes.”
Confirmar “Eu já anotei isso…”
Perguntar “Alguém mais quer incluir alguma coisa no relatório?”
Sugerir “…todos deveriam tentar criar uma solução pra cada questão do seu próprio jeito…”
Chamar atenção “Ei, Galera! Vamos fazer o exercício!”
Identificar erro “Eu acho que vc cometeu um erro quando definiu o tipo int como saída...”
Explicar “…o que eu fiz foi usar a 2ª. Questão que…”
Uso dos Padrões de Interação na Uso dos Padrões de Interação na Caracterização das InteraçõesCaracterização das Interações
Grupo 2
StDi sugerir / disponibilizar
StHu esclarecer / explicar
StDi re-explicar-StHu / disponibilizar / explicar
StHu esclarecer / disponibilizar
StDi sugerir StKa esclarecer /
disponibilizar StJofi informar StDi informar StDi explicar /
disponibilizar StDi perguntar
StJofi informar StKa confirmar
Alternância de “explicar”, “esclarecer”,
“sugerir”, “disponibilizar”
Interação produtiva
Uso dos Padrões de Interação na Uso dos Padrões de Interação na Caracterização das InteraçõesCaracterização das Interações
Sequências de “disponibilizar” com pouca alternância de
outros padrões de interação
Interação não produtiva
Grupo 1
StAf disponibilizar
StAl disponibilizar
StAf disponibilizar
StAl esclarecer
StAl disponibilizar
StAt confirmar
StAt disponibilizar
StAt disponibilizar
StAt disponibilizar
Representação dos Padrões de Representação dos Padrões de InteraçãoInteração
Leitor
Broadcaster
Leitor / Avaliador
Coordenador
Inicia um turno
Envia avaliação
Representação Formal dos Representação Formal dos Padrões de InteraçãoPadrões de Interação
1 a(clarifier,C) ::=2 a(broadcaster(X,L,Er),B) <-- new_clarification(X,L).3 a(broadcaster(X,L,Er),B) ::=4 (information(X) => a(reader,R) <-- L=[R|Rs] then5 Er=[E|Es] <-- evaluation(X,E) <= a(reader,R) then6 a(broadcaster(X,Rs,Es),B)) or7 null <-- L=[] and E=[].8 a(reader,R) ::=9 information(X) <= a(broadcaster(X,_,_),B) then10 (evaluation(X,E) => a(broadcaster(X,_,_),B) <-- agree(X,E) or11 evaluation(X,E) => a(broadcaster(X,_,_),B) <-- do_query(X,E)).
Identificação de EstereótiposIdentificação de Estereótipos
Interações produtivas
Interações não
produtivas
Estereótipos positivos
Estereótipos negativos
Estereótipos = pistas para intervenção
Identificação de EstereótiposIdentificação de Estereótipos
Estereótipos emergem sempre que:
Um padrão de interação aparece repetitivamente
Somente um ou dois membros do grupo se mantêm trabalhando, mesmo que usem
diferentes padrões de interação
A combinação de padrões de interação reforçam estereótipos negativos
• Replicação das configurações do estudo Replicação das configurações do estudo de caso anterior para avaliar a relevância de caso anterior para avaliar a relevância dos padrões de interação e estereótipos a dos padrões de interação e estereótipos a uma nova turma de programação uma nova turma de programação introdutóriaintrodutória
• Identificação de um novo estereótipo: Identificação de um novo estereótipo: ausência de interaçõesausência de interações
• Confirmação dos estereótipos e Confirmação dos estereótipos e representação dos padrões de interaçãorepresentação dos padrões de interação
Estudo de Caso Explanatório Estudo de Caso Explanatório (2009.1)(2009.1)
• Três estudos de caso e uma inspeção semiótica no Três estudos de caso e uma inspeção semiótica no ambiente CSCL utilizado nesta tese comprovam a ambiente CSCL utilizado nesta tese comprovam a hipótesehipótese– Oportunidades de intervenção na aprendizagem de Oportunidades de intervenção na aprendizagem de
programação em grupo são ampliadas com o uso de uma programação em grupo são ampliadas com o uso de uma abordagem sistematizada de acompanhamentoabordagem sistematizada de acompanhamento
• Os padrões de interação encontrados provaram-se Os padrões de interação encontrados provaram-se aplicáveis na aprendizagem de programação devido aplicáveis na aprendizagem de programação devido à ação na resolução de problemas, o que também à ação na resolução de problemas, o que também evidencia potencial aplicação em outras áreasevidencia potencial aplicação em outras áreas
• Estereótipos são importantes para orientar as ações Estereótipos são importantes para orientar as ações e estratégias dos professores devendo também e estratégias dos professores devendo também incorporar novas instâncias quando incorporar novas instâncias quando adequadamente identificadosadequadamente identificados
ConclusãoConclusão
ContribuiçõesContribuições
1. Uma série de estudos de caso
2. A definição de categorias da evolução de código dos alunos e o desenvolvimento do AcKnow
3. A aplicação da Engenharia Semiótica a um software com vários níveis de comunicabilidade
4. Um esquema progressivo para aprendizagem de programação em grupo
5. A definição de um conjunto de padrões de interação e estereótipos e sua formalização para futura integração sistemas multiagentes
• Integrar a abordagem ao Open KnowledgeIntegrar a abordagem ao Open Knowledge• Aplicar diferentes combinações dos elementos Aplicar diferentes combinações dos elementos
a times de desenvolvimento de softwarea times de desenvolvimento de software• Investigar a integração de outras ferramentas Investigar a integração de outras ferramentas
nos diversos estágios da abordagemnos diversos estágios da abordagem• Aplicar a abordagem a outros domínios, que Aplicar a abordagem a outros domínios, que
envolvam a necessidade de abstração, com envolvam a necessidade de abstração, com ênfase na solução de problemasênfase na solução de problemas
• Aplicar a abordagem no mesmo domínio com Aplicar a abordagem no mesmo domínio com outro paradigma não imperativooutro paradigma não imperativo
Trabalhos FuturosTrabalhos Futuros
PublicaçõesPublicações
CASTRO, T., FUKS, H., CASTRO, A. & SPÓSITO, M. Integração de Ferramentas para Acompanhamento da Aprendizagem de Programação. Anais do XVIII Simpósio Brasileiro de Informática na Educação – SBIE 2007 / Workshop - Ambientes de apoio à aprendizagem de algoritmos e programação, ISBN 978-85-7669-159-4, São Paulo, SP, 2007.[1]
CASTRO, T., FUKS, H., SPÓSITO, M. & CASTRO, A. The Analysis of a Case Study for Group Programming Learning. ICALT - Proc. Of the 8th IEEE International Conference on Advanced Learning Technologies, July 1-5, 2008, Santander, Spain.[1]
CASTRO, T., FUKS, H. & CASTRO, A. Detecting Code Evolution in Programming Learning. In Proceedings of the 19th Brazilian Symposium on Artificial Intelligence, Salvador, Brazil, October 26-30, 2008, Salvador, Brazil. Series: Lecture Notes in Computer Science , Vol. 5249. Sublibrary: Lecture Notes in Artificial Intelligence. ISBN: 978-3-540-88189-6, pp.145-156.[2]
PublicaçõesPublicações
CASTRO, T., FUKS, H. & CASTRO, A. Programming in Groups: a Progression Learning Scheme from the Individual to the Group. FIE - Proc. of the 38th Annual Frontiers in Education Conference, October 22-25, 2008, Saratoga Springs, New York, USA. IEEE Catalog Number: CFP08FIE-CDR. ISBN: 978-1-4244-1970-8. Library of Congress: 79-640810. ISSN: 0190-5848. Pp F1F15-F1F20.[4]
CASTRO, T., FUKS, H. & CASTRO, A. Aprendendo a Programar em Grupo. Anais do V Simpósio Brasileiro de Sistemas Colaborativos - SBSC 2008. 27 a 29 Outubro 2008, Vila Velha, ES. ISBN: 978-0-7695-3500-5/08, Ed. IEEE-CS, pp. 45-54.[4]
CASTRO, T., FUKS, H., SANTOS, L. & CASTRO, A. Fleshing out Clues on Group Programming Learning. ICEIS 2009, 11th International Conference on Enterprise Information Systems, Milan, May 2009. ISBN: 978-989-8111-85-2.[5]
PublicaçõesPublicações
CASTRO, T. & FUKS, H. Inspeção Semiótica do ColabWeb: Proposta de Adaptações para o Contexto de Aprendizagem de Programação . Revista Brasileira de Informática na Educação. Vol.17, N. 1. Pp 71-81. ISSN 1414-5685. 2009[3]
CASTRO, T., FUKS, H., SPÓSITO, M. & CASTRO, A. Análise de um Estudo de Caso para Aprendizagem de Programação em Grupo. IEEE-RITA: Revista Iberoamericana de Tecnologia del Aprendizaje. ISSN: 1932-8540. V.4, N.2, pp. 155-160. 2009.[1]