Resume

Gabriel Madeira

ABOUT
Hey, I'm Gabriel,Computer Science Student 💻@ Federal University of Rio Grande do Sul 🏛
EXPERIENCES
Work Experience
German Research Center for Artificial Intelligence (DFKI)
Exchange Student
April 2023 - March 2024
Kaiserslautern - Germany

Working in the Smart Data & Knowledge Services department as part of an exchange program.

Computer Graphics and Image Processing Research Group
Undergraduate Researcher
June 2022 - November 2022
Porto Alegre - RS - Brazil

• Advised by Prof. Manuel M. Oliveira.
• Study of deep learning techniques applied to image classification and segmentation.

Nelogica
Software Development Intern (Back-end)
October 2021 - March 2022
Porto Alegre - RS - Brazil

• Implementation of a database event proxy REST API service, in the OpenAPI Specification, almost zeroing the rate of accumulated DB commands in the message service for clients.
• Implementation of a service dynamic installer, making the process of creating specific new instances easier.
• Implementation of replaceable tags feature in the body of a message in the notification service for clients.
• Technologies: Delphi.

Nelogica
Software Development Intern (Front-end)
February 2021 - September 2021
Porto Alegre - RS - Brazil

• Helping to develop a web platform to operate in the financial market.
• Creation of a virtual wallet component, which simulates a real exchange wallet.
• Login screen loading optimization, using asynchronous imports in JavaScript, ~47% reduction in file size required for the login screen.
• Asset conversion method from several different quote sources using JavaScript promises.
• Technologies: Vue.js, JavaScript, CSS, HTML.

Information Management Research Group - FURG
Undergraduate Researcher
April 2018 - July 2020
Rio Grande - RS - Brazil

• Advised by Prof. Eduardo Borges.
• Cleaning anomalies in a database of more than 500 thousand rows with Postgresql.
• Development of a recursive algorithm forthe visualization of academic trees.
• Developed The Gold Tree, a web tool for academic genealogy analysis using HTML, CSS, Javascript and Postgresql.
• Study of several machine learning technical algorithms.
• The Nearest Centroid algorithm and TF-IDF method were used to model an advisor recommendation system.

Publications:
[1] Madeira, G., Borges, E.N., Baranano, M., Nascimento, P.K., Lucca, G., de Fatima Maia, M., Santos, H.S. and Dimuro, G.P., 2019. The Gold Tree: An Information System for Analyzing Academic Genealogy. In Proceedings of the ICEIS 2019 (pp. 114-120).
[2] Madeira, G., Borges, E.N., Lucca, G., Santos, H. and Dimuro, G., 2019. A tool for analyzing academic genealogy. In Lecture Notes in Business Information Processing, vol 378, (pp. 443–456).
[3] Madeira, G., Borges, E.N., Lucca, G., de Carvalho Segundo, W., Wieczynski, J.C., Santos, H.S. and Dimuro, G.P., 2021. Using Academic Genealogy for Recommending Supervisors. In Proceedings of the ICEIS 2021 (pp. 885-892).

Qwerty News Portal
Computer Technician
April 2016 - July 2017
Dom Pedrito - RS - Brazil

• Developed a Arrival and departure control system using HTML, CSS, Javascript, PHP, MySql.
• Developed a Transparency portal using HTML, CSS, Javascript, PHP, MySql.
• Video editing and art creation for the news portal.

Education
Rheinland-Pfälzische Technische Universität Kaiserslautern-Landau
Computer Science Exchange Student
April 2023 - March 2024
Kaiserslautern - Germany

Attending Master's classes as part of an exchange program.

Federal University of Rio Grande do Sul
Computer Science Undergraduate
March 2020 - Present
Porto Alegre - RS - Brazil

GPA: 9.40/10.00

Federal University of Rio Grande (FURG)
Computer Engineering Undergraduate
March 2019 - December 2019
Rio Grande - RS - Brazil

GPA: 9.40/10.00
(university and course transfer after one year)

Federal University of Rio Grande (FURG)
Information Systems Undergraduate
March 2018 - December 2018
Rio Grande - RS - Brazil

GPA: 9.62/10.00
(course transfer after one year)

Qwerty Escola
Technical course - Computing Technician
March 2015 - December 2016
Dom Pedrito - RS - Brazil

GPA: 9.32/10.00

SKILLS

Programming Languages

JavaScript
2 years
SQL
2 years
Python
2 years
C/C++
1 year
PHP
1 year
Java
6 months
Delphi
4 months

Technologies

Vue.js
Spring Boot
Git
Unix, Bash
Docker
Scikit-Learn, Tensorflow
HTML, CSS
Angular
Qt

Languages

English
Advanced
Portuguese
Native
German
Beginner
PROJECTS
ascii-artC++QtOpenCV
Generate ASCII arts from images.

ascii-art

This is an application for generating ASCII arts from images. In its interface, there are some pre-processing image operations like resize, brightness, contrast, threshold, edge detect (Canny), and blur. Those are used to adjust the input image for better results in the output of the two available algorithms for conversion to ASCII code implemented in this app.

The first is a structure-based algorithm, using the template matching strategy, where an 8x8 kernel iterates the image computing the difference with all characters glyphs, and the one with less difference is chosen. Now, the second one is tone-based, where a density strategy is used. Given a pixel, the luminance 0-255 value is mapped to an array of characters ordered by density.

The project was developed for the final assignment of the Fundamentals of Digital Image Processing course (INF01046) at UFRGS.

Interface

Dependencies

  • Qt
  • OpenCV
image-processing-appC++QtOpenCV
Image manipulation application (like Adobe Photoshop)

image-processing-app

The goal of this project was to build an application for image manipulation (like Adobe Photoshop) but implement the image operations instead of using some method of existent libraries.

There are available operations like 3x3 convolution, quantization, brightness, contrast, rotation, flip, zoom in/out and negative.

This application was developed for Fundamentals of Digital Image Processing course (INF01046) at UFRGS.

Interface

Dependencies

  • Qt
  • OpenCV
INFinityDriveC++TCP Sockets
Dropbox-like service, which allows sharing files with automatic synchronization between different devices, using TCP Socket API.

INFinityDrive

INFinityDrive is a Dropbox-like service, that allows file sharing with automatic synchronization between different devices.

It is implemented using the Transmission Control Protocol (TCP) Socket API with C++. In its core functions, important concepts such as programming with multiple processes/threads, communication and concurrency control were used.

Another important mechanism implemented is the replication system with leader election. Using the Ring Election Algorithm it makes sure that when the primary server crashes, a backup server takes the responsibility.

It was tested with 5 computers connected to a network. One as the main server, 2 as backup servers and 2 as clients. Tests included:

  • Client file upload, check if it is propagated correctly
  • Kill the primary server, check the election of a backup server and the reconnection of the clients to it
  • Client file upload through the elected server
  • Kill the current elected server
  • ...

This project was developed for the Operating Systems II course at INF-UFRGS.

Working example

Working example

Authors

compiler-projectCLexYaccAssemblyMakefile
Compiler built from scratch.

compiler-project

The goal of this project was to build a compiler from scratch for a language specified by the professor. It was separated into 7 incremental parts:

  • 1: create the lexical analyzer using lex tool and initialize a global symbol table;
  • 2: create the syntax analyzer using yacc and populate the global symbol table;
  • 3: store the derivation tree found by the parser from part 2 (generated by yacc) in an Abstract Syntax Tree (AST) structure;
  • 4: perform semantic verification through a series of tests;
  • 5: intermediate code generation from AST; creation of the Three-address code (TAC) structure; temporary symbols and labels;
  • 6: translation of the intermediate code (TAC) generated in the previous part to assembly code;
  • 7: compiler error recovery and optimization.

This project was developed for the Compilers course at INF-UFRGS.

Code compilation example 1

Code compilation example 1

Code compilation example 2

Code compilation example 2

academic-genealogy-rsPythonScikit-learn
Source code of the work described in the paper "Using Academic Genealogy for Recommending Supervisors"

academic-genealogy-rs

Source code of the work described in the paper "Using Academic Genealogy for Recommending Supervisors".

It includes the pre-processing, classification model and evaluation of a recommendation system based on academic genealogy.

Abstract

Selecting an academic supervisor is a complicated task. Masters and Ph.D. candidates usually select the most prestigious universities in a given region, investigate the graduate programs in a research area of interest, and analyze the professors’ profiles. This choice is a manual task that requires extensive human effort, and usually, the result is not good enough. In this paper we propose a Recommender System that enables one to choose an academic supervisor based on his/her academic genealogy. We used metadata of different theses and dissertations and applied the nearest centroid model to perform the recommendation. The obtained results showed the high precision of the recommendations, which supports the hypothesis that the proposed system is a useful tool for graduate students.

Published paper

murkC#Unity
Murk's idea is to be an immersive game by listening, where there are no graphics, just sounds.

:skull: :headphones: murk

Games usually have graphics and sound. However, as the visual is usually preferred, it ends up not taking advantage of resources that an audio-only game could offer. Murk's idea is to be an immersive game by listening, where there are no graphics, just sounds. The user will put on headphones, close his eyes and concentrate to understand where he is and what elements are around him. Game's main goal: turn off radios across the map by surviving the monsters.

This project was developed for the Human-Computer Interaction course at INF-UFRGS.

Murk's Idea

Murk Screens

Interface Description

Authors

news-recommender-systemVue.jsNeo4jPython
News recommender system based on knowledge graphs

news-recommender-system

This work seeks to use the technique of creating knowledge graphs to recommend news and users. A knowledge graph was built from the MIND dataset through an initial pre-processing and storing it in a Neo4j database, which is based on graphs. After that, queries and an interaction interface for news and user recommendation were developed.

Currently, news and users are recommended simply by searching first-level nearby nodes. More complex methods could be implemented using the same knowledge graph.

Knowledge graph structure example (Neo4j query)

Neo4j Query

News RS interface

News RS Interface

Users RS interface

Users RS Interface

This project was developed for the Database Project course at INF-UFRGS.

thegoldtreeJavascriptd3.jsHTMLCSSPostgreSQL
An Information System for Analyzing Academic Genealogy

thegoldtree

Academic genealogy investigates the relationships between student researchers and academy professionals. In recent years, it proved to be a powerful technique to help analyze the spread of scientific knowledge. Tools that make to visualize these relationships among academics easier are potentially useful and have been proposed.

This work specifies and describes the development of a Web information system for creating and visualizing academic genealogy trees from a set of metadata extracted and integrated from multiple sources. The proposed system allows a researcher to query and track information about his or her advisers and graduate students at any level. A case study was explored to validate the system using data from more than 570 thousand theses and dissertations.

The project was developed in the Information Management Research Group (GINFO) of the Universidade Federal do Rio Grande (FURG) and was partially funded by the FAPERGS.

Published Paper

Website

Interface

z-wavesC++OpenGL
Surviving in a zombie-apocalyptic world.

:zombie: z-waves

Z-Waves is a game where you survive in a zombie-apocalyptic world. There are successive waves of zombies, making the game harder and harder. You can find "Cow boosts", which give more speed, rate of fire, and extra life.

This project was built using OpenGL for the Fundamentals of Computer Graphics course at INF-UFRGS.

Z-Waves

music-creatorJava
Simple music creator using Java and Jfugue music lib.

music-creator

Simple music creator using Java and Jfugue music lib.

Given a list of commands, those are converted to music when the user presses play.

Project developed for the discipline of Program Construction Techniques (INF01120) at UFRGS.

Interface

UML

Dependencies

  • Jfugue
  • Javafx
youtube-dbPostgreSQLPython
YouTube database modeling.

youtube-db

Youtube database modeling and a simple tool to connect with db and run some interesting queries

Developed for the discipline of Database Fundamentals (INF01145) at UFRGS.

UML