Aqui estão alguns trabalhos e projetos realizados ao longo de minha graduação em Ciência da Computação no IME/USP. Pretendo adicionar mais projetos a este arquivo ao longo do tempo, a medida em que recupero os trabalhos originais. Segue uma pequena descrição de cada um. Mais detalhes podem ser vistos na documentação de cada projeto.
Um programa escrito em C para criptografar arquivos com uma senha. Implementa o algoritmo K128.
Implementação de um servidor de IRC em C. Suporta os comandos básicos do protocolo e inclusive transferência de arquivos entre usuários.
Um programa em Python que cria uma rede virtual complexa e simula conexões entre as máquinas, que podem ser clientes, servidores ou roteadores. A comunicação entre elas é feita por pacotes em três camadas: camada de rede (IP), transporte (TCP ou UDP) e aplicação (DNS e IRC). O programa simula todos os níveis de comunicação e gera logs detalhados sobre o que ocorreu.
Um jogo da velha em rede. Com implementação em Python, funciona em TCP e UDP. Usuários podem logar no servidor e convidar outros usuários para partidas, e podem também resumir uma partida em andamento que tenha sido interrompida. Em TCP também foi implementado TLS.
Um jogo de invasores escrito em Python e OpenGL 2.
Uma simulação de ondas em um lago. Programa escrito em C com paralelismo em OpenMP.
Um programa que implementa o algoritmo simplex para redes para resolver o problema do menor caminho. Escrito em C++, usa grafos para solucionar esse problema de programação linear.
Programação concorrente em C. O jogo simula uma corrida de F1 onde cada carro é uma thread e o vencedor será decidido pelo escalonador do sistema operacional.
Programação concorrente em C. Calcula uma aproximação do número de Euler em alta precisão usando a biblioteca GMP, de forma concorrente.
Programa de concorrente em Java. Resolve o problema clássico do jantar dos selvanges, implementando Monitores em Java.
Alguns exercícios de lógica resolvidos em SMV.
O xv6 é um sistema operacional estilo Unix educacional. Neste projeto, adicionei novas syscalls ao xv6 que permitem gravar a execução de um programa, funcionalidade útil na depuração.
Neste projeto adicionei suporte a links simbólicos no xv6, o sistema operacional estilo Unix escrito para fins educacionais.
Escrito em C, é um simples shell e gerenciador de arquivos para sistemas Unix.
Um programa em WebGL (Javascript / shaders) que carrega peças de um tabuleiro de xadrez e os exibe no navegador, com implementação do controle da câmera em quatérnios.