Academic Projects

Multi-Source Knowledge Extraction with Applications to Urban Computing

Extracting knowledge from multi-source data is a challenging task, important in several domains. While data mining and machine learning models dealing with a single data source have been well explored, models capable of extracting knowledge from multiple data sources are still missing, and our goal in this project is to remedy that. One area that would benefit from such models is urban computing, in which data that comes from several sources must be used to solve urban problems. Currently, we are focusing on models that use data from mobile phone metadata and social networks to improve mobility prediction and provide location-aware recommendations to users.

So far we have analyzed the impact of several types of contextual information on the precision of mobility models. Our next goal is to check whether the use of multiple sources of information increase the limits of predictability in human mobility.

Optimizations for Graphics Processing Units

In the past, I have worked with compiler techniques for parallel applications. The goal of my work was to create tools to raise the abstraction level of writing parallel code and to mitigate divergences in such code. To help developers write parallel code, we provided a suite of static analyses, which rely on OpenACC's capabilities. And to reduce divergences we introduced a novel optimization - the fusion of calling sites - which joins function call sites to avoid that different threads call functions divergently.

Range Analysis

During my undergrad studies I was a research assistant at the Compilers Laboratory of the Federal University of Minas Gerais. The main project I worked on during that period was about range analysis and it was selected as one of the top ten undergraduate research projects in Brazil, in 2011.

Personal Projects

Algorithms in Python

The goal of the website "Algoritmos em Python" is to teach Algorithms and Python, in Portuguese. The motivation for the project came from the fact that there is large amounts of resources in English to teach Computer Science topics, but such resources are scarce in Portuguese.

Udacity - Deep Learning Foundation Nanodegree

Machine Learning and Artificial Intelligence have become two of the most important topics in Computer Science lately. Deep Learning is a branch of Machine Learning that has been successfully applied to a variety of scenarios and has helped solve all sorts of interesting problems in the past few years. Given the importance of such a field, I decided to learn its main techniques and the skills necessary to keep learning more about it. To help me do that, I took Udacity's Deep Learning Nanodegree program. Here's a repository with my solutions to the projects.