Esto es difícil de responder sin conocer el nivel y habilidades de sus estudiantes. Sin esa información de fondo, ni siquiera podría decir si es aconsejable dejarlos solos en cualquier proyecto existente.
En mi opinión, antes de que alguien esté listo para contribuir a cualquier esfuerzo de código abierto no trivial, deben tener una sólida comprensión de las estructuras de datos y el concepto de ADT y ocultamiento de información. Idealmente, habrían implementado algunos ADT básicos por sí mismos.
En mi experiencia esto con demasiada frecuencia falta especialmente cuando el lenguaje utilizado para instruir a los principiantes es C ya que C no tiene ADT incorporados ni una biblioteca ADT estándar y se espera que los desarrolladores sean capaces de escribir sus poseer o seleccionar una biblioteca de terceros y, si es necesario, personalizarla según sus necesidades.
He visto bastantes proyectos de código abierto escritos en C donde las únicas estructuras de datos utilizadas eran arreglos de tamaño fijo y listas enlazadas, donde cada algoritmo era el más ingenuo posible, donde la noción de una API era exponer estructuras y deja que todos lo modifiquen
Un colaborador que esté familiarizado con los ADT pronto se escapará de ese proyecto en horror. Un colaborador que no esté familiarizado con ADT solo aprenderá malos hábitos allí.
Si su objetivo es lograr que sus alumnos aprendan el uso del control de versiones y los sistemas de seguimiento de errores, quizás sea una mejor idea asignarles un ejercicio y hacer que configuren un repositorio en uno de esos sitios que integran la versión control, búsqueda de código fuente en línea y seguimiento de errores, por ejemplo, Github, Bitbucket, Google Code, etc.
Luego puede examinar el trabajo que hicieron para la tarea y si encuentra algún error, use el rastreador de errores para presentar un error que entonces tiene que tratar en consecuencia. A continuación, puede expandir la asignación presentando solicitudes de características nuevamente usando el rastreador de errores, etc.
Además, sitios como Github y Bitbucket tienen una función de clonar-este-repositorio. Esto se presta muy bien a la enseñanza de la colaboración también. Dependiendo del conjunto de habilidades de sus alumnos, pueden elegir un repositorio existente para clonar y luego seguir sus asignaciones, o pueden pedirles que busquen en un repositorio (posiblemente coincida con ciertos criterios) y elegir uno para ellos mismos, y luego extenderlo de nuevo. siguiendo tus asignaciones.
Hay una cosa más que personalmente creo que debe ser un requisito previo para contribuir a cualquier proyecto de fuente abierta no trivial: entender el diseño por contrato, cómo documentar un contrato de funciones, pensar en contratos de funciones, haber desarrollado el disciplina para nunca codificar nada sin antes documentar un contrato de función. Desafortunadamente, muy pocos proyectos de código abierto usan diseño por contrato. Una vez más, un colaborador familiarizado con esta práctica pronto escapará de ese proyecto en horror y el que no lo hará solo obtendrá los malos hábitos.
Sin embargo, podría convertir esto en un ejercicio diciéndoles a sus alumnos que clonen un repositorio existente de, digamos, Github o Bitbucket y luego asígneles la tarea de completar la documentación del contrato de función faltante. Huelga decir que para un ejercicio de este tipo, primero tendría que haberles enseñado qué es el diseño por contrato y cómo escribir contratos de función.
Una vez que sus alumnos hayan adquirido las habilidades que describí anteriormente, estoy seguro de que "¿a qué proyectos de código abierto podríamos contribuir?" será trivial responder porque en ese momento tus estudiantes podrán encontrar y elegir un proyecto adecuado para ellos.
Mientras tanto, si sientes que tus alumnos aún necesitan un código de ejemplo para los ADT escritos en C y cómo escribir contratos de función, y no tienes esos ejemplos a mano, es posible que quieras echar un vistazo en mi repositorio en Bitbucket. Tiene una variedad de ADT comunes en C y todas las fuentes contienen contratos de funciones. Siéntase libre para clonar cualquiera de los repositorios de allí y utilizarlos como base para ejercicios:
Estoy seguro que si miras a tu alrededor hay un montón de material adecuado por otros autores, también .
* el proyecto es muy interesante *: eso depende de tu propia opinión, por supuesto. Es por eso que te recomiendo que eches un vistazo a http://sourceforge.net/ para ver lo que te gusta ;-) – ChristopheD
Gracias sourceforge tiene muchos proyectos. =) – domlao