Hola a quienes me leen,
De nuevo es un gusto saludarles. En esta ocasión estoy realizando un nuevo nano curso del Instituto Nacional de Tecnologías Educativas y de Formación del Profesorado (INTEF) del Ministerio de Educación y Formación Profesional del Gobierno de España, que se llama "Inteligencia Artificial en el día a día".
Como reto final de este nano curso, se pide realizar una búsqueda de un caso de uso (aplicación, vídeo, tutorial, etc.) que demuestre la aplicación de la Inteligencia Artificial en la Educación (o en el área de tu especialidad) y explicar brevemente cómo afectará en el presente y futuro de mi actividad diaria.
Considerando que una de mis actividades diarias es la enseñanza de la Ingeniería de Software, lo cual incluye el desarrollo de soluciones tecnológicas, pues he juntado ambos conceptos en un campo plasmado así: IA@Educ+ISW/DaD, es decir,
Inteligencia Artificial aplicada a la Educación
en el campo de la Ingeniería de Software, en el día a día
Un punto de vista interesante, retador y de investigación activa (ver por ejemplo la página de Jordi Cabot), es la cognificación de la Ingeniería del Software dirigida por Modelos. Esto es un enfoque complejo que resumiré así: El desarrollo de tecnologías de software es más eficiente adoptando modelos ya establecidos, en lugar de "reinventar la rueda" en cada ocasión. Dado que el uso de estos modelos genera patrones de datos (como identificar los modelos más usados y/o útiles), es natural buscar producir y aplicar este conocimiento durante el desarrollo, a fines de hacer la programación de software más rápida, con menos errores y siguiendo las mejores prácticas establecidas.
Este proceso de aplicar técnicas de conocimiento (Inteligencia Artificial) para incrementar el rendimiento e impacto de un proceso, es lo que se llama Cognificación. Les invito a consultar este artículo de Jordi Cabot (en inglés), Cognifying Model-Driven Software Engineering – Extended version, si desean saber más sobre el tema.
En la enseñanza de la Ingeniería del Software, pues el día a día consiste en capacitar a cada discente en identificar y aprehender las nuevas prácticas emergentes del área y sus herramientas tecnológicas, y dentro de este campo tan amplio, uno de los aspectos más relevantes es el uso de herramientas inteligentes para incorporar el conocimiento colectivo durante la generación de código, como por ejemplo lo son Kite y Tabnine.
Estas herramientas se clasifican como de Inteligencia Artificial específica, pues su conocimiento se restringe a la labor de sugerencias durante la generación de código de aplicaciones de software, integrándose con ciertos entornos y lenguajes de programación muy específicos.
La implantación de estas herramientas dentro del curso de Ingeniería de Software consiste en establecerlas como parte de la plataforma tecnológica de desarrollo en la etapa de codificación de la aplicación que constituye el proyecto final del curso.
Según el sitio de Kite, el esfuerzo de escritura de código de un programador se reduce en un 47%, asimismo reduciendo los errores y adoptando los mejores patrones usados por la comunidad mundial de programadores.
A continuación les dejo un par de videos disponibles en Youtube:
Video de demostración de Kite titulado "El copiloto inteligente para programadores" (con subtítulos):
Ania Kubow realiza una comparativa entre Tabnine y Kite (con subtítulos no muy inteligentes, por cierto):
¿Cuales son algunos de los posibles riesgos de emplear estas herramientas con fines didácticos?
La primera apreciación es la posibilidad de homogeneizar la generación de código: Al emplear los patrones más populares, se favorece la adopción de código ya hechos, en lugar de fomentar la creatividad individual en la codificación. Sin embargo, este riesgo se ve atenuado por el hecho que este curso no tiene por objetivo enseñar a programar (quienes lo toman ya aprendieron a hacerlo en cursos previos) sino administrar el proceso de desarrollo, y en la etapa de codificación, las herramientas inteligentes suponen una gran ayuda.
Otra apreciación relevante es el riesgo del escaso conocimiento previo y su pertinencia: Las herramientas inteligentes requieren experiencias previas, y aunque Kite y Tabnine proclaman tener bases de conocimiento de millones de referencias, nada garantiza que cubran las necesidades específicas de una aplicación, o estilos de programación locales.
Finalmente, otro riesgo es el rechazo de estas herramientas de conocimiento colectivo por temor a perder la privacidad y propiedad de la información. Sin embargo, para mitigar esto algunas herramientas (como Tabnine) pueden trabajar con repositorios de conocimientos locales, sin compartir datos al exterior, mientras otras enfatizan que el código realizado no se traslada a fuentes externas, sino solamente estadísticas sobre la frecuencia y patrones de uso.
Respondiendo la inquietud principal del Reto, en mi práctica diaria como educador estas herramientas inteligentes son muy beneficiosas, pues permiten que quienes participan del curso de Ingeniería de Software se centren en administrar el desarrollo de las aplicaciones (nuestro objetivo central) en vez de distraerse con la generación del código de la aplicación, logrando obtener un producto de mejor calidad y siguiendo cabalmente el proceso, a la par de estar actualizados en los tópicos actuales y direcciones futuras del área.
Espero les haya interesado el tema, hasta pronto
Un dinosaurio natural.
No hay comentarios.:
Publicar un comentario