Este es el perfil para la cátedra de Programación 1 (B6003) de la Ingeniería en Computación de la Universidad Nacional de Río Negro, sede Andina, que se encuentra ubicada en San Carlos de Bariloche.
Desde la edición del año 2025, la cátedra ha incorporado un resumen exhaustivo de los temas impartidos en ella, además de algunos temas adicionales (y avanzados) de interés.
En el Apunte, encontraran los términos y condiciones de la cursada, aspectos generales y un extensivo apunte sobre el lenguaje.
En este curso, adquiriremos conocimientos sobre cómo programar utilizando el
lenguaje de programación C, utilizando de manera extensa el uso de git.
La cátedra de Programación 1 utiliza un entorno de desarrollo estructurado bajo estándares modernos de ingeniería de software en C11 / GNU C, con un fuerte enfoque pedagógico y de aseguramiento de calidad:
- Compilador y Flags Estrictos: Todo el código se compila bajo
-Wall -Wextra -Werror -pedantic -std=c11, garantizando cero advertencias toleradas y detección temprana de comportamiento indefinido. - Reglas de Calidad y Estilo Cátedra (
0xXXXXh): Adhesión estricta al Catálogo de Reglas de Estilo, clasificadas temáticamente mediante máscaras hexadecimales (0x00XXha0x50XXh). - Aislamiento y Sanitizers: Ejecución en entornos sandbox herméticos (Bubblewrap / cgroups) y compilación instrumentada con AddressSanitizer (ASan), UndefinedBehaviorSanitizer (UBSan) y Valgrind para auditoría exhaustiva de memoria y prevención de leaks.
- Gestor de Paquetes y Herramientas: Las herramientas de soporte y análisis
se distribuyen de forma nativa e independiente mediante
uvy entornos virtuales reproducibles.
La cátedra orgullosamente ha desarrollado un conjunto de herramientas de código para ayudar al aprendizaje y la docencia.
Cada herramienta tiene su propio repositorio, por lo que se aceptan issues, PR's y comentarios generales.
- daedalus: Compilador pedagógico y traductor contextual de advertencias y errores de GCC/Clang/ld a explicaciones claras en español.
- esper: Explicador interactivo y formateador estructurado de salidas de diagnóstico del compilador.
- tetsuo: Traductor y analizador pedagógico de fallas reportadas por Sanitizers (ASan, UBSan, MSan).
- dredd: Juez automático de cátedra, ingesta por lotes de entregas, detección de plagio (Winnowing) y generación de reportes pedagógicos modulares.
- ripley: Motor de análisis
estático AST y auditor del catálogo completo de 48 reglas P1 de cátedra
(
0xXXXXh). - gaff: Linter de estilo arquitectónico y convenciones obligatorias de formato con soporte de autofix automático.
- spunkmeyer: Detector AST de antipatrones pedagógicos y vicios didácticos comunes en C.
- weyl: Diffing semántico y comparación estructural de ASTs entre soluciones canónicas y entregas.
- bishop: Visualizador interactivo de memoria C (Stack Frames, variables locales, Heap y punteros) en terminal ASCII y Mermaid.
- sebastian: Analizador de recursión, perfilado de consumo de memoria en Stack Frames y detección de desbordes de pila (stack overflow). *
- brett: Auditor de alineación de
memoria y padding en
structs C con optimizador de reordenamiento de campos. - motoko: Verificador de encapsulamiento estricto y opacidad en Tipos Abstractos de Datos (TDAs).
-
rachel: Desensamblador y
visualizador de estructuras de control y comparación de eficiencia en Jump
Tables
$O(1)$ vs cadenasif-else. - giger: Generador de grafos de flujo de control (CFG), mapas de llamadas (*Call Graphs*) y detección de código muerto.
- drake: Fuzzer pedagógico guiado por límites (valores extremos, desbordes) y cobertura de ramas.
- vassili: Motor de Mutation Testing en C para evaluar la efectividad y robustez de suites de pruebas unitarias.
- dietrich: Validador de cobertura lógica avanzada MC/DC (Modified Condition/Decision Coverage).
- tyrell: Generador sintético y
determinista de datasets y casos de prueba
.in/.outcon restricciones. - callahan: Verificador formal de contratos ACSL (pre/postcondiciones e invariantes) con Frama-C WP.
- hal: Asistente forense para inspección de core dumps y análisis post-mortem pedagógico de fallas de segmentación (SIGSEGV/SIGABRT).
- holden: Generador de mocks e inyector determinista de fallos de asignación de memoria y archivos en tiempo de compilación.
- vasquez: Inyector de fallos
de entorno, hardware y llamadas al sistema vía
LD_PRELOAD. - kane: Simulador y depurador visual de operaciones de E/S de bajo nivel y archivos binarios.
- nostromo: Sandbox hermético de ejecución aislada con Bubblewrap y límites estrictos de CPU y memoria.
- kaneda: Auditor de seguridad en código C, detección de buffer overflows y syscalls restringidas.
- wierzbowski: Auditor de grafos de inclusión de cabeceras, dependencias circulares y Makefiles.
- parker: Auditor de estabilidad
de ABIs, visibilidad de símbolos (
__attribute__) y compatibilidad binaria. - zhora: Linter y auditor de
seguridad para macros complejas del preprocesador C (
#define). - crowe: Linter de portabilidad multi-arquitectura (x86_64, ARM, RISC-V y endianness).
- corbel: Generador liviano de
documentación de APIs, interfaces TDA y páginas de manual (
man 3). - ferro: Perfilador de rendimiento algorítmico, ciclos de CPU y hardware counters.
- deckard: Generador de guías de trabajos prácticos balanceadas según taxonomía de Bloom y presupuestos de tiempo.
- idkfa: Generador de cuestionarios Moodle XML parametrizados y variantes aleatorias anti-trampa con ejecución GCC.
- alucarD: Generador de exámenes y bancos de preguntas GIFT/Moodle XML con verificación de código C.
-
moodle-toolbox:
Utilidades de mantenimiento, conversión GIFT
$\leftrightarrow$ XML y reorganización de categorías para Moodle.