Ingeniería Informática: Prácticas

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.

Curso 2000-2001


  •   Computadores:
    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.

  •   Programación I:
    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.

  •   Estructura de computadores I:
    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.

Curso 2001-2002


  •   Introducción a Bases de Datos:
    Práctica1 Implementación del algoritmo Feijen para la actualización de archivos, además de otras operaciones. Realizado en C bajo UNIX.

  •   Bases de Datos:
    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.

  •   Estructura de Computadores II:
    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).

  •   Programación II:
    Práctica1 Juego hundir la flota sin interfície gráfica. Realizado en Java.

  •   Estructura de datos:
    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.

  •   Introducción a los Sistemas Operativos:
    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.

  •   Sistemas Operativos:
    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.

Curso 2002-2003


  •   Inteligencia Artificial:
    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.

  •   Lenguajes de programación:
    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.

  •   Programación concurrente:
    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.

  •   Ingeniería del Software:
    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.

  •   Sistemas Abiertos:
    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).

  •   Gestión de Empresa:
    Práctica1 Plan de empresas y examen resuelto. Estudio.

  •   Gestión de la informática:
    Práctica1 Exposición y trabajo sobre Enterprise Resource Planning (ERP). Estudio.

  •   Proyecto final de carrera:
    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.

Curso 2003-2004


  •   Arquitecturas especializadas:
    Práctica1 Paralelización de un algorismo de ordenación con clusters de computadoras. Realizado en C + MPI bajo UNIX.

  •   Arquitecturas orientadas a las aplicaciones:
    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.

  •   Arquitecturas paralelas:
    Práctica1 Paralelización de un algorismo de ordenación con una computadora de multiples CPUs. Realizado en C + OpenMP bajo UNIX.

  •   Control Automático I:
    Conjunto de prácticas con cálculos manuales y demostraciones con matlab:

    Práctica1
    Práctica2 parte I
    Práctica2 parte I
    Práctica3
  •   Control Automático II:
    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
  •   Criptología:
    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

  •   Diseño de interfícies gráficas:

    Práctica1 Diseño de una interfaz gráfica a partir de unas especificaciones.

  •   Ingeniería del Software I:

    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.

  •   Ingeniería del Software II:

    Práctica1 Simulador gráfico del tráfico de una ciudad con control de fluidez. Realizado en ADA + GtkAda

  •   Inteligencia Artificial I:

    Ejercicios de examen Ejercicios prácticos resueltos de examen. Realizado en Lisp y Prolog

  •   Inteligencia Artificial II:

    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

  •   Sistemas informáticos de Tiempo Real:

    Práctica Implementación de un mini secuenciador MIDI de tiempo real. Realizado en C sobre RTLinux

  •   Redes de computadores I:

    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.

  •   Redes de computadores II:

    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).

Curso 2004-2005


  •   Compiladores I:
    Compilador Compilador de miniAda (ada reducido). Analizador léxico, semántico y sintactico. Realizado en C + Flex + Bison bajo UNIX.

  •   Compiladores II:
    Compilador Compilador de miniAda (ada reducido). Generación de código intermedio. Realizado en C + Flex + Bison bajo UNIX.

  •   Sistemas informáticos I:
    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).

  •   Desarrollo de aplicaciones Internet y Intranet:

    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

  •   Ingeniería del Software III:

    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

  •   Ingeniería del Software IV:

    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#

  •   Seguridad y Hacking:

    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

  •   Robótica industrial:

    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

  •   Simulación:

    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

  •   Proyecto final de carrera:
    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.