Estes repositório agrega alguns exemplos de idéias de trabalhos finais para a disciplina de Compiladores 1. Os trabalhos propostos exercitam um conjunto amplo de competências e podem ser adotados como uma estratégia de avaliação para estudantes que prefiram trabalhos práticos mais desafiadores a pequenos exercícios isolados.
Apesar dos exemplos mostrados e da aula ser ministrada em Python, o exercício-desafio pode adotar qualquer outra linguagem de programação que eu possua familiaridade: Python, Javascript/Typescript, Haskell, Elm, C/C++ (não utilize bibliotecas proprietárias como o conio.h). Outras linguagens com ambiente de desenvolvimento facilmente configurável em Linux também podem ser negociadas a depender das bibliotecas adotadas, da complexidade da solução utilizada e da similaridade da linguagem com uma das anteriores.
Em todos trabalhos, apresento um pacote "padrão" com um conjunto de atividades que exercita um conjunto de competências específicas. É possível realizar entregas parciais, omitindo pedaços do trabalho completo sem desenvolver todas as competências listadas. Também é possível realizar entregas ampliadas, acrescentando atividades que vão além do escopo proposto e comprovem competências adicionais. Em alguns pontos faço sugestões de idéias, mas cada um possui a liberdade de propor outras extensões.
Quase todos os trabalhos oferecem várias oportunidades de programação para mostrar as competências associadas ao Python. Isto pode ser útil para quem não realizou os exercícios da categoria "elementar" do checkio.
Cada trabalho é descrito em um arquivo markdown específico e, em algumas situações, pode conter algums arquivos auxiliares adicionais em uma pasta com o mesmo nome.
A entrega é feita enviando um pull request para o presente repositório. Não esqueça de preencher o arquivo aluno.py com as informações de autoria.