- Presentación
- Sesión 7.1
- Sesión 7.2
- Sesión 7.3
- Sesión 7.4
- Sesión 7.5
- Agregar un editor online a una tarea en GitHub Classroom
- Ventajas con respecto a los sistemas tradicionales de recolección de tareas del alumnado
- GitHub Education: ventajas para instituciones educativas
- GitHub Classroom: gestión de prácticas en clase
- Metodologías de trabajo para prácticas individuales
- Forks y Pull Requests
- GitHub Classroom
- Metodologías de trabajo para prácticas en grupo
- Repositorios compartidos: organizaciones y equipos
- GitHub Classroom
- Flujos de trabajo con Git para tareas en grupo
- Utilización con Scrum
- GitHub Global Campus
- GitHub Classroom
- GitHub Classroom autograding
- Student Developer Pack
- GitHub Teachers Discussions
- Gestión de GitHub Classroom con GitHub CLI
- Materiales del curso de Scrum
- GitHub y Scrum (Seminario Universidad Alicante)
- Los alumnos entran en contacto con metodologías de trabajo usadas en la industria
- Puesta en marcha sencilla
- Distribución de código base sobre el que trabajar
- Posibilidad de ofrecer una mejor retroalimentación a los alumnos sobre su trabajo
- Mayor comodidad a la hora de distribuir y recoger tareas
- Posibilidad de integrar metodologías de Desarrollo Guiado por Pruebas en las prácticas
- Servidor web integrado en la propia infraestructura (GitHub Pages)
- Posibilidad de realizar despliegues automáticos de aplicaciones para su exposición y prueba
- GitHub Education Global Campus
- Recursos para estudiantes:
- Conjunto de herramientas gratuito: Student Developer Pack
- Posibilidad de obtener una certificación: GitHub Campus Experts
- Recursos para profesores:
- Servicio de gestión de clases y prácticas: GitHub Classroom
- Comunidad de profesores: GitHub Teachers Discussions
- Posibilidad de obtener una certificación: GitHub Campus Advisors
- Acceso a GiHub CodeSpaces, un servicio de entornos de desarrollo en la nube que permite configurar Visual Studio Code junto con las dependencias (lenguajes de programación, librerías, etc.) necesarias para el proyecto. Este servicio se puede integrar en las prácticas creadas con GitHub Classroom.
- Herramienta para gestionar la creación y distribución de tareas con los alumnos
- Integrada con GitHub
- Automatiza la creación de repositorios privados para tareas individuales o de grupo
- Permite tomar un repositorio existente como base para la tarea (plantilla)
- Crea un listado de alumnos y lo enlaza automáticamente con los usuarios de GitHub
- Hace el seguimiento de los repositorios de cada tarea y muestra los enlaces a cada uno de ellos
- Descarga con un solo click todas las tareas de los alumnos
- Testeo y calificación automática
- Se puede crear una clase (classroom) para cada clase que impartamos
- Cada clase va asociada a una organización de GitHub
- Se tiene que autorizar el acceso de cada clase a la organización de GitHub correspondiente
- En cada clase se pueden crear tareas (assignments)
- En cada clase se puede crear una lista de alumnos (roster) indicando una lista de identificadores
- Si se ha creado la lista de alumnos, el alumno tendrá que elegirse de la lista al aceptar la tarea
- El listado de alumnos permite asociar nombres de usuario de GitHub a datos que conozcamos de nuestros alumnos (nombre, apellidos,…)
- Las tareas pueden ser privadas o públicas
- En las tareas privadas los alumnos no pueden ver el código del resto de alumnos
- Las tareas (assignments) pueden ser individuales o de grupo
- En cada clase se mostrará un listado con las tareas creadas
- Cada tarea tiene un enlace de invitación
- El enlace de invitación se distribuye a los alumnos
- Cada vez que un alumno acceda a la invitación podrá aceptar la tarea
- En caso de haber definido lista de alumnos, el alumno podrá seleccionar sus datos para quedar identificado
- Al aceptar una tarea se crea un repositorio para cada alumno en el caso de las tareas individuales.
¡IMPORTANTE! Hasta ahora, los repositorios creados para cada alumn@ que aceptara la tarea eran una copia del repositorio base, creado como plantilla por el profesor/a. A partir de Junio de 2024, los repositorios creados para cada alumn@ que acepte la tarea serán forks del repositorio base creado por el profesor/a. Más información aquí.
- En el caso de tareas de grupo, se creará un repositorio por grupo
- Dentro de cada tarea se puede acceder a la lista de los repositorios creados junto con los datos identificativos de cada alumno
- Dentro de cada tarea se puede trabajar de manera programática con la línea de comandos mediante GitHub CLI.
- Para cada tarea se pueden crear un conjunto de tests y asignarles una calificación numérica mediante GitHub Actions. En caso de utilizar tareas privadas es conveniente pedir un descuento educativo para la organización que estemos utilizando en GitHub Classroom, ya que el servicio de GitHub Actions es gratuito para repositorios públicos pero limitado para repositorios privados. Al tener un descuento educativo tendremos acceso a un mayor número de minutos de Actions.
- También se puede asignar un editor online para la tarea, como repl.it o Microsoft MakeCode. En este enlace se indica cómo configurar el editor online.
Existen dos posibilidades: utilizando exclusivamente GitHub mediante forks y pull requests o utilizando GitHub Classroom. En ambos casos es recomendable crear una organización para cada clase que impartamos. La organización puede darse de alta para solicitar el descuento educativo tal como vimos en la sesión 3. Dentro de la organización se crearán los repositorios para cada tarea.
- Creación del repositorio con el código base de la tarea
- Archivo
README
con enunciado o descripción de la tarea - Cada alumno realiza un fork del repositorio
- El alumno trabaja en su copia del repositorio
- Cuando quiera solicitar ayuda o revisión del profesor, el alumno genera una pull request
- El profesor proporciona retroalimentación mediante comentarios en la pull request o en un determinado commit individual
- Opcionalmente se pueden utilizar los issues y las citas de usuario para solicitar la intervención del profesor
- Los comentarios se pueden realizar a nivel de línea de código
- Cuando el alumno finaliza la tarea, genera una pull request
- El profesor revisa la pull request y opcionalmente hace comentarios sobre la misma
- Al finalizar, el profesor cierra la pull request
- Sencillez
- Flujo de trabajo parecido al funcionamiento normal de GitHub
- Los repositorios de las tareas de los alumnos son públicos
- Es difícil determinar el nombre del alumno a partir del usuario de GitHub
- Cada alumno es dueño de su repositorio
- En caso de tener integración con Travis, cada alumno deberá activarla en su repositorio
- Creación del repositorio con el código base de la tarea
- Archivo
README
con enunciado o descripción de la tarea - En GitHub Classroom, se crea una tarea individual
- Se elige el repositorio con el código base sobre el que se basará la tarea
- Se elige si los repositorios serán públicos o privados
- Se asigna una fecha de entrega (opcional)
- Se proporciona a los alumnos el enlace con la invitación
- Cada alumno accede al enlace de invitación y se le crea un repositorio para él en la organización
- El alumno trabaja en su repositorio asignado
- Inicialmente, el alumno crea una rama nueva sobre la que va a trabajar
- Cuando quiera solicitar ayuda o revisión del profesor, el alumno genera una pull request a la rama principal de su repositorio en la que cita al profesor para que reciba una notificación
- El profesor proporciona retroalimentación mediante comentarios en la pull request o en un determinado commit individual
- Opcionalmente se pueden utilizar los issues y las citas de usuario para solicitar la intervención del profesor
- Los comentarios se pueden realizar a nivel de línea de código
- Cuando el alumno finaliza la tarea, genera una última pull request
- El profesor revisa la pull request y opcionalmente hace comentarios sobre la misma
- Sencillez
- Los alumnos no tienen acceso a los repositorios del resto de alumnos
- Existe un listado de alumnos para identificar cada tarea
- Los repositorios de cada alumno se crean en la cuenta de organización del profesor
- En caso de tener integración con Travis, el profesor puede activarla él mismo en cada repositorio
- Dado que no hay forks, no es posible hacer pull requests al repositorio principal. Por ello se sugiere el funcionamiento con ramas de trabajo
Existen dos posibilidades: utilizando exclusivamente GitHub mediante organizaciones y equipos o utilizando GitHub Classroom. En ambos casos es necesario crear una organización para cada clase que impartamos. La organización puede darse de alta para solicitar el descuento educativo tal como vimos en la sesión 3. Dentro de la organización se crearán los repositorios para cada tarea.
- Creación de equipos dentro de la organización
- Invitación de los alumnos para que formen parte de cada equipo
- Creación de un repositorio para cada equipo con el código base de la tarea
- Archivo
README
con enunciado o descripción de la tarea - Opcionalmente, configuración de los repositorios para su uso con GitHub Actions o Travis
- Asignación de los repositorios a los equipos correspondientes (recomendable permisos de escritura, write)
- Cada equipo puede escribir en su repositorio asignado exclusivamente
- Cada miembro del equipo crea una rama personal para su trabajo
- Se sigue el flujo de trabajo definido para prácticas en grupo (ver apartado siguiente)
- Las integraciones se realizan mediante pull requests a la rama principal del repositorio del equipo
- En las pull request se puede citar al profesor para su intervención
- El profesor proporciona retroalimentación mediante comentarios en la pull request o en un determinado commit individual
- Opcionalmente se pueden utilizar los issues y las citas de usuario para solicitar la intervención del profesor
- Flujo de trabajo parecido al funcionamiento normal de GitHub
- La puesta en marcha implica varios pasos
- Es difícil determinar el nombre del alumno a partir del usuario de GitHub
- Es necesario crear un repositorio por cada equipo y subir el código común en todos
- Creación del repositorio con el código base de la tarea
- Archivo
README
con enunciado o descripción de la tarea - En GitHub Classroom, se crea una tarea de grupo
- Se elige el repositorio con el código base sobre el que se basará la tarea
- Se elige si los repositorios serán públicos o privados
- Se asigna una fecha de entrega (opcional)
- Se indica el tamaño máximo de los equipos
- Se proporciona a los alumnos el enlace con la invitación
- Cada alumno accede al enlace de invitación y crea un equipo nuevo o elige uno existente
- Se crea automáticamente un repositorio para cada equipo en la organización
- Opcionalmente, configuración de los repositorios creados para su uso con GitHub Actions o Travis
- Cada equipo puede escribir en su repositorio asignado exclusivamente
- Cada miembro del equipo crea una rama personal para su trabajo
- Se sigue el flujo de trabajo definido para prácticas en grupo (ver apartado siguiente)
- Las integraciones se realizan mediante pull requests a la rama principal del repositorio del equipo
- En las pull request se puede citar al profesor para su intervención
- El profesor proporciona retroalimentación mediante comentarios en la pull request o en un determinado commit individual
- Opcionalmente se pueden utilizar los issues y las citas de usuario para solicitar la intervención del profesor
- Sencillez
- Existe un listado de alumnos para identificar cada tarea
- En caso de querer hacer los equipos el profesor, es necesario supervisar el proceso de asignación para que cada alumno se apunte al equipo que debe
A continuación se muestra un ejemplo de flujo de trabajo de Git para grupos. Existen muchas otras posibilidades, pero considero que ésta es de las que menos problemas pueden presentar.
Este flujo de trabajo está basado en repositorios compartidos (shared repositories), donde todos los miembros del equipo de desarrollo tienen permisos para realizar cambios (pueden hacer push).
Para evitar la aparición de conflictos, cada usuario realizará sus cambios en una rama distinta. De esta manera los cambios que haga un usuario no afectarán al resto. Una vez finalizado el trabajo, el usuario incorporará los cambios realizados en su rama a la rama principal (merge).
IMPORTANTE. En todos los comandos se considera que la rama de trabajo principal es master.
A continuación se indican algunas estrategias que podéis utilizar para combinar Scrum y GitHub en las prácticas de grupo con los alumnos. Si queréis profundizar un poco más sobre Scrum podéis acceder a este enlace con los materiales que utilicé en un curso específico sobre este marco de trabajo.
- Organizaciones de GitHub
- Gestión de equipos
- Gestión de repositorios compartidos
- Utilización de ramas
- Ramas personales
- Rama principal de integración
- Creación de una milestone para hacer referencia a los objetivos del sprint
- Cada issue puede hacer referencia a una historia o una tarea
- Las historias que vayan a realizarse en el sprint (sprint backlog) se asignan a la milestone
- Pueden utilizarse las etiquetas para indicar la dificultad o duración (tallas de camiseta)
- Para indicar que una persona está trabajando en una tarea se asigna a dicha tarea
- Se pueden utilizar los proyectos como scrum board
- Cada día se realiza la reunión (entre 5 y 15 minutos)
- Cada persona indica qué tareas ha realizado y cierra los issues que tenga pendientes.
- Cada persona indica qué trabajo va a realizar hoy y se asigna los issues correspondientes
- Se evalúan los impedimentos que haya
- Crea un repositorio denominado
sesion7-tarea-individual
en la organización creada en la sesión 3 que contenga:- Un archivo
README.md
con el enunciado de una práctica (puedes utilizar alguna de tus clases o un enunciado inventado) - Un archivo
LICENSE
con la licencia que desees
- Un archivo
- Crea una cuenta en GitHub Classroom enlazándola con tu cuenta de GitHub.
- Crea una clase denominada
curso-github-sesion-7
en GitHub Classroom y asóciala a la organización creada en la sesión 3. - Añade a la clase un listado de alumnos que contenga los campos nombre y apellidos. Añade los datos de dos alumnos inventados al listado.
- Crea una tarea individual en la clase
curso-github-sesion-7
:- Debe utilizar como base el repositorio
sesion7-tarea-individual
- Introducir una fecha de entrega
- Debe utilizar como base el repositorio
- Envíame la URL de la invitación a través de la mensajería de equipo de la organización.
- Una vez haya aceptado la invitación, haz las siguientes capturas de pantalla:
- Captura del repositorio creado para mi en la organización
- Captura de la vista de la tarea en GitHub Classroom donde aparezca el enlace a mi repositorio y mi usuario
- Crea un repositorio denominado
sesion7-tarea-grupo
en la organización creada en la sesión 3 que contenga:- Un archivo
README.md
con el enunciado de una práctica (puedes utilizar alguna de tus clases o un enunciado inventado) - Un archivo
LICENSE
con la licencia que desees
- Un archivo
- Crea una tarea de grupo en la clase
curso-github-sesion-7
:- Debe utilizar como base el repositorio
sesion7-tarea-grupo
- Introducir una fecha de entrega
- Número máximo de personas por grupo: 4
- Debe utilizar como base el repositorio
- Envíame la URL de la invitación a través de la mensajería de equipo de la organización.
- Una vez haya aceptado la invitación, haz las siguientes capturas de pantalla:
- Captura del repositorio creado para mi equipo en la organización
- Captura de la vista de la tarea en GitHub Classroom donde aparezca el enlace al repositorio de mi equipo
Una vez terminada la tarea, crea una discusión en la organización creada en la sesión 3 y nómbrame mediante @pedroprieto
. Incluye las 4 capturas de pantalla pedidas en el cuerpo del mensaje.
No hay que subir ningún archivo en la tarea de la plataforma Moodle del Cefire.