Provavelmente você já passou por isso: você faz um curso de informática qualquer, como por exemplo um colegial técnico ou uma faculdade, e quando você tem a aula de programação você é ensinado com exemplos pouco aplicáveis. Ou então, na primeira tentativa de fazer um sistema um pouco maior, descobre que ainda precisa aprender muito mais, pois seu sistema tornou-se impossível de continuar, e qualquer alteração no sistema propaga uma mudança absurda em toda a sua base de código. E então, você resolve ler alguns livros ou procurar, de alguma maneira, descobrir o que falta no seu conhecimento para conseguir, de fato, fazer grandes sistemas. Infelizmente, porém, a maior parte do conteúdo disponível está em inglês, ou é muito avançado ou básico.

Foi então que surgiu a idéia destas vídeo-aulas. A idéia é montar vídeo-aulas pequenas, em formato de curso (baseado no Coursera e Khan Academy), mas que ensinem de fato a técnica de programação e não apenas as linguagens que serão usadas. De fato, veremos muito pouco de “linguagens de programação”, e veremos mais os conceitos ou as técnicas que precisamos para escrever códigos robustos e duráveis.

Para anúncios rápidos, há uma página no Facebook para tal: http://www.facebook.com/TecnicasProgramacao

Eu não pretendo fazer um sylabus ou alguma outra ferramenta rígida sobre o assunto que vamos passar. Vamos estudar principalmente programação orientada a objetos e depois, programação funcional. Os assuntos que pretendo abordar serão:

    Orientação a objetos introdutório

  1. Introdução
  2. Orientação a Objetos – exemplos e métodos
  3. Orientação a Objetos – propriedades
  4. Orientação a Objetos – classes
  5. Tipagem I – classes, tipagem estática e dinâmica, duck-typing
  6. Composição por Instância
  7. Tipagem II – Herança
  8. Tipagem III – Sobreposição
    • Composição por Instância em Scala
    • Orientação a Objetos em Smalltalk
    • Orientação a Objetos por Prototipação – Javascript
    • Herança Múltipla (Python/C++)
  9. Tipagem IV – interfaces e classes abstratas
  10. Closure, blocos, função anônima
  11. Compilação, Bytecode, AST
  12. Tempo de Compilação e Tempo de Execução
  13. Tipagem VI – tipagem estruturada em Scala
  14. Coleções e iterações

  15. Coleções
  16. Iteradores
    • Closures em Javascript
    • Closures em Java

    Imutabilidade

  17. Efeitos Cliaterais, passagem por referência
  18. Imutabilidade
  19. “Generics” e “Generic-Likes”

  20. Classes “Tipadas”, Generics, Templates
  21. Tipagem VII – variância
  22. Tipagem VIII – invariância
  23. Práticas

  24. Composição por Herança
  25. Composição – Exemplos
  26. Mande, Não Pergunte (Tell, Don’t Ask)
  27. Problemas com “Tell, don’t Ask”
  28. Testes

  29. Testes Unitários
  30. Frameworks – Test/Unit
  31. TDD
  32. BDD
  33. SPECs (RSpec e Specs2)
  34. Padrões

  35. MVC
  36. DSL I
  37. DSL II

Esta lista será atualizada com o tempo.

O que esperar?

Nestas vídeo-aulas, serão apresentados conceitos de “técnicas de programação”. Ou seja, você não aprenderá a programar numa linguagem específica (no caso, faremos o curso em Ruby e em Scala, principalmente porque são duas linguagens que suportam diversos dos conceitos que mencionaremos aqui), mas sim aprenderá técnicas que são suportadas em várias linguagens diferentes. Por exemplo, embora o conceito de “closure” faça muito mais sentido para Ruby e Scala, teremos um vídeo mostrando como fazer isso em Java.

Para quem são estas vídeo-aulas?

Este curso não é para alguém que não conhece nenhuma linguagem de programação. Na verdade, o ideal é que se conheça pelo menos uma linguagem de programação (podendo ser Java, Scala, Ruby, Python, ou qualquer outra). Não é necessário conhecer a fundo a linguagem, porém o ideal é que ao menos, tenha-se tentado fazer algum programa não tão simples quanto um “hello world”.

Por fim, provavelmente será feita uma apostila simples com os comandos mais comuns das linguagens Ruby e Scala, possivelmente com um guia de sintaxe e equivalências do código em Ruby/Scala/Java, porém não há planos de material de apoio para quem desconhece o básico de programação. Os códigos passados nesse projeto não ficarão disponíveis a princípio, principalmente para incentivar os alunos a escreverem bastante código.

Licença de Uso dos Vídeos

Os vídeos estão todos licenciados sob a “Creative Commons“, e podem ser usados à vontade ou editados, DESDE QUE se mantenha que o autor das vídeo-aulas originais sou eu (Maurício Eduardo Chicupo Szabo) e que estão no seguinte link: http://snipurl.com/programacao. Por favor, não use o link desta página.

Para modificações no trabalho, você apenas precisa indicar que a nova versão é uma edição/adaptação/modificação deste trabalho, mas não tem a obrigação de me informar que fez uma modificação (embora eu ficaria grato se fosse feito, e dependendo do conteúdo da modificação, poderia até inserir um link nesta página ou em um dos vídeos).

Link, e Considerações Finais

As vídeo-aulas estão disponíveis como uma playlist do YouTube, neste link.

Uma coisa importante a ser mencionada é que muita gente que já programa em Ruby e em Scala vai ver que eu não estou usando o potencial 100% da linguagem (por exemplo, em Ruby eu não uso o formato “Um #{texto} qualquer” para concatenar strings, e quando chegar em Scala, eu vou assinar mais tipagens do que o necessário). Isso é proposital, por motivo acadêmico, para que os alunos não precisem, necessariamente, de conhecimentos profundos sobre a linguagem ou para deixar alguns conceitos bem explícitos (como tipagem e a idéia de herança/variância).

Creative Commons License
Vídeo-Aulas de Técnicas de Programação by Maurício Eduardo Chicupo Szabo
is licensed under a Creative Commons Attribution 3.0 Unported License.

0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *