Alguns temas para Trabalho de Conclusão de Curso (TCC) ou Iniciação Científica (IC) estão listados abaixo. Embora essa não é uma lista exaustiva, ideias diferentes são bem-vindas.
- Criar uma Domain Specific Language (DSL), escolher um domínio que goste e simplificar e otimizar a programação nesse domínio
- Fazer um compilador para uma arquitetura alvo (target) específica, que pode ser exótica, inovadora, educacional e etc.
- Implementar algumas análises no código, como liveness
- Implementar algumas otimizações, como Dead Code Elimination e Common Subexpression Elimination
- Explorar otimizações de cauda (tail-call), detecção e otimização
- Explorar inferência de tipos e enrobustecer o sistema de tipos de alguma linguagem
- Explorar otimizações sobre paralelismo e ambientes de execução de alto desempenho
- Estudar Just in Time (JIT) ou compilar linguagens interpretadas
- Estudar a infraestrutura LLVM e MLIR (otimizações, ambientes heterogêneos, ...)
- Explorar outras formas de representação intermediária (IR) e o impacto nas fases de compilação
- Comparar e explorar Static Single-Assignment (SSA) versus outras formas
- Incorporar ideias de linguagens de outros paradigmas, como funcional em imperativas