Este repositorio contiene una colección de proyectos realizados en varios lenguajes de programación, abarcando una amplia gama de áreas como sistemas operativos, redes, estructuras de datos, desarrollo web y mucho más. A continuación, se presenta una descripción detallada de cada proyecto según el lenguaje de programación utilizado.
-
TP1 de Sistemas Distribuidos (Python)
Aplicación escalable y tolerante a fallos para ejecutar consultas distribuidas sobre datasets utilizando RabbitMQ. -
Nodo Bitcoin (Rust)
Nodo Bitcoin completo con funcionalidades clave como minería, transacciones y creación de billeteras, con interfaz gráfica en GTK. -
DuoLibros (Node.js)
REST API con backend y frontend que simula una plataforma tipo Goodreads, permitiendo interacción entre usuarios mediante reseñas, likes y más. -
TP2 de Ruby - RESP-API
API REST y bot de Telegram para gestión de un restaurante con arquitectura hexagonal, microservicios y base de datos integrada. -
Proyecto Banco (Java)
Sistema bancario con arquitectura MVC, backend en Spring Boot y persistencia en PostgreSQL. Enfoque en transacciones e inyección de dependencias.
- Nodo Bitcoin: Implementación de un nodo Bitcoin completo, con todas las funcionalidades clave como minería de bitcoins, creación de billeteras virtuales y gestión de transacciones. Incluye una interfaz gráfica desarrollada con GTK.
- Desarrollo de un juego de ajedrez.
- ConcuRide: Simulación de una aplicación distribuida para conectar pasajeros y conductores. Implementación distribuida con foco en concurrencia, eficiencia y escalabilidad.
- Ejecución de una consulta sobre un dataset de Kaggle de forma distribuida y concurrente.
- Implementación de un juego multijugador de batalla naval, concurrente con múltiples hilos.
- Los proyectos en Ruby siguen la metodología ágil SCRUM, con un fuerte enfoque en BDD y TDD.
- RESP-API: Implementación de una API REST y un bot de Telegram para la gestión de un restaurante. Este proyecto destaca por el uso de arquitectura hexagonal, microservicios y la integración de una base de datos. Se trabajó en equipo para desarrollar una estructura escalable.
- Ejercicios individuales para familiarización con Ruby y metodologías orientada a pruebas.
- Proyectos orientados a la programación en pareja, aplicando metodologías ágiles y pair programming.
- Ejercicios grupales diseñados para el manejo de metodologías ágiles en equipos.
- Aplicación para realizar consultas sobre datasets de forma distribuida y concurrente, utilizando RabbitMQ para la comunicación entre nodos. Es un sistema escalable y tolerante a fallos, ideal para el análisis de datos en entornos distribuidos.
- Conjunto de ejercicios orientados a la práctica de ejecución distribuida, comunicación entre procesos, concurrencia y uso de contenedores con Docker.
- Varios enunciados sobre consultas a bases de datos, utilizando bibliotecas como Spark, scikit-learn, y matplotlib para machine learning y visualización de datos.
- Implementación de un sistema de transferencia de archivos a bajo nivel con filtros personalizados.
- Implementación de un firewall con reglas personalizables utilizando SDN.
- Desarrollo de un sistema bancario siguiendo el patrón Model View Controller (MVC) con Spring Boot. Se utiliza una base de datos PostgreSQL con inyección de dependencias y manejo de transacciones.
- Dune2000: Implementación de un juego estilo Age of Empires con soporte para multijugador, utilizando threads y una interfaz gráfica desarrollada con una biblioteca específica.
- Implementaciones de estructuras de datos como colas, listas enlazadas, grafos y pilas, organizadas en carpetas de enunciados y "parcialitos".
- Fork: Implementación de procesos utilizando bifurcación.
- Shell: Implementación de una shell básica.
- Primera implementación de la función
malloca bajo nivel.
- Expansión de la función
mallocy desarrollo de un algoritmo de planificación (scheduling).
- Desarrollo de un filesystem.
- REST API con backend y frontend que simula una plataforma estilo Goodreads, donde los usuarios pueden compartir libros, dejar reseñas, dar likes y realizar distintas interacciones. Combina tecnologías modernas del ecosistema Node.js para ofrecer una experiencia completa e interactiva.
- Enunciados básicos de Assembler que incluyen tareas como rotar matrices, iterar, realizar sumas y multiplicaciones.
- Enunciados desarrollados en Smalltalk con POO utilizando Pharo.