7 resultados para Programación evolutiva (Computación)
em Universidade Complutense de Madrid
Resumo:
La consolidación de las grandes infraestructuras para la Computación Distribuida ha resultado en una plataforma de Computación de Alta Productividad que está lista para grandes cargas de trabajo. Los mejores exponentes de este proceso son las federaciones grid actuales. Por otro lado, la Computación Cloud promete ser más flexible, utilizable, disponible y simple que la Computación Grid, cubriendo además muchas más necesidades computacionales que las requeridas para llevar a cabo cálculos distribuidos. En cualquier caso, debido al dinamismo y la heterogeneidad presente en grids y clouds, encontrar la asignación ideal de las tareas computacionales en los recursos disponibles es, por definición un problema NP-completo, y sólo se pueden encontrar soluciones subóptimas para estos entornos. Sin embargo, la caracterización de estos recursos en ambos tipos de infraestructuras es deficitaria. Los sistemas de información disponibles no proporcionan datos fiables sobre el estado de los recursos, lo cual no permite la planificación avanzada que necesitan los diferentes tipos de aplicaciones distribuidas. Durante la última década esta cuestión no ha sido resuelta para la Computación Grid y las infraestructuras cloud establecidas recientemente presentan el mismo problema. En este marco, los planificadores (brokers) sólo pueden mejorar la productividad de las ejecuciones largas, pero no proporcionan ninguna estimación de su duración. La planificación compleja ha sido abordada tradicionalmente por otras herramientas como los gestores de flujos de trabajo, los auto-planificadores o los sistemas de gestión de producción pertenecientes a ciertas comunidades de investigación. Sin embargo, el bajo rendimiento obtenido con estos mecanismos de asignación anticipada (early-binding) es notorio. Además, la diversidad en los proveedores cloud, la falta de soporte de herramientas de planificación y de interfaces de programación estandarizadas para distribuir la carga de trabajo, dificultan la portabilidad masiva de aplicaciones legadas a los entornos cloud...
Resumo:
En estos últimos años la curiosidad por el sector informático, y más específicamente en la programación, ha producido una gran demanda por los interesados en estas áreas. Esto ha provocado que el número de tutoriales y entrenadores haya aumentado de una forma considerable. Debido a esta gran demanda, ha surgido la idea de desarrollar una herramienta con la que poder gestionar tutoriales de programación con una aplicación de escritorio. La finalidad de este proyecto es poder crear tutoriales interactivos que permitan a los alumnos adquirir conocimientos de una forma sencilla y atractiva. Esto se consigue mediante la posibilidad de enriquecer el formato del texto al mostrar las explicaciones o los enunciados de las preguntas y añadir imágenes. Para evitar que sea un tutorial de sólo lectura, que resulta poco atractivo y no permite al estudiante evaluar los conocimientos adquiridos, con esta herramienta se podrán intercalar preguntas entre la teoría para enganchar más al alumno, y conseguir que el aprendizaje sea muy incremental, para no tener una cantidad abrumadora de información en poco tiempo. Con estos tutoriales el alumno podrá comprobar los conocimientos adquiridos gracias al seguimiento continuo. El estudiante, según lea la teoría y realice los ejercicios con grado de dificultad creciente, tendrá más capacidad para resolver ejercicios nuevos y prepararse para continuar el tutorial. El resultado de este proyecto ha sido una herramienta multiplataforma y con licencia abierta MIT, que puede ser descargada de https://github.com/Kherdu/TFG.
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:
La Ciberseguridad es un campo que cada día está más presente en nuestra vida con el avance de la tecnología. Gobiernos, militares, corporaciones, instituciones financieras, hospitales y otros negocios recogen, procesan y almacenan una gran cantidad de información confidencial en sus ordenadores y transmiten estos datos a través de redes a otros ordenadores. Con el creciente volumen y la sofisticación de los Ciberataques, se requiere una atención continua para proteger los negocios sensibles y la información personal así como salvaguardar la seguridad nacional. En el futuro casi todo va a ser informático por lo que con el avance de la tecnología nuevas amenazas aparecen, más peligrosas y sofisticadas. El enfoque de nuestro proyecto es demostrar que con unos pocos conocimientos de redes, seguridad, computación en la nube y unas pocas líneas de código se puede implementar una potente herramienta de ataque que puede poner en peligro la integridad y confidencialidad de los usuarios e instituciones.
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:
La verificación formal de un programa es la demostración de que este funciona de acuerdo a una descripción del comportamiento esperado en toda posible ejecución. La especificación de lo deseado puede utilizar técnicas diversas y entrar en mayor o menor detalle, pero para ganarse el título de formal esta ha de ser matemáticamente rigurosa. El estudio y ejercicio manual de alguna de esas técnicas forma parte del currículo común a los estudios de grado de la Facultad de Informática y del itinerario de Ciencias de la Computación de la Facultad de Ciencias Matemáticas de la Universidad Complutense de Madrid, como es el caso de la verificación con pre- y postcondiciones o lógica de Hoare. En el presente trabajo se explora la automatización de estos métodos mediante el lenguaje y verificador Dafny, con el que se especifican y verifican algoritmos y estructuras de datos de diversa complejidad. Dafny es un lenguaje de programación diseñado para integrar la especificación y permitir la verificación automática de sus programas, con la ayuda del programador y de un demostrador de teoremas en la sombra. Dafny es un proyecto en desarrollo activo aunque suficientemente maduro, que genera programas ejecutables.
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.