1. Biblioteca procedimental
En su repositorio personal de control de versiones, cree una biblioteca que resuelva el problema siguiente con los requerimientos planteados por su docente.
2. Programación genérica y polimórfica
Resuelva el problema siguiente con los requerimientos planteados por su docente utilizando los paradigmas de programación genérica (plantillas en C++) y programación orientada a objetos (herencia y polimorfismo).
El proyecto se realizará en dos fases. En la primera fase, el equipo (en parejas), elaborará una prueba de concepto. Consiste en diseñar una solución completa al problema planteado usando UML y algoritmos. Implementar parcialmente las clases principales para demostrar la viabilidad de la solución propuesta mediante una prueba de concepto. No se necesita una implementación completa del sistema, sino una demostración parcial de que su solución resuelve el problema con un subconjunto de un par de notaciones.
En la segunda fase se simulará un proceso de desarrollo industrial. Es decir, producir una solución completa al problema planteado, tal como se haría en una empresa de desarrollo de software. Docentes tomarán el rol de usuarios. Asistentes del curso tomarán el rol de líderes técnicos. Estudiantes en parejas, tomarán el rol de desarrolladores.
Al iniciar la segunda etapa, se hará una discusión grupal para definir el diseño final de la solución. Todas las parejas de estudiantes discutirán juntas el diseño final de la solución, aprovechando la experiencia construida en la fase 1. Una vez definido el diseño final, se crearán issues en el repositorio de control de versiones del sistema completo. Los issues se repartirán entre las parejas de estudiantes. Por cada issue, la pareja creará una rama en el sistema de control de versiones. Una vez implementada una solución al issue, la pareja emitirá una solicitud de unirlo a la rama principal (merge request). La persona asistente se encargará de hacer la unión o solicitar correcciones. Se dará crédito a la pareja de desarrollo por cada issue que logre completar y sea unido a la rama principal.
Al final habrá una demostración del producto a las personas clientes (docentes), por parte de todo el equipo de desarrollo (el grupo completo de estudiantes).
2.1. Evaluación
3. Programación multi-paradigma
Para el tercer proyecto se simulará una situación realista muy común. Usted y su colega de desarrollo se integran a un proyecto de software ya iniciado, con un código fuente existente (llamado código heredado). Mediante videos u otros materiales usted recibirá una inducción al código heredado. Se les contrata para mejorar el código existente aplicando mejores paradigmas de programación e incrementar su funcionalidad para satisfacer nuevos requerimientos. El problema se resume a continuación, pero deberán averiguar los nuevos requerimientos con su docente, y proponer mejoras creativas en acuerdo con su cliente (docente).