Aqui estan todas las practicas y trabajos que he elaborado (algunos solo y otros con compañeros) en la Ingeniería Informática que realicé en la Universitat Rovira i Virgili (URV) de Tarragona. En todas se incluye el informe entregado al profesor (la mayoría en formato SXW, es necesario OpenOffice para visualizarlos), por lo general me temo que estan escritos en catalán asi que lo siento por los castellano-parlantes aunque el código es universal ;-).
Todas se encuentran bajo la licencia GPL para el código y la FDL para los documentos, informes o trabajos escritos.
Para descomprimir los archivos se puede utilizar el descompresor libre 7-zip para entornos MS Windows, en sistemas GNU/Linux es posible utilizar File Roller o simplemente ejecutar en una consola:
tar -jxvf [NombreArchivo].tar.bz2
Donde [NombreArchivo] debe ser substituido segun corresponda.
Práctica1 Dada una ROM llena de números, hacer un circuito que busque cierto número y que por una salida indique en qué posición se encuentra o cuantos números hay iguales. Realizado con Extend.
Práctica2 Circuito secuencial que realiza la multiplicación de dos número naturales de 8 bits, el resultado será de 16 bits. Realizado con Extend.
Práctica3 Nueva máquina sencilla con las instrucciones: DD, CMP, MOV, BEQ, INIC y LOOP. Realizado con Extend.
Práctica4 Utilizando un controlador basado en la máquina media realizar el popular juego Simon, donde el jugador debe ir memorizando el orden de las luces encedidas para luego repetirlas. Realizado con Extend.
Varios Diversas pruebas. Realizado con Extend.
Práctica1 Muestra los números primos. Realizado en ADA.
Práctica2 Calculo de puntos que le corresponden a los participantes de un concurso de Castells usando archivos (entrada/salida). Realizado en ADA.
Práctica3 Módulo para poder llevar una colección de juegos de forma informatizada. Realizado en ADA.
Práctica4 Aplicación para la gestión de las salas de unos cines, utilizamos ADAGRAPH para visualizar la sala con sus asientos libres y ocupados. Realizado en ADA.
Práctica1 Implementación de un algoritmo que calcula el producto de una matriz M (de 4 filas y 8 columnas) por un vector V (de 8 columnas) dando como resultado un vector de 4 filas. Realizado en Ensamblador.
Práctica2 Implementación de una subrutina que hace el producto escalar entre dos vectores A y B (los dos de N elementos) devolviendo un valor de tipo entero. Realizado en Ensamblador.
Práctica3 Rutina que realiza la conversión de un número de 16 bits a un string con su representación ASCII. Realizado en Ensamblador.
Práctica4 Subrutina que genera un sonido por el altavoz interno del ordenador. Realizado en Ensamblador.
Práctica5 Implementación de 3 subrutinas que se encargan de escribir en pantalla, borrarla y adivinar que caracter hay en cierta posición de la pantalla. Realizado en Ensamblador.
Práctica6 Realización de tres subrutinas de teclado: inicialización, lectura y finalización. Se controlaran las interrupciones con una RSI. El juego de pruebas es el popular juego de las serpientes en modo 2 jugadores. Realizado en Ensamblador y C.
Práctica1 Implementación del algoritmo Feijen para la actualización de archivos, además de otras operaciones. Realizado en C bajo UNIX.
Práctica1 Resolución de un ejercicio para guardar cierta información en una base de datos utilizando SQL y las sentencias a ejecutar para realizar ciertas consultas. Realizado con SQL.
Práctica1 Micro interprete capaz de controlar la máquina de Tanembau que ejecuta un cierto número de macro instrucciones, como prueba se calcula el factorial recursivo. Realizado con un simulador de la máquina de Tanembau (incluido).
Práctica1 Juego hundir la flota sin interfície gráfica. Realizado en Java.
Práctica1 Estructura de datos para implementar un gestor de impresoras. Realizado en Java.
Práctica2 Estructura de datos para implementar un organizador de música que mantenga ordenado los datos. Realizado en Java.
Práctica3 Estructura de datos para implementar una aplicación para gestionar y optimizar la estructura de un servidor web (grafos). Realizado en Java.
Práctica1 Script que renombra varios ficheros a la vez y script que borra de un directorio los archivos que cumplan unas determinadas características. Realizado en Bash.
Práctica2 Juego hundir la flota. Realizado en ANSI C.
Práctica3 Utilizando las IPC de UNIX hacer que varios procesos puedan jugar al hundir la flota. Realizado en C bajo UNIX.
Práctica1 Implementación de la parte del sistema operativo de la gestión de procesos, entrada y salida... entre otros. Realizado en C bajo MSDOS.
Práctica1 Implementación de la busqueda a lo ancho de forma que intentemos conseguir un camino desde una posición inicial a una final. Realizado en cLISP.
Práctica2 Implementación de un jugador de tres en raya. Realizado en cLISP.
Práctica3 Definición de un tipo de información en el entorno CLIPS. Realizado con CLIPS.
Sesiones cLISP Pruebas en LISP realizadas en laboratorio. Realizado en cLISP.
Laboratorios CLIPS Pruebas realizadas en el entorno CLIPS. Realizado con CLIPS.
Práctica1 Ejercicios java que muestran las características del lenguaje y del paradigma de programación orientado a objetos puro. Realizado en Java.
Práctica2 Simulación de un banco sencillo con sus estructuras de datos. Realizado en Java.
Práctica3 Implementación no visual del juego TurboRisk que consiste en ir conquistando paises. Realizado en Java.
Práctica4 Ejercicios Smalltalk que muestran las características del lenguaje y del paradigma de programación orientado a objetos puro. Realizado en Smalltalk.
Práctica5 Ejercicios Haskell que muestran las características del lenguaje y del paradigma de programación funcional. Realizado en Haskell.
Práctica6 Ejercicios Prolog que muestran las características del lenguaje y del paradigma de programación lógico. Realizado en Prolog.
Práctica1 Aplicación gráfica que muestra el juego del comecocos donde se han implementado diversos procesos que se ejecutan simultaneamente trabajando sobre el tablero. Se ha realizado un esfuerzo especial en realizar unos comecocos inteligentes para obtener la máxima puntuación. Los comecocos juegan solos sin intervención humana. Realizado en ADA y GTK.
Sesiones Pruebas de programación concurrente en ADA realizadas en el laboratorio. Realizado en ADA.
Práctica1 Análisis previo de un problema planteado. Estudio.
Práctica2 Análisis estructurado de un problema planteado. Estudio.
Práctica3 Diseño estructurado: esquema del sistema de menu, definición de la base de datos (SQL) y diseño de los formatos de pantalla. Estudio.
Práctica4 Recogida de requisitos: diagrama de actividades general, diagramas de casos de uso y descripción textual de los casos de uso. Estudio.
Práctica5 Análisis de requisitos orientado a objetos: metáfora, diagrama estático completo y diagramas de secuencia para todos los casos de uso. Estudio.
Práctica6 Diseño orientado a objetos: diseño total de la interficie de usuario y diseño de la persisténcia. Estudio.
Práctica1 Implementación de una aplicación web para agencias de seguros de coches que se puedan intercomunicar entre ellas. Realizado en Java (J2EE).
Práctica1 Plan de empresas y examen resuelto. Estudio.
Práctica1 Exposición y trabajo sobre Enterprise Resource Planning (ERP). Estudio.
Informe Creación de un servidor para la intranet del Departament d'Enginyeria Informática i Matemátiques de la URV. Estudio.
Presentación Transparencias de la presentación del proyecto. Transparencias.
Aplicación web Aplicación web que forma una pequeña parte del proyecto, el resto consistia en crear un servidor usando Software Libre y dando máxima prioridad a la seguridad informática. Realizado en PHP.
Práctica1 Paralelización de un algorismo de ordenación con clusters de computadoras. Realizado en C + MPI bajo UNIX.
Sistolicos Uso de un simulador de hardware sistolico para implementar el calculo de la distancia de Levenshtein. Realizado en C + simulador (no incluido) bajo UNIX.
Máquina virtual Mono Presentación de la máquina virtual Mono.
Práctica1 Paralelización de un algorismo de ordenación con una computadora de multiples CPUs. Realizado en C + OpenMP bajo UNIX.
Conjunto de prácticas con cálculos manuales y demostraciones con matlab:
Práctica1
Práctica2 parte I
Práctica2 parte I
Práctica3
Conjunto de prácticas con cálculos manuales y demostraciones con matlab+simulink:
Práctica 0
Práctica 1
Práctica 2
Práctica 3
Práctica 4
Redundancia Cálculo de la redundancia del Catalan. Realizado en C# con Mono
LFSR (Linear Feedback Shift Register) Algoritmo de Berlekamp-Massey. Calcula el estado inicial de un LFSR y su polinomio de connexiones a partir de una secuencia mínima del LFSR. Realizado en C# con Mono
Práctica1 Diseño de una interfaz gráfica a partir de unas especificaciones.
Práctica1 Diseño de una solución a un problema utilizando una metodología determinada.
Práctica2 Diseño de una solución a un problema utilizando la metodología DARTS.
Práctica3 Diseño de una solución a un problema utilizando la metodología JSD.
Práctica1 Simulador gráfico del tráfico de una ciudad con control de fluidez. Realizado en ADA + GtkAda
Ejercicios de examen Ejercicios prácticos resueltos de examen. Realizado en Lisp y Prolog
Memoria asociativa Memoria asociativa capaz de almacenar patrones de 1000 elementos. Realizado en Java
Clasificación de datos Implementación del algoritmo SOM (Self Organizing Map) para la implementación de datos multidimensionales. Realizado en Java
Práctica Implementación de un mini secuenciador MIDI de tiempo real. Realizado en C sobre RTLinux
Práctica 1 Sniffer que visualiza las cabeceras TCP, UDP y ICMP. Realizado en C
Práctica 2 Descarga todas las imágenes de una web especificada. Realizado en C
Práctica 3 Sistema (N cliente - 1 servidor) de compartición de ficheros. Realizado en C
Práctica 4 Configuración de un servidor web (apache) con certificados de seguridad y guia de uso de PGP/GnuPG.
Práctica 1 Informe sobre como configurar un sistema de enrutado entre computadores GNU/Linux.
Práctica 2 Teléfonia por internet (VoIP: Voice over IP) utilizando el protocolo RTP y creando un servidor que soporte un protocolo muy similiar a SIP. Realizado en C, GTK y usando las librerias RTP de vovida (incluidas).
Compilador Compilador de miniAda (ada reducido). Analizador léxico, semántico y sintactico. Realizado en C + Flex + Bison bajo UNIX.
Compilador Compilador de miniAda (ada reducido). Generación de código intermedio. Realizado en C + Flex + Bison bajo UNIX.
Simulador robot en marte Simulador robot en marte con interficie 3D y comunicaciones entre estación base (tierra) y robot mediante red. Realizado en C++ bajo DEV-CPP (MS Windows).
Práctica 1 ¿Que es un framework? Realizado en Inglés
Práctica 3 Diseño y implementación de un sistema de reservas de habitación de hotel con EJBs. Realizado con J2EE
Práctica 4 Componente genèrico para el registro de usuarios. Realizado en J2EE
Práctica Final Implementación de una aplicación J2EE completa que utilice el componente de registro de usuarios y utilice JSPs siguiendo el patrón Modelo-Vista-Control. Realizado en J2EE
Práctica 1 Cuestionario sobre redes. Realizado en Inglés
Práctica 2 Implementación cliente/servidor de la operación "dividir" usando sockets. Realizado en Java
Práctica 2.2 Diseño y implementación de un chat con RMI. Realizado con Java
Práctica 2.3 Diseño y implementación de un chat con CORBA. Realizado en Java
Práctica 2.4 Diseño y implementación de un chat con RMI over IIOP con callbacks. Realizado en Java
Práctica 2.5 Cuestionario sobre el modelo de herencia y modelo de delegación de CORBA. Realizado en Catalán
Práctica 3.1 Implementar un protocolo de sincronización por red de reloj. Realizado en Java
Práctica 1 Implementacion de un chat utilizando Remoting.NET y el máximo número de patrones de diseño posibles. Realizado en Visual Studio.NET y C#
Práctica 2 Añadir Custom Attributes y Dinamic Proxy a la implementación del chat anterior. Realizado en Visual Studio.NET y C#
Práctica 3 Utilizar la programación orientada a aspectos para modificar el comportamiento de un applet. Realizado con Java y AspectJ
Práctica 4 Analisis del framework Spring. Realizado en Inglés
Práctica 5 Uso de shared assemblies con GAC y componentes COM desde .NET. Realizado en Visual Studio.NET y C#
Práctica 2 Monitorización con sniffer. Realizado en Catalán
Práctica 3 Diseño de un sistema de reglas (firewall). Realizado con Firewall Builder
Práctica 4 Uso de utilidades de red y cuestionario. Realizado en Inglés
Práctica 5 Detección de un escaneo de puertos. Realizado con Snort
Práctica 6 Instalación de un Honeypot. Realizado con Honeyd
Práctica final Implementación de un sistema complejo con zona demilitarizada (DMZ), firewall, honeypod y reportes de actividad con snort. Realizado en Catalán
Práctica 1 Control de un brazo robotizado CRS A255 para que sea capaz de preparar, servir y ofrecer una copa de cava. Realizado en RAPL
Práctica 2 Diseño e implementación de un planificador de movimientos para determinar las trayectorias de 7 aviones del ejercito del aire en diversas formaciones. Realizado con Visual Studio.NET, C# y SDL.NET
Práctica 1 Implementación de generadores aleatorios Fibonacci, Randu y GCL. Realizado en Mono y C#
Práctica 2 Analizar 7 ficheros que funcionan con Rockwell Arena. Realizado en Catalán
Práctica 3 Diseñar dos simuladores para comparar un sistema monoprocesador multiusuario i un sistema multiprocesador multiusuario. Realizado con Rockwell Arena
Práctica 4 Diseñar un sistema multiprocesador de 128 CPUs con 3 tipos de trabajos (pequeños, medianos y grandes). Realizado con Rockwell Arena
Informe Design of a Massively Multiplayer Online Game (Diseño de un juego masivo multijugador online) Estudio en Inglés.
Demo Demo cliente/servidor de un mundo virtual 3D por donde es posible desplazar un personaje (robot). Realizado en C++, OpenTNL y OGRE 3D.