Este repositorio contiene material de apoyo para la parte teórica de la asignatura de Programación II, en forma de cuestionarios en formato Markdown.
Metodológicamente, los cuestionarios tienen un doble objetivo:
-
Guiar las clases de teoría presenciales, que tratarán dichas cuestiones en orden.
-
Fomentar que el cuestionario sea respondido ANTES de la clase teórica, siguiendo la metodología de "aula invertida".
Para responder a los cuestionarios, se recomienda (1) responder inicialmente con IA generativa, como ChatGPT, Gemini, GitHub Copilot, etc., (2) verificar las respuestas con recursos online, bibliografía y (3) adaptar las respuestas mediante ediciones personales y/o apoyo de IA generativa. Al final, estos cuestionarios servirán como apuntes para preparar la prueba teórica de la asignatura.
A nivel técnico, las respuestas deben redactarse en formato Markdown, un lenguaje de marcado sencillo y ampliamente utilizado en las IA generativas (que generan este formato para mostrar respuestas con texto que incluye formato, emojis, tablas, etc.). Para más información sobre Markdown, se puede consultar esta guía.
Este repositorio sigue una metodología estructurada que combina el aprendizaje autónomo con la evaluación continua. El proceso incluye un ciclo iterativo semanal donde:
- Profesor: Publica nuevas preguntas 5 días antes de cada clase
- Estudiante: Hace pull, responde con IA generativa, genera PDF y asiste a clase
- Consolidación: Mejora apuntes y realiza commits obligatorios semanales
- Evaluación: El profesor evalúa la actividad mediante el historial de commits
📋 Ver metodología completa y diagrama de flujo →
- Organización estructurada: El uso de cuestionarios fomenta un aprendizaje guiado y enfocado en los temas clave de la asignatura. 📚
- Formato accesible: Markdown es un lenguaje sencillo, ampliamente utilizado y compatible con múltiples herramientas, facilitando la edición y el intercambio de apuntes. 📝
- Aprendizaje activo: Responder preguntas promueve la investigación y la comprensión activa de los conceptos. 🔍
- Apoyo de IA generativa: Herramientas como GitHub Copilot o ChatGPT agilizan la creación de contenido, ofrecen ejemplos prácticos y ayudan a resolver dudas. 🤝
- Gestión eficiente con Git: Utilizar Git para gestionar los apuntes permite aprender esta herramienta clave en entornos profesionales, además de facilitar el control de versiones, la recuperación de cambios anteriores y la mejora continua mediante commits. 🗂️
- Personalización: Los apuntes generados son adaptables a las necesidades y estilo de aprendizaje de cada estudiante. 🎨
- Preparación para el futuro: Este enfoque familiariza con herramientas modernas y metodologías útiles en entornos profesionales. 🚀
Aunque las herramientas de IA generativa como ChatGPT o GitHub Copilot resultan claves en este método, es fundamental verificar las respuestas generadas, especialmente en temas sobre los que no se tiene un conocimiento profundo. Las IAs pueden cometer errores o generar contenido impreciso.
- Consultar fuentes confiables: Contrastar las respuestas con libros de texto, documentación oficial o recursos académicos recomendados. 📖
- Probar los ejemplos de código: Si la respuesta incluye código, ejecutarlo en un entorno controlado para asegurar que funciona como se espera. 🖥️
- Consultar con expertos: En caso de dudas, recurrir a profesores, compañeros o foros especializados. 👩🏫👨🏫
- Revisar el razonamiento: Verificar que las explicaciones sean lógicas y estén alineadas con los conceptos estudiados. 🤔
- Reforzar el aprendizaje: El proceso de verificación no solo asegura la precisión de las respuestas, sino que también ayuda a profundizar en los temas y consolidar la comprensión. 💡
- Se recomienda utilizar un prompt que indique a la IA tanto los conocimientos previos como la longitud esperada de las respuestas.
- Una longitud de respuesta adecuada es de entre 2 a 4 párrafos, excluyendo los ejemplos de código.
- Es aconsejable utilizar Git para gestionar los apuntes, ya que permite llevar un control de versiones, recuperar cambios anteriores y colaborar fácilmente si es necesario Ver instrucciones de Git.
Esta alternativa consiste en utilizar la web de una IA generativa como ChatGPT o Gemini, abierta en el navegador de forma paralela al editor de texto.
El flujo de trabajo sería el siguiente:
- Establecer un prompt inicial en un chat con la IA, que defina el contexto del estudiante (conocimientos previos) y la longitud esperada de las respuestas.
- Copiar cada pregunta y obtener las respuestas de la IA.
- Se puede emplear la utilidad de "canvas" que muchas de estas IAs ofrecen, para que las respuestas queden en una especie de documento al margen.
- Obtener el Markdown de las respuestas. Tanto si se usa canvas como si se usa el propio chat, en este paso no se debe seleccionar y copiar directamente sobre el resultado mostrado en pantalla, sino que debe usarse la utilidad de copiar que estas IAs dejan al final de sus respuestas (o un icono, o un menú contextual, por ejemplo), puesto que cuando se utiliza esta función lo que se copia al portapapeles es el formato Markdown en crudo, que es lo que interesa.
Ventajas:
- No requiere instalación de herramientas adicionales.
- Accesible desde cualquier dispositivo con navegador.
- Interfaz intuitiva y fácil de usar.
Desventajas:
- Limitaciones en la personalización del entorno de trabajo.
- Puede ser menos eficiente para iterar rápidamente entre preguntas y respuestas.
- Dificultades para continuar trabajando con cuestionarios a medio responder o que se quieran mejorar con ayuda de la IA.
En esta alternativa, todo el trabajo se realiza dentro de un entorno de programación, como VS Code, utilizando GitHub Copilot. Esta herramienta de IA generativa puede asistir editando el Markdown con aportaciones, respondiendo preguntas sobre el cuestionario abierto, proporcionando ejemplos adicionales, o incluso generando posibles preguntas de examen relacionadas con el cuestionario.
Ventajas:
- Integración directa con el editor de texto, lo que permite un flujo de trabajo más fluido.
- No requiere cambiar entre aplicaciones o ventanas.
- Mayor personalización del entorno de trabajo (extensiones, temas, etc.).
Desventajas:
- Requiere instalación y configuración previa de herramientas como VS Code y GitHub Copilot.
- Puede tener una curva de aprendizaje inicial para quienes no estén familiarizados con entornos de desarrollo.
- Dependencia de una suscripción activa para GitHub Copilot, aunque los estudiantes universitarios pueden solicitar una suscripción gratuita al Copilot PRO, que permite, por ejemplo, un uso ilimitado a su modelo base (a día de hoy, GPT 4o).
Es necesario contar con una cuenta en GitHub. A continuación, se describen los pasos básicos para gestionar los apuntes con Git:
-
Realizar un fork del repositorio
Acceder al repositorio original en GitHub y hacer clic en el botón "Fork" para crear una copia en la cuenta personal. -
Clonar el fork en la máquina local
Copiar la URL del fork y clonarlo en la máquina local utilizando el siguiente comando:git clone <URL_DEL_FORK> #ej: git clone https://github.com/usuario/guias-programacion-mifork # suponiendo que el fork se llama "guias-programacion-mifork" cd guias-programacion-mifork
-
Definir el repositorio original como upstream
Configurar el repositorio original comoupstreampara poder obtener actualizaciones en el futuro (por ejemplo: nuevos cuestionarios de cada semana):git remote add upstream https://github.com/GID-IAXPRO/guias-programacion.git
-
Comprobar si el profesor ha subido un nuevo cuestionario (o cualquier otro cambio) Para ello, lo que se hace es ejecutar pull sobre el remoto
upstream. Se ejecuta el siguiente comando:git pull upstream main --no-rebase --no-edit
Esto traerá los cambios de la rama principal del repositorio original y los integrará en el repositorio local.
-
Editar los archivos y realizar commits
Para editar los ficheros, lo recomendable es copiar el cuestionario a la subcarpetadoc/respuestas. De esta forma, podrás conservar siempre el cuestionario original, se evitan conflictos de git con los cambios que hace el profesor, y permite responder incluso de varias formas un mismo cuestionario (por ejemplo: con y sin IA generativa). Por ejemplo, copiardoc/enunciados/fichero.mdadoc/respuestas/fichero-gpt4.1.md.cp doc/enunciados/tema_1_clases_y_objetos.md doc/respuestas/tema_1_clases_y_objetos_gpt4o.md
Realizar los cambios necesarios en los archivos que tengas en
doc/respuestas. Luego, añadir y guardar los cambios con los siguientes comandos:git add . git commit -m "Respondidas a las preguntas 1 a 4 del Tema 1"
-
Subir los cambios al fork
Subir los cambios al repositorio en GitHub:git push origin main
De cara a imprimir, exportar, o simplemente visualizar en cualquier dispositivo el formato Markdown de forma amigable, se puede generar un fichero PDF.
Si bien se pueden emplear herramientas externas para generar documentos PDF, o extensiones de VSCode (recomendable: Markdown Preview Enhanced). No obstante, este repositorio incluye unas instrucciones para generar los PDFs directamente de todos aquellos ficheros markdown que se encuentren en la carpeta doc/respuestas.
Antes de comenzar, se debe contar con lo siguiente:
- Conda (Anaconda o Miniconda).
Si se utiliza Windows, se recomienda configurar el entorno utilizando WSL (Windows Subsystem for Linux). Los pasos son los siguientes:
-
Instalar WSL
Abrir PowerShell como administrador y ejecutar:wsl --install
Reiniciar la máquina si es necesario.
-
Configurar una distribución de Linux
Una vez instalado WSL, seleccionar e instalar una distribución de Linux (como Ubuntu) desde la Microsoft Store. -
Instalar Conda en WSL
Descargar e instalar Miniconda dentro del entorno WSL siguiendo las instrucciones para Linux disponibles en Miniconda. -
Clonar el repositorio y seguir las instrucciones
Una vez configurado WSL y Conda, seguir las instrucciones principales de este README desde el entorno WSL.
-
Crear y activar un entorno conda
Crear y activar un entorno conda utilizando el archivoenvironment.ymlincluido en el proyecto, en la subcarpetapdf:cd pdf conda env create -f environment.yml conda activate guias-programacion -
Editar los cuestionarios
Como se ha comentado antes, los ficheros de preguntas deben copiarse desde la carpetadoc/enunciadosa la carpetadoc/respuestas. Una vez copiados, editar los archivos endoc/respuestaspara responder a las preguntas. -
Generar los PDF
Una vez editados los cuestionarios, utilizarmakepara generar los PDFs:make
Tras ello, en la carpeta
pdf/buildestarán los ficheros PDF.Nota: El sistema incluye soporte automático para diagramas Mermaid. Si tus archivos Markdown contienen diagramas Mermaid (usando bloques de código
mermaid), el sistema instalará automáticamente las dependencias necesarias la primera vez que ejecutesmake.
Para incluir diagramas en tus respuestas, puedes usar la sintaxis de Mermaid:
graph TD
A[Inicio] --> B{¿Condición?}
B -->|Sí| C[Acción 1]
B -->|No| D[Acción 2]
C --> E[Fin]
D --> E
Los diagramas se convertirán automáticamente a imágenes en los PDFs generados.
Para mejorar la experiencia de edición de archivos Markdown con diagramas mermaid, se recomienda instalar la extensión Markdown Preview Mermaid Support
- El archivo
environment.ymlincluye todas las dependencias necesarias, comopandocytectonic, para convertir los archivos Markdown a PDF. - Soporte para Mermaid: El sistema detecta automáticamente si necesitas generar diagramas Mermaid e instala las dependencias necesarias (
@mermaid-js/mermaid-cliypandoc-mermaid-filter) sin intervención manual. - Si se necesita personalizar el estilo del PDF, se pueden modificar los archivos de configuración o las reglas en el
Makefile.