Licenciatura en Ingeniería en Comunicaciones y Electrónica (IS75LI0303)
Licenciatura en Ingeniería en Mecatrónica (IS75LI0403)
Licenciatura en Ingeniería Sistemas Computacionales (IS75LI0502)
Licenciatura en Ingeniería de Datos e Inteligencia Artificial (IS75LI0801)
Explorar la documentación »
Ver Demo
·
Reportar Bug
·
Requiere Modificaciones
Tabla de contenidos
Esta Unidad de Aprendizaje (UDA) desarrolla bases sólidas de programación en C para resolver problemas de ingeniería con énfasis en:
- Estructuras de datos y algoritmos,
- Memoria dinámica y punteros,
- Manejo eficiente de archivos (texto y binarios),
- Buenas prácticas de programación estructurada,
- Trabajo profesional y ético.
Nota: Este repositorio concentra materiales, código, guías y entregables de la UDA.
- UDA: Programación en Ingeniería
- Clave: IILI06104
- Periodo: Enero 2026
- Días: Lunes y Jueves
- Horario: 12:00–14:00
- Aula: B101
- Créditos: 6 (150 horas totales: 72 con profesor/a + 78 autónomas)
- Prerrequisito normativo: Ninguno
- Prerrequisito recomendable: Fundamentos de los Sistemas de Información (IILI06061)
Diseña e implementa programas computacionales en C para abordar problemas complejos en ingeniería de datos e inteligencia artificial, empleando estructuras de datos avanzadas, manipulación de memoria dinámica y manejo eficiente de archivos, con apego a buenas prácticas, ética profesional y metodologías de programación estructurada.
El contenido se organiza en los siguientes ejes:
- Estructura de un programa en C
- Variables
- Reglas para identificadores
- Tipos de datos
- Alcance
- Operadores básicos
- Aritméticos, comparación, lógicos, binarios
- Ejemplos
- Sentencias de control
- Decisiones (if/switch), ciclos (for/while/do-while), anidamientos
- Arreglos
- 1D (inicialización, longitud, búsqueda, ordenamiento: fuerza bruta, inserción, conteo)
- Cadenas (longitud, carácter nulo, copiado, concatenado, búsqueda, conversión)
- 2D y multidimensionales
- Manipulación de bits
- Funciones
- Prototipos, paso por valor/referencia,
main(argc, argv), recursividad
- Prototipos, paso por valor/referencia,
- Estructuras y uniones
- Punteros
- Aritmética, punteros a arreglos/cadenas/estructuras/funciones
- Memoria dinámica
- Punteros a punteros
- Listas enlazadas (simples y dobles), árboles binarios
- Manejo de archivos
- Conceptos, flujo, posicionamiento
- Texto y binarios (lectura/escritura/búsqueda/actualización/temporales)
- Directivas de preprocesamiento
- Macros, depuración
- Tópicos avanzados
- Unicode, números complejos, hilos (threads)
| Elemento | Porcentaje |
|---|---|
| Tareas | 8% |
| Exámenes rápidos | 8% |
| Primera evaluación (1–4) | 8% |
| Primera práctica | 10% |
| Segunda evaluación (5–9) | 8% |
| Segunda práctica | 10% |
| Tercera evaluación (10–13) | 8% |
| Tercera práctica | 10% |
| Código del proyecto final | 10% |
| Presentación del proyecto final | 10% |
| Reporte del proyecto final | 10% |
| Total | 100% |
- Plataformas: Microsoft Teams y CSAcademy
- Entrega por correo:
mibarram@gmail.com - Asunto:
PI 2026 1 T## NUA Apellidos - Formato: reporte PDF con diagramas de flujo y simulaciones (cuando aplique)
- Restricción: no entregar ejecutables; solo código fuente y reporte
- Fecha de entrega: 1 semana (a partir de la asignación)
- Plataforma: Microsoft Teams
- Entrega por correo:
mibarram@gmail.com - Asunto:
PI 2026 1 P# NUA Apellidos - Modalidad: equipo (máximo 3 integrantes)
- Formato: reporte PDF con diagramas de flujo, simulaciones, tablas de resultados
- Restricción: no ejecutables; solo código fuente y reporte
- Fecha de entrega: acordada en clase
- Plataforma: Microsoft Teams
- Entrega por correo:
mibarram@gmail.com - Asunto:
PI 2026 1 Py ## NUA Apellidos - Modalidad: equipo (máximo 3 integrantes)
- Entregables:
- reporte PDF (diagramas de flujo, simulaciones, tablas y análisis),
- código fuente,
- presentación,
- sesión de preguntas y respuestas.
- Introducción
- Objetivos
- Procedimiento (Algoritmo + Estructura de datos)
- Diagrama de flujo
- Resultados y análisis
- Tablas comparativas (si aplica)
- Conclusiones
- Bibliografía
- Repositorio oficial (GitHub): https://github.com/ibarram/ProgIng/
- Microsoft Teams (código de equipo):
co3pdww - Repositorio/Materiales (Dropbox): disponible en el grupo (liga compartida)
- Comunidad (Facebook): grupo de apoyo (liga compartida en Teams)
Plataformas recomendadas para práctica y competencia:
- Repl.it, HackerRank, CSAcademy, OmegaUp, Project Euler, Codeforces, Codingame
Software sugerido:
- Dev-C++, MinGW, Code::Blocks, Visual Studio Community, Visual Studio Code, Eclipse, GNU Emacs, NetBeans
En la UDA trabajaremos principalmente con C. Necesitas un compilador (recomendado: GCC o Clang) y una terminal.
Después de instalar, verifica:
gcc --version
g++ --version
clang --versionPrueba de compilación:
# Compilar
gcc hello.c -o hello
# Ejecutar (Linux/macOS)
./hello
# Ejecutar (Windows)
hello.exeSi usas bibliotecas o
math.h, suele requerirse-lm:gcc main.c -o main -lm
Opción A: MSYS2 (recomendada por estabilidad y paquetes)
- Instala MSYS2 (método estándar para tener terminal + paquetes).
- Abre la terminal MSYS2 UCRT64 o MSYS2 MINGW64.
- Actualiza e instala el toolchain:
pacman -Syu
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain- Agrega al PATH de Windows la carpeta de binarios (por ejemplo,
...\msys64\ucrt64\bin). - Verifica con
gcc --version.
Opción B: MinGW-w64 (simple)
- Instala MinGW-w64, agrega
binal PATH y verifica congcc --version.
Opción C: WSL (Windows Subsystem for Linux)
- Si ya usas WSL (Ubuntu/Debian), sigue las instrucciones de Linux (Debian/Ubuntu).
Opción A: Xcode Command Line Tools (recomendada)
- Instala las herramientas de línea de comandos:
xcode-select --install- Verifica con:
clang --version
gcc --versionEn macOS,
gccnormalmente apunta a Clang (es normal). Puedes compilar conclangogcc.
Opción B: Homebrew + GCC (opcional)
- Instala Homebrew (si lo usas en tu equipo).
- Instala GCC:
brew install gcc- Compila usando
gcc-<versión>(por ejemplogcc-14):
gcc-14 hello.c -o helloEn la mayoría de distribuciones, GCC/Clang se instalan desde el gestor de paquetes.
Debian/Ubuntu
sudo apt update
sudo apt install -y build-essential gdbFedora
sudo dnf install -y gcc gcc-c++ make gdbopenSUSE (Leap/Tumbleweed)
sudo zypper refresh
sudo zypper install -y gcc gcc-c++ make gdbArch/Manjaro
sudo pacman -Syu --needed base-devel gcc gdb- Visual Studio Code + extensiones de C/C++ (Microsoft) + CMake Tools (si aplica)
- Code::Blocks o CLion (si cuentas con licencia)
- En Linux/macOS: terminal +
makees suficiente para iniciar
Software sugerido:
- Dev-C++, MinGW, Code::Blocks, Visual Studio Community, Visual Studio Code, Eclipse, GNU Emacs, NetBeans
Este repositorio incluye ejemplos en C documentados (HTML y PDF) con comentarios estilo Doxygen. La documentación se genera en:
doc/doxygen/html/index.htmldoc/doxygen/latex/refman.pdf
- Doxygen
- Graphviz (opcional, pero recomendado para
CALL_GRAPH/CALLER_GRAPH)
Instalación típica:
- openSUSE:
sudo zypper install doxygen graphviz texlive-scheme-medium latexmk - Ubuntu/Debian:
sudo apt-get update && sudo apt-get install doxygen graphviz texlive-scheme-medium latexmk - macOS (Homebrew):
brew install doxygen graphviz MacTeX
make docsmake docs-pdf.
├─ doc/
│ ├─ pdf/ # Temario, consideraciones, guías
│ ├─ slide/ # Presentaciones (PDF)
│ ├─ img/ # Imágenes (escudo, figuras)
│ └─ markdown/ # Notas y guías (Markdown)
├─ src/
│ ├─ 20251/ # Ejemplos desarrollados en la UDA para el periodo E-J 2025
│ ├─ 20251/ # Ejemplos desarrollados en la UDA para el periodo A-D 2025
│ ├─ 20251/ # Ejemplos desarrollados en la UDA para el periodo E-J 2026
│ ├─ tools/ # Scripts de apoyo (opcional)
│ └─ templates/ # Plantillas de reporte y estilos
├─ data/ # Archivos de entrada/salida
└─ LICENSE
- El código debe ser original y debidamente referenciado.
- Se penaliza el plagio (copiar-pegar sin atribución) y la suplantación.
- Se fomenta la colaboración en equipo cuando esté permitida, respetando las reglas de autoría.
- El uso de herramientas de apoyo (incluida IA) debe reflejarse con transparencia en el reporte (qué se usó y cómo).
- Gazi, O. (2024). Modern C Programming (1st Ed.). Springer Cham.
- Horton, I. (2013). Beginning C (5th Ed.). Apress.
- Chavan, S. (2017). C Recipes (1st Ed.). Apress.
- Toppo, N. & Dewan, H. (2013). Pointers in C (1st Ed.). Apress.
- Goyal, A. (2013). Moving from C to C++ (1st Ed.). Apress.
- Kalicharan, N. (2017). Advanced Topics in C (1st Ed.). Apress.
- Erickson, J. (2019). Algorithms (1st Ed.). University of Illinois.
Dr. M.-A. Ibarra-Manzano - DICIS-UG - ORCID: 0000-0003-4317-0248 - SCOPUS: 15837259000
Unidad de Aprendizaje Link: Programación en Ingeniería
Este repositorio se distribuye bajo GPL-3.0. Consulta el archivo LICENSE.