Back to top

Ficha Proyecto I.E. 2023-2024



PROGEN-IA: USO DE HERRAMIENTAS DE IA GENERATIVA EN PROGRAMACIÓN

Coordinador(a): GUILLERMO ANTONIO VIGUERAS GONZALEZ
Centro: E.T.S. DE INGENIEROS INFORMÁTICOS
Nivel: Nivel 2. Proyectos promovidos por otros colectivos de profesores de la UPM
Código: IE24.1003
... memoria no disponible
Línea: E7. Innovación en métodos de evaluación para el apredizaje antes las tecnologías emergentes.
Miembros de la comunidad UPM que lo componen
Nombre y apellidos Centro Plaza *
ANGEL HERRANZ NIEVA E.T.S. DE INGENIEROS INFORMÁTICOS L.D. PRF.COLABORADOR
Belén Otero Carrasco Otro centro de la UPM OTROS UPM
GUILLERMO ROMAN DIEZ E.T.S. DE INGENIEROS INFORMÁTICOS L.D. PRF.CONTR.DOCT.
GUILLERMO ANTONIO VIGUERAS GONZALEZ E.T.S. DE INGENIEROS INFORMÁTICOS L.D. PRF.CONTR.DOCT.
SERGIO PARAISO MEDINA E.T.S. DE INGENIEROS INFORMÁTICOS L.D. PRF.AYUD.DOCTOR
* La plaza que se muestra corresponde a la ocupada en el momento de la convocatoria
(para PDI/PAS de la UPM, en el resto de casos no se especifica).
DESCRIPCIÓN DEL PROYECTO

La Inteligencia Artificial (IA) generativa se refiere a un subconjunto de la IA que se centra en la creación de contenido nuevo en lugar de simplemente analizar los datos existentes. Los sistemas basados en IA generativa han experimentado un gran avance en las últimas décadas. Lo que hace que la IA generativa sea mucho más potente que su predecesora es que utiliza el aprendizaje automático (ML, por sus siglas en inglés) para crear contenidos totalmente nuevos que son prácticamente indistinguibles de los que pueden generar los seres humanos. Puede, por ejemplo, crear personajes y argumentos para juegos en línea, generar informes financieros, gestionar servicios complejos de atención al cliente e incluso generar código y programas de ordenador.

En el campo de la programación, la IA generativa ya está teniendo un impacto significativo. Empresas como OpenAI han desarrollado potentes modelos generativos, como GPT-4, que pueden generar texto similar a un humano basándose en una descripción en lenguaje natural. Estos modelos se han utilizado para generar automáticamente fragmentos de código, escribir documentación e incluso crear programas completos. Esto tiene el potencial de acelerar enormemente el proceso de desarrollo y mejorar la productividad en general.

De este modo, el uso de IA generativa en programación ofrece varios beneficios. En primer lugar, puede aumentar considerablemente la eficiencia y la productividad. Al automatizar tareas de codificación repetitivas, los programadores pueden centrarse en aspectos más complejos y creativos de su trabajo. Esto puede conducir a ciclos de desarrollo más rápidos y tiempos de comercialización más cortos para los productos de software. En segundo lugar, la IA generativa puede mejorar la exactitud y precisión del código. Al aprender de grandes repositorios de código, los modelos generativos pueden producir código que no sólo es sintácticamente correcto sino que también sigue las mejores prácticas y los estándares de la industria. Esto puede ayudar a reducir errores y mejorar la calidad general del código base. Por último, la IA generativa tiene la capacidad de manejar tareas complejas que, de otro modo, llevarían mucho tiempo o serían difíciles para los programadores humanos. Por ejemplo, puede generar automáticamente casos de prueba o sugerir optimizaciones para el código existente. Esto puede ayudar a los programadores a ahorrar tiempo y esfuerzo, permitiéndoles centrarse en aspectos más críticos de su trabajo.

Además de los beneficios antes mencionados, el uso de la IA generativa en programación también plantea varios desafíos. Por ejemplo, presenta desafíos técnicos, debido al gran número de casos de ejemplo y recursos computacionales requeridos, o desafíos éticos, debido a posibles sesgos en el entrenamiento o por su uso con fines maliciosos. Además, la adopción de la IA generativa supone un desafío por parte de los programadores ya que puede verse como una amenaza para la seguridad laboral o la experiencia profesional. Sin embargo, es importante hacer ver a futuros desarrolladores que la IA generativa es una herramienta para mejorar y aumentar las capacidades humanas y no para reemplazarlas.

Así en un mundo de programación con IA generativa, los desarrolladores todavía desempeñan un papel crucial. Si bien los modelos generativos pueden automatizar ciertas tareas de codificación, carecen de la creatividad, la intuición y la capacidad de resolución de problemas de un desarrollador con experiencia. Así los programadores pueden trabajar colaborativamente con la IA generativa brindando supervisión e intervención. Pueden revisar y validar el código generado, realizar las modificaciones necesarias y garantizar que cumpla con los requisitos y estándares deseados. Los programadores también tienen un papel importante a la hora de garantizar el uso ético de la IA generativa. Por otro lado, son responsables de seleccionar y preparar los datos de entrenamiento, así como de abordar cualquier sesgo o aspecto ético que pueda surgir. Además, los programadores humanos pueden proporcionar el contexto necesario y conocimiento del dominio del que pueden carecer los modelos generativos.

Ante estos avances de la IA generativa, es importante que los estudiantes de programación, como futuros desarrolladores de software, se familiaricen con este tipo de herramientas, no sólo para conocer su uso, con sus beneficios y limitaciones, sino para que precisamente las vean como complementos a su labor técnica que les permitirá mejorar su productividad y eficacia a la hora de codificar. En este contexto se plantea la presente experiencia de innovación educativa para que los alumnos de programación entren en contacto con la IA generativa, pero fomentando su rol de análisis y supervisión responsable del código producido por la IA generativa.

OBJETIVOS DEL PROYECTO

Los objetivos que se pretenden alcanzar con la presente experiencia de innovación educativa son:

  • Generar material didáctico que permita a los alumnos aprender a utilizar herramientas de IA generativa en programación.
  • Que los alumnos aprendan a utilizar herramientas de IA generativa para programación, en tareas como generación de trozos de código o de casos de test para validar código.
  • Dar a conocer a los alumnos las limitaciones y desafíos que presenta el uso de la IA generativa en programación en relación con aspectos éticos y técnicos.
  • Fomentar en el alumno el análisis y evaluación del código proporcionado por herramientas de IA generativa, antes de aceptarlo como válido.
  • Familiarizar al alumno en el uso de la IA generativa en programación y, en base a sus beneficios, facilitar que no vea esta tecnología como una amenaza en su futuro profesional sino como un complemento y una herramienta de gran ayuda.
  • Dotar a los docentes de herramientas, basadas en IA generativa, capaces de obtener casos de prueba, adaptados al código desarrollado por los alumnos, para facilitar y ayudar en su evaluación.
CONTRIBUCIÓN A LA MEJORA DE LA CALIDAD

En el mercado laboral en el que se tendrán que integrar los alumnos, cada vez más se hace uso de herramientas basadas en IA generativa para desarrollo de software, sin embargo y debido a su novedad, los alumnos desconocen cómo utilizar este tipo de herramientas, así como sus beneficios y limitaciones. Por este motivo, el proyecto propuesto contribuiría a:

  • Introducir a los alumnos en el uso herramientas programación basadas en tecnologías de IA generativa.
  • Dar a conocer las limitaciones que presenta el uso de la IA generativa en programación para fomentar el análisis y evaluación del código proporcionado por este tipo de tecnologías.
  • Fomentar en el alumno una visión positiva de la IA generativa en programación, para no considerarla una amenaza en su futuro laboral.

Por otro lado, y para contribuir a la mejora de la calidad, los docentes también harán uso de la IA generativa para corrección y evaluación de la solución a los ejercicios de programación planteados a los alumnos. Así, el código desarrollado por los alumnos será evaluado por los docentes con ayuda de herramientas de IA generativa para obtener casos de test y comprobar aspectos funcionales el código entregado por los alumnos.

FASES DEL PROYECTO Y ACCIONES QUE SE VAN A DESARROLLAR

El proyecto constará de las siguientes fases y acciones, enumeradas en orden cronológico:

  • Generación de material didáctico y de consulta que se distribuirá a los alumnos para que éstos puedan aprender a utilizar herramientas de IA generativa en programación.
  • Impartición de sesiones prácticas a los alumnos para que aprendan a utilizar herramientas de IA generativa en programación.
  • Realización en el aula de ejercicios prácticos de programación utilizando herramientas de IA generativa.
  • Corrección y evaluación de la solución a los ejercicios de programación propuesta por los alumnos. Así, el código desarrollado por los alumnos será evaluado por los docentes con ayuda de herramientas de IA generativa para obtener casos de test y comprobar aspectos funcionales el código entregado por los alumnos.
  • Análisis de los resultados obtenidos por los alumnos al resolver ejercicios de programación utilizando herramientas de IA generativa para comprobar si el uso de estas herramientas mejora su desempeño al programar.
SEGUIMIENTO Y EVALUACION

El proyecto se organizará en paquetes de trabajo dentro de los cuales se definirán tareas para realizar el seguimiento del proyecto así como hitos para la medición de resultados. Los paquetes de trabajo son:

  • Paquete trabajo 1: generación de material didáctico
    • Tarea 1.1: generación de documentación de consulta para que los alumnos puedan aprender a utilizar herramientas de IA generativa en programación.
    • Tarea 1.2: generación de documentación de consulta para que los profesores puedan utilizar herramientas de IA generativa para generar casos de prueba para la corrección de ejercicios de programación.
    • Hito 1.1: generación de material didáctico para alumnos y profesores para aprender a utilizar herramientas de IA generativa en programación.
  • Paquete de trabajo 2: ejercicios prácticos con los alumnos
    • Tarea 2.1: preparación de sesiones prácticas con los alumnos para aprender a manejar herramientas de IA generativa en programación.
    • Tarea 2.1: diseño de varios ejercicios prácticos para que los alumnos los resuelvan.
    • Tarea 2.3: resolución por parte de los alumnos de los ejercicios de programación y recogida de las soluciones propuestas por los alumnos.
    • Hito 2.1: enunciado con ejercicios de programación para resolver en el aula.
    • Hito 2.2: soluciones propuestas por los alumnos a los ejercicios de programación.
  • Paquete de trabajo 3: corrección de ejercicios y análisis de resultados
    • Tarea 3.1: Identificación de métricas para analizar el impacto del uso de herramientas de IA generativa por parte de los alumnos (e.g.: tiempo requerido de programación, porcentaje de funcionalidad implementada, etc.).
    • Tarea 3.2: Corrección de los ejercicios propuestos por los alumnos, contando con la ayuda de herramientas de IA generativa.
    • Tarea 3.3: Análisis de resultados del uso de herramientas de IA generativa por parte de los alumnos, en base a las soluciones de los ejercicios (Tarea 3.2) y las métricas identificadas en la Tarea 3.1.
    • Hito 3.1: informe con un análisis de resultados del desempeño de los alumnos en el uso de herramientas de IA generativa en programación.
PRODUCTOS RESULTANTES

Los productos resultantes de la experiencia de innovación educativa propuesta serían:

  • Documentación de consulta para que los alumnos puedan aprender a utilizar herramientas de IA generativa en programación.
  • Documentación de consulta para que los profesores puedan utilizar herramientas de IA generativa para generar casos de prueba para la corrección de ejercicios de programación.
  • Informe con un análisis de resultados de la experiencia educativa del uso de herramientas de IA generativa para enseñar programación.

Las herramientas basadas en IA generativa que se pretenden utilizar, tanto para alumnos como para profesores, suelen dar soporte a distintos lenguajes de programación. Por este motivo, la documentación didáctica generada se puede trasladar a otras asignaturas de programación tanto dentro como fuera de la UPM.

MATERIAL DIVULGATIVO

Se divulgará el trabajo realizado en este PIE tanto en medios tradicionales (noticias en páginas web de la UPM, de la ETSIINF y del departamento de Lenguajes y Sistemas, entre otras) como las redes sociales y blogs relacionados con educación.

Se plantea también la preparación de artículos para su presentación en congresos y revistas relacionados con educación con el fin de describir y difundir tanto el trabajo desarrollado en este PIE como los resultados obtenidos.