Desde 2021, tengo el privilegio de compartir mis conocimientos y experiencia como profesor en la Universidad Nacional de Educación a Distancia (UNED), donde imparto asignaturas de los departamentos de Inteligencia Artificial y de Lenguajes y Sistemas Informáticos. Esta experiencia me está permitiendo desarrollar habilidades excepcionales en comunicación y pedagogía, que complementan mi carrera profesional como ingeniero de software para empresas privadas.
Enseño a los estudiantes los fundamentos matemáticos esenciales para la informática. Esto incluye el modelado de datos a través de estructuras como conjuntos, relaciones y funciones, que permiten representar y organizar información de manera efectiva. También se introduce el uso de un lenguaje formal para especificar problemas y restricciones, lo que facilita una comunicación precisa y clara en el desarrollo de algoritmos. Además, se exploran técnicas de construcción y verificación de soluciones, como mecanismos deductivos y la recursión, que son cruciales para desarrollar soluciones robustas y eficientes. Estas habilidades son fundamentales para el desarrollo de software y la resolución de problemas informáticos, ya que proporcionan a los estudiantes las herramientas necesarias para abordar desafíos complejos y fomentan un pensamiento crítico vital en el campo de la informática.
Enseño a los estudiantes los conocimientos fundamentales sobre estructuras de datos y técnicas de programación avanzadas: Estructuras de datos básicas: arreglos, registros, enumeraciones. Programación recursiva y su aplicación en la resolución de problemas. Análisis de la eficiencia y complejidad de algoritmos. Implementación y uso de listas enlazadas, pilas y colas. Árboles como estructuras de datos jerárquicas y sus propiedades. Árboles binarios de búsqueda para la organización eficiente de datos. Estas habilidades son esenciales para diseñar e implementar soluciones informáticas eficientes y escalables.
Muestro a los estudiantes el camino para que aprenden a diseñar y construir componentes clave de procesadores de lenguaje: Analizadores léxicos para reconocer tokens en lenguajes de programación. Analizadores sintácticos descendentes y ascendentes para verificar la estructura gramatical de programas. Técnicas de análisis sintáctico como el método predictivo recursivo y la construcción de tablas de análisis. Estas habilidades son fundamentales para la construcción de compiladores, intérpretes y otras herramientas de procesamiento de lenguajes de programación.
Muestro el diseño y construcción de procesadores de lenguaje, cubriendo los siguientes temas clave: Análisis semántico: Traducción dirigida por la sintaxis y comprobación de tipos. Generación de código intermedio y código destino (máquina o ensamblador). Entornos en tiempo de ejecución para la gestión de memoria y ejecución de programas. Diseño e implementación de intérpretes. Los estudiantes adquieren habilidades avanzadas para desarrollar compiladores, intérpretes y otras herramientas de procesamiento de lenguajes de programación.
Creación de presentaciones y material complementario para facilitar el aprendizaje de los estudiantes.
Orientación y asesoramiento a estudiantes en sus prácticas.
Implementación de metodologías activas y herramientas tecnológicas para mejorar la experiencia de aprendizaje.