/Algoritmos-y-estructuras-de-datos

Trabajos realizados en la materia algoritmos y estructuras de datos (ex algoritmos y programación 2) de la facultad de ingeniería (UBA). Cátedra Buchwald 1C2023.

Primary LanguageGoMIT LicenseMIT

Algoritmos-y-estructuras-de-datos

Trabajos realizados en la materia algoritmos y estructuras de datos (ex algoritmos y programación 2) de la facultad de ingeniería (UBA).

Trabajos individuales

  • TP0 : trabajo práctico introductorio para familiarizarnos con el lenguaje de programación que se usaba en la cátedra(Go) ya que en la materia anterior solo se ve Python o C. También para acostumbrarnos a usar algunos comandos que serían necesarios en trabajos posteriores.
  • Administración de Memoria : trabajo práctico en el que se trabajan conceptos de manejo de memoria dinámica, cosa que no es necesario actualmente en el curso por el cambio de lenguaje de C a Go pero que igual es importante ver. También es el primer trabajo en el que se trabaja la idea de lo que es un TDA que serviría como introducción para trabajos posteriores.
  • Pila : implementación del TDA pila. En este caso se optó por implementar la pila sobre un "arreglo dinámico" ya que es el que menor dificultad representaba y además cumplía con las complejidades pedidas (además de la invariante LIFO). Es el primero en el que es necesario implementar pruebas propias (además de las de la cátedra) y que es algo que se mantendría en la mayoría de trabajos posteriores.
  • Cola : implementación del TDA cola. A diferencia de la pila aquí se optó por usar una estructura enlazada por las mismas razones que el arreglo para la pila.

Trabajos grupales

(trabajos realizados en conjunto con @MateoRequejo)

  • Lista : implementación del TDA lista. Al igual que para la cola se optó por hacerlo sobre una estructura enlazada, también se introduce el concepto de iterador que se realizaría para algunos TDA's siguientes.
  • TP1 : primer trabajo práctico de aplicación de lo que se vio hasta ese momento. Básicamente teníamos que modelar un sistema de gestión de votos donde ya nos daban el diseño y nuestra tarea era completarlo (pudiendo agregar más cosas, lo cual terminamos haciendo).
  • Hash : implementación del TDA diccionario sobre una tabla de hash. En este caso la consigna del trabajo era implementarlo sobre una tabla de hash por cuestiones de complejidad principalmente, quedaba a nuestra elección cómo tenía que ser esa tabla (nosotros decidimos que el hash sea abierto).
  • Abb : implementación del TDA diccionario ordenado (que usaba el diccionario) sobre un árbol binario de búsqueda. En este caso vimos otra implementación del diccionario pero que nos daba otras posibilidades distintas al hash, pero con una complejidad un poco peor.
  • Heap : implementación del TDA cola de prioridad sobre un heap. En este caso usamos conceptos vistos en el abb para implementar otro TDA que nos daba otras posibilidades.
  • TP2 : segundo trabajo práctico de aplicación. Ahora debíamos modelar un sistema de consulta de vuelos de un aeropuerto, usando todo lo visto hasta ese momento pero con la particularidad de que creábamos el diseño nosotros desde cero (aunque la idea era tomar como ejemplo el del tp1).
  • TP3 : tercer y último trabajo de aplicación, también de implementación del TDA grafo. Ahora la idea era un programa que dé información sobre conexiones entre aeropuertos. Principalmente usábamos el grafo que implementábamos aunque también todo lo anterior, y también en este caso el lenguaje para hacerlo fue a elección (dentro de algunas opciones posibles).