Linguagens de programação são ferramentas poderosas na mão de pessoas que conseguem tirar o melhor proveito delas. Praticar programação para resolver problemas é essencial para isso, mas conhecer conceitos que se aplicam em diferentes linguagens também ajuda a navegar nas águas agitadas das tecnologias da área 😄. Neste trabalho, vamos explorar esse universo um pouco mais, para além da teoria e prática já vistas.
Produzir um vídeo sobre um conceito presente em uma linguagem de programação funcional ou lógica, à sua escolha, e explicar um exemplo de código que ilustre o conceito, sem sobreposição com o que é abordado nas aulas.
-
Este trabalho deverá, preferencialmente, ser feito em duplas.
-
Os conceitos deverão ter alguma relação com os paradigmas de programação funcional e/ou lógico, pois é isso que estamos estudando :-)
-
Vocês deverão escolher combinações de conceitos e linguagens da lista fornecida ou, se preferirem, propor à professora alguma combinação que não esteja na lista.
-
Será permitido apenas um vídeo para cada combinação, porque não seria legal todo mundo tratar do mesmo tema, né?
-
Para escolher o tema do vídeo (combinação de conceito/linguagem), vocês devem preencher esta planilha e aguardar validação da professora.
-
Uma vez definido o conceito e a linguagem, vocês deverão pesquisar um exemplo que ilustre o conceito. Podem ser vários exemplos também, mas pelo menos um! Se forem exemplos simples e curtos, é melhor ter mais de um. Se estiverem dentro de códigos longos que explorem vários recursos, pode ser apenas um exemplo, explicado dentro do contexto.
-
Quando tiverem definido os exemplos, vocês deverão criar um roteiro para o vídeo, pensando em como apresentar o conceito, a linguagem e o(s) exemplo(s). Usem a criatividade e aproveitem a liberdade para decidir o estilo de vídeo que acharem melhor.
-
Depois é só produzir o vídeo, entregá-lo e aguardar o Oscar!
Conceitos
- Lambda Functions
- Higher Order Functions
- Recursão
- Currying
- List Comprehension
- Passagem de parâmetros
- Predicates
- Backtracking
- Lazy Evaluation
- Outros (fale com a professora)
Linguagens
- C#
- C++11
- Scala
- Clojure
- Rust
- Elixir/Erlang
- Lisp
- Scheme
- JavaScript
- Julia
- Python
- F#
- Haskell
- Prolog
- Outras (fale com a professora)
-
O vídeo não deve ser nem muito curto (superficial demais) nem muito longo (afinal é sobre um assunto pontual). Algo em torno de 15 minutos é uma boa meta, mas pode ser mais que isso se for necessário, ou até um pouco menos se houver uma boa edição.
-
Em algum ponto do vídeo deve constar a identificação de vocês (seus nomes e cursos) e da disciplina (nome da disciplina, querida professora responsável por propor este trabalho, semestre e universidade).
A nota neste trabalho será atribuída da seguinte forma:
- 50%: conteúdo (grau de dificuldade, informações, explicações, exemplos)
- 50%: formato (recursos usados no vídeo)
- Deadline: 05/07/21
- Link para criação do repositório de entrega: https://classroom.github.com/g/g-uGQmjl
- Seu repositório de entrega deverá conter um README.md contendo:
- Identificação da dupla
- Link para o vídeo produzido