Vou procurar compartilhar minha experiência recente no oferecimento de um curso com 1750 inscritos que oferecemos por 5 semanas numa plataforma web de programação colaborativa que desenvolvemos há mais de 5 anos. Este curso pode ser classificado como MOOC (massive online open course) e teve os desafios típicos desta modalidade de curso. O objetivo desta palestra é orientar os professores candidatos a oferecerem cursos nesta categoria para listar os principais pontos que precisam ser cuidados para o sucesso deste tipo de curso. Iremos falar também das motivações que nos levaram a oferecer este curso, as ferramentas computacionais que foram utilizadas, os resultados alcançados e os principais aprendizados.
Veja também a apresentação http://www.slideshare.net/RobertoLotufo/cursopynumpy-2ed que mostra a experiência no oferecimento da 2a. edição do curso.
Roberto A Lotufo é professor titular da FEEC-Unicamp com área de interesse em processamento de imagens e reconhecimento de padrões com aplicações na área médica, visão por computador, biometria e monitoramento por vídeo.
Próximo curso inscrições abertas até 7 de março 2014: http://adessowiki.fee.unicamp.br/adesso/wiki/main/cursonumpypirp/view/
UFCD_10392_Intervenção em populações de risco_índice .pdf
Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens e RP
1. LABORATÓRIO DE INTRODUÇÃO AO
PROCESSAMENTO DE IMAGENS E
RECONHECIMENTO DE PADRÕES
UTILIZANDO A LINGUAGEM
PYTHON/NUMPY
Curso à distância online aberto e gratuito
Compartilhando experiências
Roberto A Lotufo
Palestra EAE (Ensino e Aprendizado em Engenharia) – FEEC-Unicamp, 28 nov
2013
http://youtu.be/jTnD1XOWKiw: Vídeo desta apresentação
3. Motivações do curso
• Ensinar um grande número de alunos
• Ensinar uma atividade de programação avançada não
•
•
•
•
•
trivial, com maior nível de abstração e eficiência
Identificar e atrair bons alunos para fazerem mestrado e
doutorado
Ajudar na preparação curso de programação
matricial/paralela para Proc. de Imagens
Testar o Adessowiki (atendimento muitos usuários)
Divulgar o Adessowiki
Ganhar experiência em cursos estilo MOOC
4. Histórico
• 1990 – 1995: Khoros, Un. Novo México
• Ambiente gratuito visual de processamento de imagens
• Toolboxes desenvolvidas: Morfologia e Visualização de Imagens
Médicas
• DIP – Digital Image Processing Course, um dos primeiros disponíveis
na Internet, 1995
• 1995 – 2002: MATLAB
• Toolbox morfologia
• Projeto Adesso, parceria com CTI-Renato Archer
• Wiki, 2001
• 2002 – 2007: MATLAB e Python
• 2002: Toolbox Proc. Imagens para Python
• 2007: wiki do DCA – MATLAB
• 2008 – hoje : Python – Numerical Python
• Adessowiki, 2008
5. Adessowiki
• Projeto desenvolvido junto com CTI-Renato Archer
• Plataforma colaborativa para escrita e programação
científica
• Usado em cursos desde 2008
• Vídeo demonstrativo:
• http://www.youtube.com/watch?v=FcMVtx-3_Ek
6. Fatores diferenciais do Adessowiki para
ensino
• Programação colaborativa
• Dados, Programas, Ambiente todos na nuvem
• Tarefa passada para os alunos
• Durante a semana discussão lista email
• Programas feitos e compartilhados
• Discussão baseada na experiência e criatividade das soluções dos
alunos
7. Objetivos do curso
• Ensino de programação no estilo matricial paralelo
utilizando pacote NumPy (poderia ser MATLAB ou suas
versões equivalentes)
• Ensino de conceitos iniciais de processamento de
imagens e reconhecimento de padrões
9. Ferramentas Principais
• Lista Google groups, inscrição e comunicação
• Adessowiki:
• Tutoriais e exercícios de programação.
• Ambiente colaborativo de programação científica
desenvolvido pela Unicamp e CTI-Renato Archer e
em uso em várias instituições desde 2008
• Google Forms: testes múltipla escolha, usando
script de correção automática (Flubaroo)
10. Oferecimento (estilo MOOC)
• Pela Extecamp: curso de difusão
• Sem certificado
• Gratuito
• Aberto a qualquer um (sem critério de seleção)
• Período: 5 semanas, 8 de setembro a 12 de outubro 2013
11. Metodologia e formato do curso
• Dividido em 4 partes:
• 1. Introdução Adessowiki, Python e NumPy
• 2. Criação de imagens, transformação de intensidade e
transformação geométrica
• 3. Filtros espaciais, convolução e filtros de ordem
• 4. Classificador k-vizinho mais próximo
12. Metodologia e formato do curso
• Três tipos de atividades:
• 1. Treinamento em programação utilizando Adessowiki e
lendo pequenos tutoriais explicativos
• 2. Testes múltipla escolha on-line (google forms)
• 3. Programas com correção automática (Adessowiki)
• Praticamente não houve vídeos, as instruções para
realização das atividades eram todas escritas e
realizadas no Adessowiki.
13. Metodologia e formato do curso
• Tanto testes múltipla escolha como programas a serem
•
•
•
•
submetidos tinham prazo de entrega.
Testes com 10 questões múltipla escolha
Programas conceituais de solução típica com 5 a 20
linhas de programação
Foi possível entregar fora do prazo, porém não foi
considerado no cômputo da avaliação.
Gabarito dos testes era discutido logo após o prazo de
entrega.
14. Metodologia e formato do curso
• Roteiros (atividade de edição livre)
• Mini-tutoriais (leitura)
• Biblioteca didática de funções (leitura)
• Programas para correção automática (avaliação)
• Testes Múltipla Escolha – 10 questões (avaliação)
15. 7 Testes e 9 Programas
• Parte I (2 semanas)
• 3 testes: 1.1, 1.2, 1.3
• 2 programas: Quadrados, Xadrez
• Parte II (1 semana)
• 2 testes: 2.1, 2.2
• 3 programas: Rampa, Normalização, Transformação geométrica
• Parte III (1 semana)
• 1 teste: 3.1
• 1 programa: Filtro ordem (max, min, mediana)
• Parte IV (1 semana)
• 1 teste: 4.1
• 3 programas: Vizualização, Distância, PCA
16. Objetivo dos testes
• Servir de roteiro de estudos
• Roteiro para experimentar comandos de programação
• Verificar quem fez de fato os programas
• (Os programas entregues podem ser copiados)
17. Exemplo de questão teste
• Seja o comando
i,j = np.indices((5,3))
Assinale a alternativa correta:
a) i é uma matriz de 5 linhas e 5 colunas
b) i é um escalar de valor 5
c) i e j tem as mesmas dimensões
d) j é uma matriz quadrada
e) Nenhuma das anteriores
18. Exemplo de programa
• Image estilo xadrez, pixels 0 e 1
• [[0,1,0,1,0,1],
• [1,0,1,0,1,0],
• [0,1,0,1,0,1]]
• 6 formas de programar:
• Estilo C
• Fatiamento da matriz (slice)
• Matriz de índices
• Ladrilho
• Redimensionamento
• Replicação
• Lista
19. Nove Programas – tamanho típico
• 1a. parte: Programação NumPy
• 1.1. Quadrados de Cinza: 13 linhas
• 1.2. Xadrez parametrizado: 9 linhas
• 2a. parte: Transformações Intensidade e Geométrica
• 2.1. Rampa: 3 linhas
• 2.2. Normalização: 12 linhas
• 2.3. Transformação geométrica: 28 linhas (modificar um existente)
• 3a. parte: Filtragem
• 3.1. Filtro ordem: 26 linhas (o mais difícil de todos)
• 4a. Parte: Classificadores
• 4.1. Vizualização amostra: 2 linhas
• 4.2. Distância a k-vizinhos: 8 linhas
• 4.3. PCA: 8 linhas (o mais difícil do ponto de vista teórico)
20. Metodologia de Notas para programas
Desafio é conseguir uma nota que reflita um bom programa. No caso, para ficar
mais fácil usou-se o critério de tempo de execução do programa que esteja
correto.
Estou procurando sugestões de como fazer esta atribuição automática de nota.
Tmin
p=
T
p indica uma percentagem do tempo de execução do
programa mais rápido em relação ao tempo do seu programa
Nota do programa é normalizada entre 10.0 e 5.0
relativas aos programas certos entre o índice p=1 e o menor índice p.
26. N. de usuários editaram programas por dia
300
1.1
Entregas
250
200
1.2
150
100
1.3
2.1
2.2
50
3.1
4.1
0
8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1
Semana 1.1
Semana 1.2
setembro
Semana 2
2
3
4
5
6
7
8
9 10 11 12
Semana 4
Semana 3
outubro
27. Funil dos cursos MOOC
• The first MITx course, Circuits and Electronics, attracted
over 150,000 participants, but ―fewer than half look at the
first problem set‖, and only 7,157 passed, or about 5%
• Inscritos: 1750
• Acessaram o sistema com senha: 1202 (68%)
• Editaram alguma página: 655 (37%)
• Fizeram primeiro teste: 511 (29%)
• Fizeram primeiro programa: 137 (7,8%)
• Completaram com 50% de aproveitamento: 41 (30% do
índice anterior) ou (2,3% dos inscritos)
28. Testes Múltipla Escolha
600
500
400
300
Testes Múltipla Escolha
200
Funil dos
testes e
programas
100
0
1.1
1.2
1.3
2.1
2.2
3.1
4.1
Programas Correção Automática
160
140
120
100
80
60
40
20
0
Programas Correção
Automática
29. Correlação Notas Programas e Testes
100
90
Média Testes
80
70
60
50
40
30
20
10
0
0
10
20
30
40
50
60
70
Média Programas
80
90
100
31. Aprendizados
• Lançamento de curso é momento bastante estressante –
•
•
•
•
•
igual a organizar um evento onde chegarão milhares de
pessoas, tudo tem que estar funcionando
Ferramentas de comunicação são primordiais
É importante ter ferramentas de acompanhamento do
desempenho individualizado do aluno
Conteúdo e instruções precisam ser testados e revisados.
Se existe alguma chance de má interpretação, ela vai
acontecer com um bom número de alunos
É preciso experiência de professor no controle da classe
Necessidade de acompanhamento em tempo integral
32. Comentário de participante
• ―O Ensino à Distância (EAD) apresenta algumas
vantagens em relação ao Ensino Presencial. Por sua
própria natureza, os mentores do curso acabam se
obrigando a manter um conteúdo bem estruturado, o que
muitas vezes não acontece em cursos presenciais. Um
sistema bem estruturado, que hospede todo o material
usado em sequência, assim como todo o histórico de
troca de mensagens, funciona como um GUIA DE
ESTUDOS, apontando oportunamente para referências
externas.‖
Muito verdade
33. Principais dificuldades
• Como corrigir erros feitos pelos alunos (sem ser
•
•
•
•
necessário acompanhamento individualizado)
Lista de discussão foi moderada o tempo todo
Curso foi muito intensivo, principalmente na primeira
semana
Curso é inerentemente difícil, envolve conhecimentos
avançados e maturidade em programação
Primeira semana do curso é crucial – é quando os
objetivos e expectativas são consolidados
34. Pontos altos do curso
• Teste múltipla escolha forte correlação com o estudantes
que faziam melhores programas
• Sistema de compartilhamento de soluções bastante
apropriado (todos vêm as soluções de todos)
• Sistema de visualização dos programas classificados por
tempo de execução foi desafio motivacional para os
participantes
• Comprovação do ambiente Adessowiki para ensinar
programação
35. Comentário de aluno
• Gostei muito do curso e gostei bastante da ideia de editar
e executar o código diretamente pelo browser. O curso
ajuda bastante com a prática de código matricial. Foi uma
experiência bastante interessante.
• Seria muito bom ter cores no editor de código e talvez
complemento de código (como nas IDEs).
• Faz falta ferramentas para debug.
• Gostaria de ter visto mais conteúdo sobre processamento
de imagens e reconhecimento de padrões.
36. Comentário de aluno
O ajuste de prazo de entrega para os finais de semana
ajudou bastante. Talvez o sistema de cálculo de
porcentagem de acerto das atividades de programação
possa evoluir mais. Não sei da responsabilidade legal que
um professor tem ao emitir um certificado, tenho certeza
que um certificado simples, em formato digital mesmo iria
motivar mais as pessoas a concluírem o curso. A
existência de um ranking público para esse tipo de curso
também é polêmico :D afinal pode ser tanto motivante
quanto desmotivante. É o primeiro curso a distância que eu
faço, e foi uma experiência bem interessante.
37. Comentário de colega
(antes de iniciar o curso)
• Oi Lotufo,
• Esses cursos online costumam ter uma taxa de evasão
grande, então não deixe isso lhe desanimar: eu acho
sempre mais produtivo pensar ao contrário — ao invés de
dizer entraram X e ficaram apenas Y, é preciso pensar
"quantas turmas convencionais eu precisaria oferecer
para formar Y" ?
• Eduardo Valle
Muito verdade
38. Peculiaridades do curso
• Primeiro colocado foi aluno anônimo
• Um caso de plágio recorrente
• Apenas 3 mulheres entre os 41 finalistas
• Lista de discussão foi moderada
39. Princípios
• Adotado desde a concepção:
• "Organizing the course around exercises and mental challenges is
much more effective than around lectures‖
• Será adotado na próxima edição:
• Coursera found that students who paid $30 to $90 were
substantially more likely to finish the course.
40. Motivações do curso
(O que deu certo)
• (Pouco) Ensinar um grande número de alunos
• (OK) Ensinar uma atividade de programação avançada
•
•
•
•
•
não trivial, com maior nível de abstração e eficiência
(Pouco) Identificar e atrair bons alunos para fazerem
mestrado e doutorado
(OK) Ajudar na preparação curso de programação
matricial/paralela para Proc. de Imagens
(OK) Testar o Adessowiki (escalamento)
(OK) Divulgar o Adessowiki
(OK) Ganhar experiência em cursos estilo MOOC
42. Referências recentes MOOC
• Results from the First-Year Course MOOCs: Not there yet
• http://m.cacm.acm.org/blogs/blog-cacm/168862-results-
from-the-first-year-course-moocs-not-there-yet/fulltext
• Udacity’s Sebastian Thrun, Godfather of the Free Online
Education, chages course
• http://www.fastcompany.com/3021473/udacity-sebastianthrun-uphill-climb
44. Conclusões - Discussão
• MOOC é uma ótima oportunidade de experimentação
sobre aprendizagem
• MOOC é ótima oportunidade para preparar e organizar
material didático
• Infraestrutura para MOOC não é trivial:
• Preparação de material didático
• Comunicação aluno-aluno e professor-aluno
• Acompanhamento
• Avaliação
45. • Maiores informações sobre Adessowiki
• http://www.adessowiki.org
• Contato:
• http://faculty.dca.fee.unicamp.br/lotufo/