Para linguagens que gerenciam memória de maneira automática, geralmente uma das tarefas do compilador, na intenção de otimizar o uso de memória, é decidir se os dados referenciados por uma variável devem residir no heap ou na pilha de execução. Para isso, é necessário detectar se, por assim dizer, aqueles dados podem ou não ser compartilhados entre funções com tempo de vida distintos, o que chamamos de "Análise de escape". Este projeto visa estudar e avaliar as soluções já propostas para esse fim.
Projetos Disponíveis
- Sistema de gestão e avaliação automática de tarefas de programação
- Sistema de arquivos distribuído para redes locais
A depender da infraestrutura disponível e do tipo de atividade desempenhada por um grupo de profissionais, é interessante fazer uso de todos os recursos de hardware disponíveis de forma a economizar equipamentos ou recursos financeiros. Uma alternativa no âmbito de armazenamento é distribuir os arquivos de todos os usuários de uma rede local nas próprias máquinas usadas, reservando uma parte do espaço de armazenamento dessas máquinas para compor um sistema de arquivos distribuído. Este projeto visa propor um sistema de gerenciamento desses dados.
- Estruturas de Dados Persistentes e Visualização de Algoritmos
Estudo de Estruturas de Dados Persistentes (Temporais) para posterior implementação de um visualizador gráfico de estruturas de dados. Esse visualizador deve ser usado como auxiliar no ensino de conteúdos para as disciplinas de ED e EDA.
- Edição de código acessível a deficientes visuais
Estudar e propor ferramentas para auxiliar a tarefa de leitura e escrita de código por pessoas programadoras portadoras de deficiência visual, com foco em enriquecer a experiência proporcionada por essas ferramentas.
- Desamortização de Árvores Binárias de Busca
Estudo e implementação da solução de desamortização de ABBs proposta por [Bose et al., 2012].
- Algoritmos de detecção de escape de variáveis
Para linguagens que gerenciam memória de maneira automática, geralmente uma das tarefas do compilador, na intenção de otimizar o uso de memória, é decidir se os dados referenciados por uma variável devem residir no heap ou na pilha de execução. Para isso, é necessário detectar se, por assim dizer, aqueles dados podem ou não ser compartilhados entre funções com tempo de vida distintos, o que chamamos de "Análise de escape". Este projeto visa estudar e avaliar as soluções já propostas para esse fim.
- Pontos de fricção em Linguagens de Programação modernas
Investigação de Linguagens de Programação de propósito geral modernas, tanto de adoção expressiva como em ascenção, com o foco em identificar quais de suas dimensões causam fricção ou dificuldades em seu uso. O espectro de análise visa envolver sintaxe, semântica, facilidade de aprendizagem, manutenção de código, ecossistema, etc. de forma a obter-se um panorama das desvantagens das opções modernas e trazer luz a essas questões.