Tarea: Construcción de una App Multipágina con Streamlit utilizando Sympy

Asignatura: Programación de Computadores
Programa: Ingeniería Agroindustrial
Tema: Módulo sympy y módulo de gráficos

Objetivo

Construir una aplicación multipágina usando Streamlit que exponga los temas módulo de gráficos, específicamente los subtemas:

GRUPO 1

  1. Plots 2D line plots

  2. plot3d(): Plots 3D plots of functions in two variables

GRUPO 2

  1. plot_parametric(): Plots 2D parametric plots.

  2. plot3d_parametric_line(): Plots 3D line plots, defined by a parameter.

GRUPO 3

  1. plot_implicit(): Plots 2D implicit and region plots.

  2. plot3d_parametric_surface(): Plots 3D parametric surface plots.

La aplicación debe incluir tanto la explicación teórica como la implementación del código asociado a estos temas, y debe ser presentada a través de un video.


Objetivos de la Tarea

  1. Aplicación de conocimientos sobre módulos en Python: Los alumnos utilizarán el módulo sympy para resolver problemas para crear gráficos bidimensionales y tridimensionales..

  2. Desarrollo de una aplicación multipágina en Streamlit: Los estudiantes crearán una App multipágina con Streamlit, adquiriendo habilidades para construir interfaces web interactivas que puedan ser usadas para visualización y explicación de conceptos técnicos.

  3. Integración de la programación con conceptos de ingeniería: Los alumnos deberán investigar y explicar la teoría detrás de la creación de gráficos bidimensionales y tridimensionales, implementando el código correspondiente y explicando su funcionamiento en términos simples, con la ayuda de la IA.

  4. Colaboración en el desarrollo de software: Fomentar el trabajo colaborativo a través del uso de GitHub y VSCode para el control de versiones y desarrollo compartido de la aplicación.

  5. Desarrollo de habilidades de comunicación técnica: Los estudiantes presentarán su trabajo a través de un video, adquiriendo competencias para comunicar conceptos técnicos y demostrar el uso de herramientas de programación.


Competencias a Desarrollar

  1. Competencia en programación: Capacidad para utilizar módulos especializados de Python como sympy para resolver problemas complejos de ingeniería relacionados con el módulo de gráficos que permite crear gráficos bidimensionales y tridimensionales.

  2. Desarrollo de aplicaciones web: Habilidad para crear aplicaciones interactivas usando Streamlit, organizando una aplicación multipágina que incluya diferentes subtemas y contenidos técnicos.

  3. Capacidad de investigación: Los alumnos deben ser capaces de investigar sobre conceptos del módulo de gráficos para crear gráficos bidimensionales y tridimensionales, interpretar documentación técnica y aplicarla a un contexto de programación.

  4. Colaboración en proyectos de software: Uso eficaz de herramientas de control de versiones como GitHub y VSCode para trabajar en equipo y llevar un registro del desarrollo del proyecto.

  5. Comunicación técnica efectiva: Capacidad para explicar y presentar resultados de manera clara, tanto en formato escrito (dentro de la aplicación) como en formato audiovisual (a través del video).

Instrucciones

  1. Video de Presentación: Cada equipo debe grabar un video explicando la construcción de la aplicación multipágina en Streamlit. Deben incluir las explicaciones sobre los siguientes dos temas, que serán las páginas de la aplicación:

GRUPO 1

  1. Plots 2D line plots

  2. plot3d(): Plots 3D plots of functions in two variables

GRUPO 2

  1. plot_parametric(): Plots 2D parametric plots.

  2. plot3d_parametric_line(): Plots 3D line plots, defined by a parameter.

GRUPO 3

  1. plot_implicit(): Plots 2D implicit and region plots.

  2. plot3d_parametric_surface(): Plots 3D parametric surface plots.

  1. Estructura de la Aplicación en Streamlit:
    • La aplicación principal debe incluir una introducción general, con la ayuda de la IA al módulo de gráficos que le permite crear gráficos bidimensionales y tridimensionales. Los alumnos deberán investigar y explicar en el video estos conceptos.
    • La aplicación debe contar con una página inicial con la tabla de contenidos que enlace a las dos páginas correspondientes a cada uno de los temas, para cada grupo.
    • Cada una de las páginas debe incluir tanto una explicación en español del tema como la implementación del código en Python utilizando el módulo sympy, según la documentación indicada.
  2. Páginas Específicas: Cómo se indico anteriormente para cada uno de los grupos:

GRUPO 1 Incluir la teoría y el código que aparece en los siguientes enlaces de la documentación de sympy: a) Plots 2D line plots b) plot3d(): Plots 3D plots of functions in two variables

GRUPO 2 Incluir la teoría y el código que aparece en los siguientes enlaces de la documentación de sympy: c) plot_parametric(): Plots 2D parametric plots. d) plot3d_parametric_line(): Plots 3D line plots, defined by a parameter.

GRUPO 3 Incluir la teoría y el código que aparece en los siguientes enlaces de la documentación de sympy: e) plot_implicit(): Plots 2D implicit and region plots. f) plot3d_parametric_surface(): Plots 3D parametric surface plots.

  1. Repositorio en GitHub:
    • La aplicación debe estar correctamente versionada en GitHub. Utilizarán VSCode con el botón de Source Control para conectar su proyecto a un repositorio en GitHub.
    • Todos los integrantes del equipo deben colaborar en el desarrollo del código y la edición del repositorio.

Requisitos Técnicos:

  • Tecnologías a utilizar:
    • Python con el módulo sympy
    • Streamlit para la construcción de la App
    • GitHub y VSCode para el control de versiones y almacenamiento del código.
  • Organización de la App:
    • Deben crear una carpeta principal con el archivo streamlit_app.py como la página de inicio de la App.
    • Cada una de las dos páginas debe estar en una subcarpeta pages dentro del proyecto de Streamlit.

Criterios de Evaluación:

  • Video: Claridad de la exposición y calidad técnica de la presentación (30%).
  • App: Correcta implementación de cada una de las páginas y explicación del código (40%).
  • Repositorio GitHub: Uso adecuado del control de versiones y colaboración en el equipo (30%).

Fecha de entrega:

  • Video y enlace al repositorio de GitHub deben ser enviados antes del [15 de noviembre].

La siguiente es la rúbrica de evaluación para la tarea:


Rúbrica de Evaluación: Gráficos 2D y 3D con Sympy

Criterio Descripción Ponderación (%) Excelente (9-10) Bueno (7-8) Regular (5-6) Deficiente (<5)
1. Presentación en Video Claridad y calidad técnica de la presentación del código y de la teoría de gráficos 2D y 3D, conforme a los temas asignados al grupo. 30% Explicación clara, bien estructurada y detallada de la teoría y el código. Uso correcto de términos técnicos y gráficos bien presentados. Explicación comprensible, con algunos detalles que podrían mejorar. Terminología técnica adecuada, pero con leves imprecisiones. Explicación incompleta o confusa. Presentación de gráficos con errores menores o imprecisiones en la teoría. Explicación inadecuada o ausente. Gráficos mal presentados o teoría no relacionada correctamente con el código.
2. Contenido Teórico Precisión y profundidad de la teoría presentada en relación con los gráficos 2D y 3D. Investigación y comprensión del concepto y su implementación. 20% Teoría completa y bien fundamentada. Investigación clara de los conceptos presentados en cada tema de gráficos. Teoría adecuada, pero con faltantes menores o algunos errores de interpretación. Investigación en general correcta. Teoría con errores significativos o incompleta. Investigación superficial o incorrecta. Teoría ausente o completamente incorrecta. Investigación inadecuada o insuficiente.
3. Implementación del Código en Sympy Implementación correcta del código de sympy para los gráficos asignados, incluyendo tanto gráficos 2D como 3D. 30% Código implementado correctamente, sin errores, y bien explicado. Ejemplos relevantes a los temas asignados. Código mayormente correcto, con algunos errores menores que no afectan la comprensión. Ejemplos adecuados. Código con errores significativos, pero funcional en su mayoría. Algunos ejemplos no se implementan correctamente. Código no funcional o mal implementado. Ejemplos incorrectos o incompletos.
4. Calidad y Complejidad de los Gráficos Presentación de gráficos 2D y 3D bien construidos, con una correcta visualización y personalización, ajustados a los temas asignados. 10% Gráficos bien estructurados, correctamente etiquetados y visualmente claros. Complejidad acorde a los temas. Gráficos adecuados, pero con falta de claridad o etiquetas incompletas. Nivel de complejidad aceptable, pero con detalles faltantes. Gráficos poco claros o mal etiquetados. Visualización deficiente. Complejidad por debajo de lo esperado. Gráficos mal realizados o inadecuados. Etiquetado y visualización ausentes o confusos.
5. Uso de GitHub y Control de Versiones Uso eficaz de GitHub para la entrega del proyecto, con un historial de versiones claro y contribuciones bien documentadas de cada miembro del grupo. 10% GitHub bien utilizado, con un historial detallado de commits, y contribuciones claras de cada miembro. GitHub utilizado adecuadamente, pero con algunos commits o contribuciones que podrían ser más detalladas. Uso limitado de GitHub. Pocos commits o falta de claridad en las contribuciones. GitHub no utilizado o sin un historial de versiones claro. Contribuciones de equipo mal documentadas o ausentes.

Ponderación Total: 100%

  • Excelente (90-100 puntos): Cumple o supera las expectativas en todos los criterios, con una sólida presentación y ejecución.
  • Bueno (70-89 puntos): Trabajo bien ejecutado, aunque con algunos aspectos mejorables en detalles técnicos o teóricos.
  • Regular (50-69 puntos): Cumple con los requisitos mínimos, pero con errores importantes en la presentación o implementación del código.
  • Deficiente (<50 puntos): Trabajo incompleto o con errores significativos en varios de los criterios evaluados.

Esta rúbrica proporciona una evaluación integral, destacando tanto el contenido teórico como la correcta implementación del código y la calidad de los gráficos creados por cada grupo.