Visión general
De qué trata este proyecto.
Define el subset de C admitido (sin punteros, sin malloc, enteros de tamaño fijo, structs simples). Implementa el motor en Python: parser de C usando pycparser, IR propia o LLVM-lite, ejecución simbólica con Z3 para la teoría de bitvectors, manejo de bucles con bound configurable, generación de inputs concretos a partir de caminos satisfacibles. Cubre al menos 3 patrones de bug: división por cero, overflow de entero firmado, violación de aserción explícita. Compara la cobertura de caminos con KLEE sobre 5 pequeños benchmarks. Documenta limitaciones honestas (loops, llamadas, punteros). Entrega el código, los 5 benchmarks anotados, un manual de extensión de 8 páginas y resultados comparativos.
El Briefing
Lo que harás y lo que demostrarás.
Construir un motor didáctico de ejecución simbólica sobre un subset de C que sirva como base para tesis y curso, con cobertura razonable y código claramente extensible.
Earning criteria — what you'll demonstrate
- Implementar ejecución simbólica de extremo a extremo
- Usar Z3 con teorías SMT relevantes (bitvectors, arrays)
- Comparar honestamente contra una herramienta madura como KLEE
- Documentar un motor de forma que terceros puedan extenderlo
Encaje académico
Dónde encaja esto en tus estudios.
Afina las mismas habilidades que tu titulación espera de ti.
Habilidades
Habilidades que demostrarás.
Cada una aparece en tu credencial verificada.
Carreras
Roles para los que esto te prepara.
Títulos reales. Puentes de habilidades reales. Elige el que más se acerque a tu trayectoria.
Trayectorias profesionales que esto construye
Roles canónicosIngeniero de Software
Implementar ejecución simbólica con SMT es una pieza de portafolio que abre roles en developer tools, compiladores y bug-finding industrial.
Este proyecto afina
- symbolic-execution
- smt-solving
- compiler-design