Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
temas_previos [2021/03/24 22:15] – ahogan | temas_previos [2022/04/01 23:38] (actual) – ahogan |
---|
====== Temas Previos ====== | ====== Temas Previos ====== |
| |
| El semestre indica el semestre del 'F' (del trabajo de memoria en sí). |
| |
| ===== Primavera 2022 ====== |
| |
| * **Objetivo**: //Autocompletando preguntas sobre Wikidata// |
| * **Profesor Guía**: [[ahogan@dcc.uchile.cl|Aidan Hogan]] |
| * **Descripción**: [[https://www.wikidata.org/wiki/Wikidata:Main_Page|Wikidata]] es una gran fuente de información que permite contestar muchos tipos de preguntas. Pero para hacer consultar complejas sobre Wikidata, hay que ser experto en SPARQL, algo que limita su alcance. El objetivo de este trabajo es desarrollar un sistema de "question answering" (QA) sobre Wikidata. La tarea QA asume una pregunta en lenguaje natural como por ejemplo "¿Cuándo fue estrenada la película Sharknado?", y debería dar una respuesta directa como "2013". La tarea general es compleja, pero este tema de memoria tiene que ver con desarrollar una versión más simple de QA basada en autocompletar preguntas sobre un catálogo existente de preguntas y consultas. Por ejemplo, al teclar "cuando fue", se generan sugerencias de preguntas que empiezan así, y si se selecciona "¿Cuándo fue estrenada la película [PELÍCULA]?", se permite también buscar una película para reemplazar "[PELÍCULA]" usando autocomplete. Basado en las selecciones del usuario, se genera una consulta SPARQL que se evalúa sobre el servicio de consulta de Wikidata, generando los resultados finales. [Todavía disponible: 2022-03-22] |
| |
| * **Objetive**: //Perma-Simulation//: An HTML5 simulation of Andrew Millison's sandbox for teaching Permaculture online {{ :populous.png?200|}} |
| * **Memorista:** Cristian Bustos |
| * **Client**: [[millisan@hort.oregonstate.edu|Andrew Millison]] https://horticulture.oregonstate.edu/users/andrew-millison |
| * **Guiding Profesor**: [[jeremy@barbay.cl|Jeremy Barbay]] https://barbay.cl |
| * **Code Available**: https://github.com/msakuta/WebPopulous [2014], running on http://msakuta.github.io/WebPopulous/populous.html |
| * **Description**: (//Memoria//) In his videos for the Permaculture course at Oregon State University (e.g. https://www.youtube.com/watch?v=V3tpaIf6Jcc), Andrew Millison uses a sandbox combined with a webcam and data projector to illustrate visually various interactions between water, land and cultures, showing the passing of years in a matter of minutes. Currently, the next step for his students is to move to the real world and slow time, where mistakes are discovered years later. Could current web technology, such as demonstrated in the remake of the Populous game http://msakuta.github.io/WebPopulous/populous.html allowing to raise and lower lands while independant agents react to the changing state of the terrain, be used to procure students a cheap (i.e. running into any modern browser) interactive (more than watching a video) experience in a virtual world where they can put in practice Andrew Millison's lessons in accelerated time? We propose to develop a simplistic simulator video game in Javascript and HTML5 which can be parameterized to complement each video of Andrew Millison's course with a practical exercise where the student can put into practice the concepts described in the video, in their own virtual sandbox. The success of the project will be evaluated in terms of usability and extendibility 1) by Andrew Millison himself on three exercises, based on three selected videos from his course, 2) by a set of volunteer students from his course on such exercises, and 3) by a web developper from Oregon State University charged to configure the simulator to create additional exercises for other videos of the course, if time allows. The student must be comfortable having meetings and writing their report in English, as the project will be in collaboration with Andrew Millison. [Last Revision: [2022-03-28 Mon]] |
| |
| * **Objetivo**: Generación de software web para visualización interactiva de mallas geométricas Lepp. |
| * **Profesor Guía**: María Cecilia Rivara (mcrivara@dcc.uchile.cl). |
| * **Memorista:** Benjamin Mellado Canihuante |
| * **Descripción**: (//**Memoria** o **Doble Titulación**//) Este trabajo consiste en generar una aplicación web de uso público para estudiantes e investigadores que busquen interactuar, entender y generar sus propias mallas de triangulaciones en dos dimensiones basadas en algoritmos Lepp. El software debe permitir la visualización de estructuras de mallas permitiendo recibir y modificar parámetros como su topología (vertices y aristas) y tambien escoger entre distintos algoritmos de refinamiento Lepp de Rivara y su ángulo de tolerancia. El trabajo involucra el uso de Python o C++ para el software de generación de mallas y un framework como React o Vue para la construcción de la app web. |
| |
| * **Objetivo**: //El Atlas de Wikidata// |
| * **Profesor Guía**: [[ahogan@dcc.uchile.cl|Aidan Hogan]] |
| * **Descripción**: En [[https://www.wikidata.org/wiki/Wikidata:Main_Page|Wikidata]], se pueden buscar entidades por keyword, se pueden hacer consultas para encontrar entidades que satisfagan algunas condiciones, etc. Pero es difícil navegar Wikidata geográficamente, por ejemplo, para ver las entidades locales en una ciudad. El objetivo de este trabajo es desarrollar una interfaz que permite navegar [[https://www.wikidata.org/wiki/Wikidata:Main_Page|Wikidata]] mediante un mapa interactivo. En un primer modo, se puede seleccionar un tipo de entidad en Wikidata, como "faro", usando autocomplete. Para las instancias de ese tipo de entidad, se generará un mapa del mundo desplegando clusters de faros (registrados en Wikidata con geocoordenadas). Al hacer zoom, se pueden ver las ubicaciones de faros individuales, y sus datos detallados en Wikidata. En un segundo modo, se pueden ver todas las entidades en Wikidata en una región más pequeña, como por ejemplo, las entidades registradas por Wikidata en la ciudad de Santiago. El sistema permitiría explorar el dataset geográficamente, y puede ser usando también para entender sesgos regionales en términos de qué tan completo es Wikidata en diferentes partes del mundo. |
| |
| ===== Otoño 2022 ====== |
| |
| * **Objetivo**: Estructura de datos eficiente para indexar colecciones genómicas a partir de su descripción en VCF |
| * **Profesores Guías**: Gonzalo Navarro (gnavarro@dcc.uchile.cl) |
| * **Descripción**: VCF es un formato utilizado para varias aplicaciones bioinformáticas, ver https://en.wikipedia.org/wiki/Variant_Call_Format. La que nos interesa en este caso es describir los genomas de una población como edits de un genoma de referencia. Eso permite una representación muy compacta porque las diferencias suelen ser muy pocas, y a la vez es fácil reconstruir un genoma cualquiera del conjunto. En esta memoria queremos ir más allá y permitir buscar patrones en todos los genomas de la población, usando un índice que ocupe espacio cercano al del archivo VCF. La idea es utilizar un índice basado en la tecnología de Relative Lempel-Ziv (https://users.dcc.uchile.cl/~gnavarro/ps/dcc19.1.pdf), que es compatible con el formato VCF, formando ambos una combinación muy conveniente. Se espera que la memoria provea una interfaz simple que permita crear el índice a partir del archivo VCF (soportando un subconjunto razonable del estándar), hacer búsquedas en el índice, reportar snippets de los resultados, y extraer las partes deseadas de cualquier genoma. |
| |
| |
| * **Objetivo**: Cargar datos grandes en Wikibase |
| * **Profesor Guía**: Aidan Hogan: ahogan@dcc.uchile.cl |
| * **Descripción**: [[https://wikiba.se/|Wikibase]] es la plataforma open source usada por [[https://www.wikidata.org/wiki/Wikidata:Main_Page|Wikidata]] que permite editar datos estructurados de manera colaborativa, buscar datos, consultar datos, etc. Provee muchas funcionalidades para manejar datos diversos y ha sido usada en varias aplicaciones, pero una limitación actual es que demora mucho tiempo para cargar datos grandes porque su proceso de ingestión genera muchas transacciones. Wikibase usa MariaDB, Elasticsearch y BlazeGraph para manejar sus datos. El propósito de este tema es diseñar una mejor solución para cargar datos grandes usando Apache Spark. El primer objetivo será entender bien el modelo de datos actual usado por Wikibase. Luego se usará Spark para traducir un archivo grande de JSON (los datos de entrada) en instrucciones para cargar los datos en Wikibase de una forma más eficiente. Se podrá comparar la solución con los scripts oficiales de Wikibase en términos de la escala y eficiencia del proceso de carga. |
| |
| * **Objetivo**: //Cross-matching de un stream de alertas astronómicas con catálogos externos// |
| * **Profesores Guias**: [[ahogan@dcc.uchile.cl|Aidan Hogan]], Franciso Förster |
| * **Descripción**: ALeRCE es un broker astronómico que procesa streams de observaciones de cuerpos astronómicos, e intenta clasificar los objetos (en clases como estrellas, supernovae, galaxias, etc., por ejemplo, usando métodos de aprendizaje de máquina), generando otro stream enriquecido con meta-datos sobre los objectos. Como parte del proceso de clasificación, se hacen "cross-match" de las observaciones en la entrada con catálogos astronómicos existentes, que permite encontrar más información sobre los cuerpos (si es que están en los catálogos). Actualmente se usa un servicio externo ([[http://cdsxmatch.u-strasbg.fr/xmatch/doc/|CDS]]) que permite hace consultas tipo "cone search" para encontrar objetos en la misma región del cielo en un catálogo externo ([[https://wise2.ipac.caltech.edu/docs/release/allsky/|WISE]]), pero a veces el servicio no está disponible, y el proceso de cross-match se pueden generar muchas peticiones al servicio. Este tema de memoria tiene dos objetivos: replicar el servicio de CDS localmente en un ambiente Amazon EC2 (permitiendo //cone-search// eficiente sobre los datos de WISE), y buscar mejoras (por ejemplo, la inclusión de otros catálogos). |
| |
| * **Objetivo**: Integración de Criptomonedas como medio de pago para una sistema PoS basado en Moqui |
| * **Profesor Guía**: Andrés Muñoz Órdenes (andmunoz@dcc.uchile.cl) |
| * **Descripción**: Las criptomonedas se han convertido en el nuevo medio de pago para algunos servicios. El framework de Moqui ([[http://www.moqui.org|http://www.moqui.org]]), por su parte, ya posee un módulo de PoS que permite realizar la transacción de venta y registrar los pagos por los medios tradicionales (incluido Transbank). Lo que se busca es que el alumno incorpore a este módulo la posibilidad de utilización de criptomonedas para el pago en el PoS, de manera de generar este nuevo medio de pago como parte del pool de posibilidades que tiene hoy en día el framework. De esta manera, deberá desarrollar la integración y el manejo de un monedero electrónico para un usuario utilizando criptomonedas. |
| |
| * **Objetivo**: Desarrollo e integración de chatbots con Moqui |
| * **Profesor Guía**: Andrés Muñoz Órdenes (andmunoz@dcc.uchile.cl) |
| * **Descripción**: Un tema muy de moda en la comunicación digital son los chatbots. El chatbot es un programa informático con el que es posible mantener una conversación en lenguaje natural, tanto si queremos pedirle algún tipo de información o que lleve a cabo una acción, ya que lo hacen a través de análisis semántico. Hoy en día tienen múltiples usos: responder preguntas básicas desde un sitio web, tomar un requerimiento de atención y hasta orientar con información programada dependiendo de ciertas frases o palabras. Lo que se espera es que el alumno sea capaz de incorporar un chatbot al framework de Moqui ([[http://www.moqui.org|http://www.moqui.org]]) para la gestión de requerimientos. Esto quiere decir que el chatbot pueda realizar acciones como: tomar un requerimiento y entregar un ticket de atención, entregar información de avance del requerimiento, incorporar, preguntar o complementar a un requerimiento existente. |
| |
===== Primavera 2021 ====== | ===== Primavera 2021 ====== |
* **Descripción**: Wikidata es una versión estructurada de Wikipedia que tiene como objetivo la centralización y la organización del manejo de los datos estructurados de Wikipedia. Como Wikipedia, cualquier usuario puede editar información sobre una variedad enorme de entidades en Wikidata. A diferencia de Wikipedia, la información en Wikidata es estructurada: los usuarios editan datos en la forma de hechos simples en vez de texto (ver ejemplo: Hayao Miyazaki: https://www.wikidata.org/wiki/Q55400). Wikidata -como Wikipedia-, es una fuente secundaria de información, lo cual significa que la información en Wikidata debería tener una referencia externa asociada. El objetivo de este trabajo es encontrar y sugerir una lista de referencias (enlaces a páginas externas) que respaldan un hecho; un usuario que está editando Wikidata podría usar esa herramienta para facilitar encontrar buenas referencias. Más específicamente, el trabajo involucra tres etapas: (1) identificar los sitios webs “confiables” que se usan en muchas referencias en Wikipedia y extraer el texto de las páginas webs de estos sitios desde en Common Crawl (https://commoncrawl.org/); (2) indexar el texto (usando Lucene, Solr, ElasticSearch, o algo parecido) y crear un sistema de búsqueda, en línea (con una API), que permite sugerir documentos asociados con un hecho en Wikidata; (3) implementar y evaluar diferentes formas de búsqueda en el sistema según la calidad de las referencias sugeridas. [//El tema será una extensión del trabajo de Paolo Curotto, descrito acá: http://aidanhogan.com/docs/wikidata-references.pdf; en este caso, se usará Common Crawl para recolectar más documentos candidatos.//] | * **Descripción**: Wikidata es una versión estructurada de Wikipedia que tiene como objetivo la centralización y la organización del manejo de los datos estructurados de Wikipedia. Como Wikipedia, cualquier usuario puede editar información sobre una variedad enorme de entidades en Wikidata. A diferencia de Wikipedia, la información en Wikidata es estructurada: los usuarios editan datos en la forma de hechos simples en vez de texto (ver ejemplo: Hayao Miyazaki: https://www.wikidata.org/wiki/Q55400). Wikidata -como Wikipedia-, es una fuente secundaria de información, lo cual significa que la información en Wikidata debería tener una referencia externa asociada. El objetivo de este trabajo es encontrar y sugerir una lista de referencias (enlaces a páginas externas) que respaldan un hecho; un usuario que está editando Wikidata podría usar esa herramienta para facilitar encontrar buenas referencias. Más específicamente, el trabajo involucra tres etapas: (1) identificar los sitios webs “confiables” que se usan en muchas referencias en Wikipedia y extraer el texto de las páginas webs de estos sitios desde en Common Crawl (https://commoncrawl.org/); (2) indexar el texto (usando Lucene, Solr, ElasticSearch, o algo parecido) y crear un sistema de búsqueda, en línea (con una API), que permite sugerir documentos asociados con un hecho en Wikidata; (3) implementar y evaluar diferentes formas de búsqueda en el sistema según la calidad de las referencias sugeridas. [//El tema será una extensión del trabajo de Paolo Curotto, descrito acá: http://aidanhogan.com/docs/wikidata-references.pdf; en este caso, se usará Common Crawl para recolectar más documentos candidatos.//] |
| |
| * **Objetivo**: Clasificadores basados en Deep Learning para identificar imágenes de memes |
| * **Profesor Guía**: Benjamin Bustos ([[bebustos@dcc.uchile.cl]]) |
| * **Descripción**: (//Memoria//) El objetivo es implementar clasificadores basado en Deep Learning que detectan imágenes con memes. Actualmente los mejores clasificadores tienen una precisión de 0.75, pero la mayoría son clasificadores que ocupan técnicas clásicas. En esta memoria el objetivo es utilizar técnicas de Deep Learning para proponer soluciones alternativas a este problema y evaluar su eficacia. |
===== Otoño 2021 ====== | ===== Otoño 2021 ====== |
| |
| * **Objetivo**: //Conformación de Equipos de Proyecto de software// |
| * **Profesor Guia**: [[cecilia@dcc.uchile.cl|Cecilia Bastarrica]] |
| * **Descripcion**: La apropiada conformación de equipos de trabajo es un factor determinante en el éxito de un proyecto de software. El trabajo simultáneo, ya sea colocalizado o remoto, potencia la colaboración y la productividad. En el curso Proyecto de Software los equipos se configuran tomando en cuenta la disponibilidad horaria de modo que ningún alumno trabaje solo. En una memoria anterior se ha desarrollado una aplicación que optimiza la conformación de equipos maximizando la simultaneidad potencial de sus miembros, aunque manteniendo la equidad entre los distintos equipos del curso. Sin embargo, esta aplicación aún no se ha integrado a las otras fuentes y destinos de datos. En esta memoria se busca construir un pipeline de aplicaciones que incluya: |
| - Desarrollar una aplicación para que los alumnos del curso proporcionen su disponibilidad horaria (la lista de alumnos y su email debe obtenerse de UCursos) |
| - Adaptar la aplicación de optimización para que tome los datos obtenidos de la aplicación anterior. Su salida debe quedar disponible para poder generar las agrupaciones en UCursos. |
| |
| |
* **Objetivo**: Desarrollo de una aplicación para visualización, creación y modificación de mapas paleogeográficos. | * **Objetivo**: Desarrollo de una aplicación para visualización, creación y modificación de mapas paleogeográficos. |
| |
* **Objetivo**: Game Engine básico para fines pedagógicos | * **Objetivo**: Game Engine básico para fines pedagógicos |
* **Profesor Guía**: Daniel Calderón (dcaldero@ug.uchile.cl) | * **Profesor Guía**: Daniel Calderón (daniel.calderon@dcc.uchile.cl) |
* **Descripción**: Si bien existen sofisticados motores de juego como Unreal Engine, Unity o Godot, existe una importante barrera de entrada al momento de entender funcionalmente cada componente de estas plataformas de software. En este trabajo de implementará un motor de juego básico que permita ilustrar de manera simple el funcionamiento interno de los subsistemas más importantes. Se debe incluir al menos: sistema de rendering 3D, sistema de detección de colisiones, sistema de animación, sistema de sonido, sistema de manejo de eventos, y acceso a funcionalidades básicas vía scripting. El entregable es un Game Engine básico en formato de API multiplataforma en C++20. Se debe implementar además uno o varios juegos/aplicaciones minimalistas que ejemplifiquen su uso. | * **Descripción**: Si bien existen sofisticados motores de juego como Unreal Engine, Unity o Godot, existe una importante barrera de entrada al momento de entender funcionalmente cada componente de estas plataformas de software. En este trabajo de implementará un motor de juego básico que permita ilustrar de manera simple el funcionamiento interno de los subsistemas más importantes. Se debe incluir al menos: sistema de rendering 3D, sistema de detección de colisiones, sistema de animación, sistema de sonido, sistema de manejo de eventos, y acceso a funcionalidades básicas vía scripting. El entregable es un Game Engine básico en formato de API multiplataforma en C++20. Se debe implementar además uno o varios juegos/aplicaciones minimalistas que ejemplifiquen su uso. |
| |
| |
* **Objetivo**: Sistema de Inteligencia Artificial para videojuegos | |
* **Profesor Guía**: Daniel Calderón (dcaldero@ug.uchile.cl) | |
* **Descripción**: El propósito es generar una API simple que permita resolver problemas de inteligencia artificial modelados como agentes solucionadores de problemas (Problem-solving agents). La API debe permitir el uso de algoritmos de búsqueda clásicos sobre objetos proporcionados por el usuario. El tiempo de ejecución es relevante pues se necesita respuesta en tiempo real. Problemas tipo que podrían ser resueltos con este sistema incluyen: juegos de tablero, resolución de laberintos, búsqueda del jugador en videojuegos de sigilo, personaje de soporte en videojuego de plataformas, contrincante en videojuego de peleas, contrincante o aliado en videojuego de estrategia en tiempo real, etc. Como entrega final, se debe general uno o varios juegos minimalistas que utilicen la API implementada para dotar de “inteligencia” algún ente del mismo. | |
| |
===== Otoño 2020 ===== | ===== Otoño 2020 ===== |