Matheus Portela

Reinforcement Learning for Stochastic Multiagent Systems

My undergraduate thesis was on Artificial Intelligence applied to Robotics, in which I studied how to apply Reinforcement Learning algorithms to stochastic multiagent systems. Techniques such as Q-learning with function approximation, Bayesian Programming and Steering Behaviors were applied to Pac-Man ghosts using the UC Berkeley Pac-Man simulator. During the work I published two papers, a peer-reviewed and a non peer-reviewed one, and developed a Python system available in the GitHub repository here. My thesis received the maximum grade.

UnBall Robot Soccer Team

In 2010, invited by a friend, I enjoyed the UnBall Robot Soccer Team, a university student team with one goal: build robots that can play soccer. Since then, I helped developing the strategy and computer vision modules and, currently, I have the mission of being the General Coordinator. In 2012, we placed 4th position in the Brazilian Robotics Competition. I assumed as General Coordinator in 2014, with the responsibility to reorganize the team and lead the hardware and software projects. Here is the GitHub repository with our pretty nice code, written in C++, Arduino, and Python, besides ROS, OpenCV and Libfreenect… so far.

Network Security

In 2014, I had the opportunity to work with network security at IPe - Network Engineering. During this period, I could work with some cutting-edge technology, such as Web Application Firewalls and Advanced Persistent Threats. I could also develop a project to provide Machine Learning capabilities to automatically detect intrusion and hacker attacks (with cutting edge academic knowledge), using Python and Numpy, as well as Python scripts to communicate with third-party appliances. I have also improved a lot business skills, such as competition analysis, benchmarking, development of vulnerability assessment methodologies and selling and buying products.


During the first semester of 2015, I took the Game Development class at my university where we had to develop a game in a group with artists and musicians. The result was Poïesis, a C++ game where you are a cell trying to survive in a hostile environment. The game engine was completely developed from scratch using and SDL for low-level OS integration. During this work, I decided to use an Entity System approach, Quad-tree spatial partitioning and developed a Particle and Physics System, which led me to an Honorable Mention among the 12 games evaluated. Check the code out at the GitHub repository.

The Amazeing Experience

In 2015, I was a participant of the Global Game Jam: a worldwide event where developers, artists, and musicians meet in their cities to produce an entire computer game in 48 hours. In Brasília, the event took place at the Behold Studios HQ, under the theme “What do I do now?”. Without sleeping, me and 3 more friends could finish our game, the aMAZEing experience, using C# and Unity 3D. It was my first game ever and I am really proud of it. Of course, you can take a look at game GitHub repository.

Gaze Enhanced Voice Recognition

During my internship at the CSIRO, in Australia, I could develop a great project: using gaze trackers to enhance voice recognition systems. Supervised by David Rozado, a great friend, we created a GUI using Python (with PyQt) and Microsoft Speech Recognition and designed user tests to prototype an idea of how to integrate these systems and make hands-free voice recognition possible. Since a picture is worth a thousand words, check out the video below to have an idea of our system. You can also read our paper, published at OZCHI 2014.

Didactic Assembler

As a student in Systems Software course, we had the task of writing our own assembler, which would translate a source file written in didactic assembly language to binary output, the last should run in our own simulator. Here is the GitHub repository containing the whole code, written in pure C language.

Enigma Machine Simulator

As part of my #100DaysOfCode initiative, I developed an Enigma machine simulator from the ground up. For about three weeks, I’ve studied the machine technical details, wrote the simulator code in JavaScript and Node.js using a Test-Driven Development approach, created a web interface, and documented the steps in blog articles. You can check it here and the code is available at my GitHub repository.


I started studying cryptography in 2016 with a hands-on approach by implementing some of the most common cryptographic algorithms. So far, I implemented the Vigenère cipher cryptography algorithm in C with a Python extension (check out my GitHub repo here) as well as the Caesar cipher (GitHub repo here).

Collatz Conjecture

After watching a video on the Collatz Conjecture, if decided to implement it in Haskell. You can find my script here.


simpletable is a lightweight Python module for generating simple HTML tables without requiring the installation of any third-party libraries. Checkout the code in this GitHub repository.