24 resultados para Programación de ordenadores
em Universidade Complutense de Madrid
Resumo:
Cada vez son más los usuarios que optan por usar un juez online de programación como entrenamiento para un concurso de programación o inclusive como herramienta de estudio en el ámbito docente. No obstante, es natural que con su uso se cometan errores que muchas veces no se alcanzan a entender. Por ello, en este proyecto, se trata de resolver esa carencia mediante el ofrecimiento de pistas a los usuarios. Es decir, dado un problema con un formato concreto y una solución en código fuente, se devuelve una ayuda sobre el error cometido en la solución, lo cual supone, no solo una ayuda para participantes en concursos, sino también para alumnos y profesores que pueden beneficiarse de esta ayuda. De hecho, el uso de herramientas de corrección automática está en aumento, y con la solución propuesta, se podría obtener pistas para los problemas que respeten el formato esperado.
Resumo:
El actual auge de internet y las comunicaciones genera inmensas cantidades de información. De entre toda esta información tiene especial interés aquella que es personal y privada, ya que puede comprometer la seguridad o intimidad de las personas. La información médica de una persona es una de las más vulnerables y es de vital importancia proteger la identidad de los pacientes, así como los resultados y diagnósticos a los que se someten. Este trabajo se centra en intentar dificultar la identificación de una persona a partir de datos que se publican en las bases de datos médicas de los programas de screening, generando citas que agrupen individuos con mismos datos públicos: edad, género, etc... Se propone una solución basada en la programación con restricciones y se presenta una nueva medida de anonimato. Se compara experimentalmente el incremento en el anonimato que se obtiene en nuestra propuesta con respecto a la generación aleatoria de citas.
Resumo:
Esta tesis trata de las llamadas relaciones de conformidad que pueden darse entre dos sistemas cualesquiera, especificación e implementación. Como novedad introduce el uso de técnicas coinductivas para la definición de iocos, una relación de conformidad capaz de distinguir el contexto local de ejecución de un proceso. Al constituir iocos la parte central de una nueva teoría de Model Based Testing (MBT), se precisa de una descripción formal de los sistemas en juego; esto se lleva a cabo en primera instancia mediante sistemas de transiciones etiquetadas y posteriormente mediante un enfoque más abstracto, un álgebra de procesos. Las teorías de testing tienen por objeto confirmar las relaciones de conformidad mediante la ejecución de un conjunto de tests sobre un sistema –la implementación– cuya estructura interna se desconoce. Particularmente los beneficios de un enfoque MBT son inmediatos, ya que la generación de los tests puede abordarse de manera sistemática una vez se disponga de un modelo formal de la especificación, lo que contribuye a eliminar el error imputable al factor humano; esto se logra dando un algoritmo generador de tests que toma cono entrada una especificación y produce un conjunto de tests, posiblemente infinito, suficientemente representativo para asegurar la relación de conformidad. Este enfoque inicial, conocido como testing offline o testing estático, es mejorado para ganar en eficiencia evitando un alto consumo en recursos tanto de tiempo como de memoria mediante la técnica de testing online o testing dinámico, donde ambos pasos de generación y ejecución se ejecutan de manera alternada...
Resumo:
Las redes de Petri son un lenguaje formal muy adecuado para la modelizacíon, ańalisis y verificacíon de sistemas concurrentes con infinitos estados. En particular, son muy apropiadas para estudiar las propiedades de seguridad de dichos sistemas, dadas sus buenas propiedades de decidibilidad. Sin embargo, en muchas ocasiones las redes de Petri carecen de la expresividad necesaria para representar algunas caracteŕısticas fundamentales de los sistemas que se manejan hoy en d́ıa, como el manejo de tiempo real, costes reales, o la presencia de varios procesos con un ńumero no acotado de estados ejecut́andose en paralelo. En la literatura se han definido y estudiado algunas extensiones de las redes de Petri para la representaci ́on de las caracteŕısticas anteriores. Por ejemplo, las “Redes de Petri Temporizadas” [83, 10](TPN) incluyen el manejo de tiempo real y las ν-redes de Petri [78](ν-PN) son capaces de representar un ńumero no acotado de procesos con infinitos estados ejecut́andose concurrentemente. En esta tesis definimos varias extensiones que réunen estas dos caracteŕısticas y estudiamos sus propiedades de decidibilidad. En primer lugar definimos las “ν-Redes de Petri Temporizadas”, que réunen las caracteŕısticas expresivas de las TPN y las ν-PN. Este nuevo modelo es capaz de representar sistemas con un ńumero no acotado de procesos o instancias, donde cada proceso es representado por un nombre diferente, y tiene un ńumero no acotado de relojes reales. En este modelo un reloj de una instancia debe satisfacer ciertas condiciones (pertenecer a un intervalo dado) para formar parte en el disparo de una transicíon. Desafortunadamente, demostramos que la verificacíon de propiedades de seguridad es indecidible para este modelo...
Resumo:
La ecografía es hoy en día uno de los métodos de visualización más populares para examinar el interior de cuerpos opacos. Su aplicación es especialmente significativa tanto en el campo del diagnóstico médico como en las aplicaciones de evaluación no destructiva en el ámbito industrial, donde se evalúa la integridad de un componente o una estructura. El desarrollo de sistemas ecográficos de alta calidad y con buenas prestaciones se basa en el empleo de sistemas multisensoriales conocidos como arrays que pueden estar compuestos por varias decenas de elementos. El desarrollo de estos dispositivos tiene asociada una elevada complejidad, tanto por el número de sensores y la electrónica necesaria para la adquisición paralela de señales, como por la etapa de procesamiento de los datos adquiridos que debe operar en tiempo real. Esta etapa de procesamiento de señal trabaja con un elevado flujo de datos en paralelo y desarrolla, además de la composición de imagen, otras sofisticadas técnicas de medidas sobre los datos (medida de elasticidad, flujo, etc). En este sentido, el desarrollo de nuevos sistemas de imagen con mayores prestaciones (resolución, rango dinámico, imagen 3D, etc) está fuertemente limitado por el número de canales en la apertura del array. Mientras algunos estudios se han centrado en la reducción activa de sensores (sparse arrays como ejemplo), otros se han centrado en analizar diferentes estrategias de adquisiciónn que, operando con un número reducido de canales electrónicos en paralelo, sean capaz por multiplexación emular el funcionamiento de una apertura plena. A estas últimas técnicas se las agrupa mediante el concepto de Técnicas de Apertura Sintética (SAFT). Su interés radica en que no solo son capaces de reducir los requerimientos hardware del sistema (bajo consumo, portabilidad, coste, etc) sino que además permiten dentro de cierto compromiso la mejora de la calidad de imagen respecto a los sistemas convencionales...
Resumo:
Hoy día vivimos en la sociedad de la tecnología, en la que la mayoría de las cosas cuentan con uno o varios procesadores y es necesario realizar cómputos para hacer más agradable la vida del ser humano. Esta necesidad nos ha brindado la posibilidad de asistir en la historia a un acontecimiento sin precedentes, en el que la cantidad de transistores era duplicada cada dos años, y con ello, mejorada la velocidad de cómputo (Moore, 1965). Tal acontecimiento nos ha llevado a la situación actual, en la que encontramos placas con la capacidad de los computadores de hace años, consumiendo muchísima menos energía y ocupando muchísimo menos espacio, aunque tales prestaciones quedan un poco escasas para lo que se requiere hoy día. De ahí surge la idea de comunicar placas que se complementan en aspectos en las que ambas se ven limitadas. En nuestro proyecto desarrollaremos una interfaz s oftware/hardware para facilitar la comunicación entre dos placas con distintas prestaciones, a saber, una Raspberry Pi modelo A 2012 y una FPGA Spartan XSA3S1000 con placa extendida XStend Board V3.0. Dicha comunicación se basará en el envío y recepción de bits en serie, y será la Raspberry Pi quien marque las fases de la comunicación. El proyecto se divide en dos partes: La primera parte consiste en el desarrollo de un módulo para el kernel de Linux, que se encarga de gestionar las entradas y salidas de datos de la Raspberry Pi cuando se realizan las pertinentes llamadas de write o read. Mediante el control de los GPIO y la gestión de las distintas señales, se realiza la primera fase de la comunicación. La segunda parte consiste en el desarrollo de un diseño en VHDL para la FPGA, mediante el cual se pueda gestionar la recepción, cómputo y posterior envío de bits, de forma que la Raspberry Pi pueda disponer de los datos una vez hayan sido calculados. Ambas partes han sido desarrolladas bajo licencias libres (GPL) para que estén disponibles a cualquier persona interesada en el desarrollo y que deseen su reutilización.
Resumo:
Estamos acostumbrados a pagar en los supermercados y comercios con tarjeta de crédito. Para ello necesitamos una tarjeta bancaria y un documento identificativo. Hemos unido estos dos requisitos en uno de cara a hacer el pago más sencillo, rápido y cómodo. La solución que proponemos es registrar nuestra huella dactilar y asociarla a una cuenta bancaria, de forma que nuestro dedo sea suficiente para pagar. Para ello, hemos desarrollado varios programas, para implementar los distintos puntos del proceso: • Registro • Terminal de punto de venta • Verificación y tratamiento de huellas dactilares • Consultas en la base de datos. También hemos utilizado una base de datos en Dropbox™ para el almacenamiento de las imágenes de las huellas, todas ellas encriptadas, y otra relacional para los datos de los clientes. Para la intercomunicación dentro de la aplicación se han utilizado canales seguros SSH. Con este nuevo método de pago bastará poner tu dedo en el lector de huellas para que el pago se realice automáticamente.
Resumo:
En el presente trabajo se propone dar solución a uno de los problemas principales surgido en el campo del análisis de imágenes hiperespectrales. En las últimas décadas este campo está siendo muy activo, por lo que es de vital importancia tratar su problema principal: mezcla espectral. Muchos algoritmos han tratado de solucionar este problema, pero que a través de este trabajo se propone una cadena nueva de desmezclado en paralelo, para ser acelerados bajo el paradigma de programación paralela de OpenCl. Este paradigma nos aporta el modelo de programación unificada para acelerar algoritmos en sistemas heterogéneos. Podemos dividir el proceso de desmezclado espectral en tres etapas. La primera tiene la tarea de encontrar el número de píxeles puros, llamaremos endmembers a los píxeles formados por una única firma espectral, utilizaremos el algoritmo conocido como Geometry-based Estimation of number of endmembers, GENE. La segunda etapa se encarga de identificar los píxel endmembers y extraerlos junto con todas sus bandas espectrales, para esta etapa se utilizará el algoritmo conocido por Simplex Growing Algorithm, SGA. En la última etapa se crean los mapas de abundancia para cada uno de los endmembers encontrados, de esta etapa será encargado el algoritmo conocido por, Sum-to-one Constrained Linear Spectral Unmixing, SCLSU. Las plataformas utilizadas en este proyecto han sido tres: CPU, Intel Xeon E5-2695 v3, GPU, NVidia GeForce GTX 980, Acelerador, Intel Xeon Phi 31S1P. La idea de este proyecto se basa en realizar un análisis exhaustivo de los resultados obtenidos en las diferentes plataformas, con el fin de evaluar cuál se ajusta mejor a nuestras necesidades.
Resumo:
En los últimos años hemos sido testigos de la expansión del paradigma big data a una velocidad vertiginosa. Los cambios en este campo, nos permiten ampliar las áreas a tratar; lo que a su vez implica una mayor complejidad de los sistemas software asociados a estas tareas, como sucede en sistemas de monitorización o en el Internet de las Cosas (Internet of Things). Asimismo, la necesidad de implementar programas cada vez robustos y eficientes, es decir, que permitan el cómputo de datos a mayor velocidad y de los se obtengan información relevante, ahorrando costes y tiempo, ha propiciado la necesidad cada vez mayor de herramientas que permitan evaluar estos programas. En este contexto, el presente proyecto se centra en extender la herramienta sscheck. Sscheck permite la generación de casos de prueba basados en propiedades de programas escritos en Spark y Spark Streaming. Estos lenguajes forman parte de un mismo marco de código abierto para la computación distribuida en clúster. Dado que las pruebas basadas en propiedades generan datos aleatorios, es difícil reproducir los problemas encontrados en una cierta sesion; por ello, la extensión se centrará en cargar y guardar casos de test en disco mediante el muestreo de datos desde colecciones mayores.
Resumo:
En esta memoria se presenta el diseño y desarrollo de una aplicación en la nube destinada a la compartición de objetos y servicios. El desarrollo de esta aplicación surge dentro del proyecto de I+D+i, SITAC: Social Internet of Things – Apps by and for the Crowd ITEA 2 11020, que trata de crear una arquitectura integradora y un “ecosistema” que incluya plataformas, herramientas y metodologías para facilitar la conexión y cooperación de entidades de distinto tipo conectadas a la red bien sean sistemas, máquinas, dispositivos o personas con dispositivos móviles personales como tabletas o teléfonos móviles. El proyecto innovará mediante la utilización de un modelo inspirado en las redes sociales para facilitar y unificar las interacciones tanto entre personas como entre personas y dispositivos. En este contexto surge la necesidad de desarrollar una aplicación destinada a la compartición de recursos en la nube que pueden ser tanto lógicos como físicos, y que esté orientada al big data. Ésta será la aplicación presentada en este trabajo, el “Resource Sharing Center”, que ofrece un servicio web para el intercambio y compartición de contenido, y un motor de recomendaciones basado en las preferencias de los usuarios. Con este objetivo, se han usado tecnologías de despliegue en la nube, como Elastic Beanstalk (el PaaS de Amazon Web Services), S3 (el sistema de almacenamiento de Amazon Web Services), SimpleDB (base de datos NoSQL) y HTML5 con JavaScript y Twitter Bootstrap para el desarrollo del front-end, siendo Python y Node.js las tecnologías usadas en el back end, y habiendo contribuido a la mejora de herramientas de clustering sobre big data. Por último, y de cara a realizar el estudio sobre las pruebas de carga de la aplicación se ha usado la herramienta ApacheJMeter.
Resumo:
El juego como modo de aprendizaje es algo inherente no sólo al ser humano sino, en general, al reino animal. Para cualquier mamífero el juego constituye la forma de aprendizaje fundamental. A través del juego se aprende a luchar, a defenderse y las normas básicas de convivencia en la manada. Sin embargo en el ser humano, juego y aprendizaje se han ido desligando progresivamente, excepto en las etapas iniciales de crecimiento, en las que los niños siguen aprendiendo los comportamientos más básicos a través de juegos. A medida que vamos avanzando en la escuela, se va abandonando el juego, contraponiendo las actividades lúdicas a las estrictamente relacionadas con el trabajo, con un aprendizaje más costoso. De esta forma al llegar a la etapa universitaria, el juego se ha abandonado por completo como forma de aprendizaje. No es fácil definir lo que es el juego o cuáles son sus características. Tiene una fuerte componente cultural, actividades que unas culturas pueden considerar eminentemente lúdicas, no lo serán en contextos culturales distintos. No obstante, una vez admitida la importancia del juego en el desarrollo de la personalidad, sí podemos establecer algunas de las funciones básicas que el juego desempeña en el ser humano, en relación con el perfeccionamiento y adquisición de habilidades tanto cognitivas como sociales o conductuales. El juego facilita la integración de experiencias en la conducta, contribuye a inhibir conductas no admitidas socialmente y a reforzar aquéllas con una mayor aceptación dentro del marco cultural de referencia. Mejora considerablemente la interacción social y la adquisición de las habilidades básicas necesarias para que se produzca dicha interacción de modo satisfactorio. En el caso de juegos competitivos, enseña a manejar situaciones desfavorables, a soportar y superar la frustración. Tradicionalmente, los juegos se han usado en los niveles iniciales de enseñanza, sin embargo son una poderosa herramienta también en el nivel universitario, especialmente para promover el aprendizaje activo y la adquisición de variadas competencias profesionales. En este proyecto se plantea la elaboración de una herramienta para la creación de simuladores de juegos de mesa con fines didácticos.
Resumo:
En este Trabajo de Fin de Máster se desarrollará un sistema de detección de fraude en pagos con tarjeta de crédito en tiempo real utilizando tecnologías de procesamiento distribuido. Concretamente se considerarán dos tecnologías: TIBCO, un conjunto de herramientas comerciales diseñadas para el procesamiento de eventos complejos, y Apache Spark, un sistema abierto para el procesamiento de datos en tiempo real. Además de implementar el sistema utilizando las dos tecnologías propuestas, un objetivo, otro objetivo de este Trabajo de Fin de Máster consiste en analizar y comparar estos dos sistemas implementados usados para procesamiento en tiempo real. Para la detección de fraude en pagos con tarjeta de crédito se aplicarán técnicas de aprendizaje máquina, concretamente del campo de anomaly/outlier detection. Como fuentes de datos que alimenten los sistemas, haremos uso de tecnologías de colas de mensajes como TIBCO EMS y Kafka. Los datos generados son enviados a estas colas para que los respectivos sistemas puedan procesarlos y aplicar el algoritmo de aprendizaje máquina, determinando si una nueva instancia es fraude o no. Ambos sistemas hacen uso de una base de datos MongoDB para almacenar los datos generados de forma pseudoaleatoria por los generadores de mensajes, correspondientes a movimientos de tarjetas de crédito. Estos movimientos posteriormente serán usados como conjunto de entrenamiento para el algoritmo de aprendizaje máquina.
Resumo:
En la actualidad, muchos gobiernos están publicando (o tienen la intención de publicar en breve) miles de conjuntos de datos para que personas y organizaciones los puedan utilizar. Como consecuencia, la cantidad de aplicaciones basadas en Open Data está incrementándose. Sin embargo cada gobierno tiene sus propios procedimientos para publicar sus datos, y esto causa una variedad de formatos dado que no existe un estándar internacional para especificar los formatos de estos datos. El objetivo principal de este trabajo es un análisis comparativo de datos ambientales en bases de datos abiertas (Open Data) pertenecientes a distintos gobiernos. Debido a esta variedad de formatos, debemos construir un proceso de integración de datos que sea capaz de unir todos los tipos de formatos. El trabajo implica un pre-procesado, limpieza e integración de las diferentes fuentes de datos. Existen muchas aplicaciones desarrolladas para dar soporte en el proceso de integración por ejemplo Data Tamer, Data Wrangler como se explica en este documento. El problema con estas aplicaciones es que necesitan la interacción del usuario como parte fundamental del proceso de integración. En este trabajo tratamos de evitar la supervisión humana aprovechando las similitudes de los datasets procedentes de igual área que en nuestro caso se aplica al área de medioambiente. De esta forma los procesos pueden ser automatizados con una programación adecuada. Para conseguirlo, la idea principal de este trabajo es construir procesos ad hoc adaptados a las fuentes de cada gobierno para conseguir una integración automática. Concretamente este trabajo se enfoca en datos ambientales como lo son la temperatura, consumo de energía, calidad de aire, radiación solar, velocidad del viento, etc. Desde hace dos años el gobierno de Madrid está publicando sus datos relativos a indicadores ambientales en tiempo real. Del mismo modo, otros gobiernos han publicado conjuntos de datos Open Data relativos al medio ambiente (como Andalucía o Bilbao), pero todos estos datos tienen diferentes formatos. En este trabajo se presenta una solución capaz de integrar todas ellos que además permite al usuario visualizar y hacer análisis sobre los datos en tiempo real. Una vez que el proceso de integración está realizado, todos los datos de cada gobierno poseen el mismo formato y se pueden lanzar procesos de análisis de una manera más computacional. Este trabajo tiene tres partes fundamentales: 1. Estudio de los entornos Open Data y la literatura al respecto; 2. Desarrollo de un proceso de integración y 3. Desarrollo de una Interface Gráfica y Analítica. Aunque en una primera fase se implementaron los procesos de integración mediante Java y Oracle y la Interface Gráfica con Java (jsp), en una fase posterior se realizó toda la implementación con lenguaje R y la interface gráfica mediante sus librerías, principalmente con Shiny. El resultado es una aplicación que provee de un conjunto de Datos Ambientales Integrados en Tiempo Real respecto a dos gobiernos muy diferentes en España, disponible para cualquier desarrollador que desee construir sus propias aplicaciones.
Resumo:
Los jueces online de problemas no son nuevos y como todo, tienden a mejorarse y a renovarse. Es en este punto donde cobran sentido los ejercicios interactivos, ejercicios en los que la solución a un problema se obtiene mediante la comunicación con el propio juez. Este trabajo trata de implantar y adaptar a un juez, diseñado en sus inicios para ejercicios tradicionales, los ejercicios interactivos. Esta nueva funcionalidad no sólo está pensada para que los usuarios habituales tengan nuevos retos, sino que los alumnos que utilizan esta herramienta como apoyo en asignaturas de algoritmia tengan la posibilidad de reforzar sus conocimientos a través de este tipo de ejercicios, ya que con ellos se pueden plantear problemas que no tienen sentido con los ejercicios tradicionales.
Resumo:
El flujo óptico y la estimación de movimiento es área de conocimiento muy importante usado en otros campos del conocimiento como el de la seguridad o el de la bioinformática. En estos sectores, se demandan aplicaciones de flujo óptico que realicen actividades muy importantes con tiempos de ejecución lo más bajos posibles, llegando a tiempo real si es posible. Debido a la gran complejidad de cálculos que siguen a este tipo de algoritmos como se observará en la sección de resultados, la aceleración de estos es una parte vital para dar soporte y conseguir ese tiempo real tan buscado. Por lo que planteamos como objetivo para este TFG la aceleración de este tipo de algoritmos mediante diversos tipos de aceleradores usando OpenCL y de paso demostrar que OpenCL es una buena herramienta que permite códigos paralelizados con un gran Speedup a la par que funcionar en toda una diversa gama de dispositivos tan distintos como un GPU y una FPGA. Para lo anteriormente mencionado trataremos de desarrollar un código para cada algoritmo y optimizarlo de forma no especifica a una plataforma para posteriormente ejecutarlo sobre las diversas plataformas y medir tiempos y error para cada algoritmo. Para el desarrollo de este proyecto partimos de la teoría de dos algoritmos ya existentes: Lucas&Kanade monoescala y el Horn&Schunck. Además, usaremos estímulos para estos algoritmos muy aceptados por la comunidad como pueden ser el RubberWhale o los Grove, los cuales nos ayudarán a establecer la corrección de estos algoritmos y analizar su precisión, dando así un estudio referencia para saber cual escoger.