terça-feira, março 11, 2014

Curso Cryptography I da Cursera

Há cerca de dois anos foi lançado o Coursera, um site de educação on-line que oferece cursos de várias universidades americanas, entre elas Stanford e Princeton. Conclui recentemente o curso "Cryptography I" da Stanford e compartilho aqui minha experiência.


A base do curso são aulas em vídeo (no caso dados por Dan Boney da universidade de Stanford). A duração de cada segmento varia, aproximadamente, entre 10 e 20 minutos. O vídeo é, na maior parte, uma apresentação ("Powerpoint") sobre a qual o instrutor pode fazer anotações com várias cores (o que é bastante usado). Inicialmente estava preocupado em entender o que é falado (costumo ter problemas com filmes e séries, o que me obriga a usar legendas, de preferência em inglês). Para minha surpresa, foi fácil acompanhar (apesar do professor falar relativamente rápido). No meu caso as legendas atrapalharam, por sobrepor uma parte dos slides. Para quem precisar, tem legendas em várias línguas, inclusive português.

Ocasionalmente o vídeo para o aluno fornecer uma resposta. Este recurso é pouco usado e não funciona muito bem para respostas que envolvam a digitação de expressões. Em alguns casos tive dificuldade em descobrir qual a forma esperada. Estas perguntas são, na maioria dos casos, simples e não entram na avaliação (podem inclusive ser puladas), são mais para manter os alunos acordados.

Os vídeos podem ser vistos on-line ou baixados (em formato mp4; as legendas estão disponíveis em formato srt e texto). As apresentações estão disponíveis em pdf e pptx. As anotações  e perguntas nem sempre ficam boas nestes formatos.

O curso é acima de tudo teórico e bem puxado. Embora as demonstrações não sejam exatamente formais, existe bastante manipulação algébrica. Conhecimentos de probabilidade discreta e álgebra são essenciais. A parte final inclui uma apresentação rápida de aritmética modular.

O curso tem uma duração de 6 semanas. Para cada semana existem vários segmentos de vídeo num total entre 3 e 4 horas, uma prova e um exercício de programação (opcional). A prova tem entre 8 e 15 perguntas, sem limite de tempo, e pode ser feita até quatro vezes (a maior nota prevalece, existem pequenas variações entre as repetições). Na sétima semana tem uma prova final. Existe uma tolerância de 3 semanas para as provas e exercícios

Nas primeiras três semanas consegui seguir o ritmo, na quarta os vídeos me causaram sono e acabei usando toda a tolerância para concluir o curso. Nas primeiras semanas eu encontrei alguns errinhos nos slides, mais adiante os erros pararam, eu acostumei com eles ou simplesmente o nível subiu a um ponto em que eu não os percebi.

As provas semanais são relativamente difíceis e trabalhosas (mesmo sendo com consulta). O bom é que acertos e erros são comentados assim que a prova é terminada, ajudando o aprendizado.

A dificuldade dos exercícios de programação varia bastante, mas todos foram interessantes. O forum do curso é um bom lugar para tirar dúvidas e pegar dicas. Em princípio você tem 1000 chances de enviar as respostas corretas, mas em todos os casos é fácil conferir a resposta antes de enviar e não existe limite de tempo. Qualquer linguagem de programação pode ser usada (você envia a resposta não o programa), é conveniente que ela tenha bibliotecas para criptografia e para manipulação de números inteiros com precisão infinita (inclusive aritmética modular). A linguagem recomendada é Python, como tenho ainda pouco experiência com ela, acabei usando C, C# e Java.

Eu estava apreensivo com o exame final, mas ele tinha um número pequeno de questões, relativamente fáceis e cobrindo apenas o mais importante.

A próxima edição do curso está prevista para 1o de abril (não é piada). O site do curso é https://www.coursera.org/course/crypto.

Minha recomendação para quem quiser seguir é definir um horário fixo para assistir aos vídeos. Para fazer as provas, garanta um ambiente silencioso e algo entre meia a uma hora de tempo.

Veredito

Recomendado

Nenhum comentário: