Last update: 2018-04-17
This is my academic webpage. My current personal homepage is at elmord.org.
I obtained my Master's degree in Computer Science in 2018 at the Institute of Informatics of the Federal University of Rio Grande do Sul (UFRGS), Brazil. I obtained my Bachelor's degree in Computer Science in 2013, also at UFRGS.
My main research interests are in the area of programming languages. The subject of my Master's thesis is a dependent type based code transformation for the LLVM compiler framework to protect C programs against spatial memory safety violations, such as buffer overflows. For my Bachelor's final project, I designed a functional programming language with union types based on Portuguese for didactical purposes. In the future, I'm interested in working on interoperability across programming languages.
I also have a side interest in linguistics. During my undergraduate studies, I worked as a research assistant in the development of mwetoolkit, a tool for identification of multi-word expressions (expressions made of multiple words behaving as fixed units, such as phrasal verbs like take off, give up and terms like computer science, organic chemistry) in large volumes of text. Nowadays, I'm especially interested in historical linguistics.
During my undergraduate studies, I was also a teaching assistant for the Fundamentals of Algorithms course, which is based on the How to Design Programs book, for three years (2010, 2012, 2013).
Research and publications
This is a summary of the research projects I worked in. Click on each project for more detailed information.
|2014–2018||Týr: a dependent type based code transformation for spatial memory safety in LLVM
|2013||Faz: uma linguagem funcional didática
Bachelor's final project
|2011–2012||mwetoolkit: Identification and extraction of multi-word expressions in corpora
Work as an undergraduate research assistant
In the first semester of 2014, I did my Master's Teaching Practice activity in the Advanced Functional Programming course, under the orientation of Prof. Rodrigo Machado. In that course, I prepared and delivered two lectures: one about Lisp/Scheme macros, and one about continuations and parsing in Lisp/Scheme. The slides may not be very useful without the accompanying explanations, though. In the parsing lecture I also presented an example parser written in Racket. I also elaborated exercises for that course.
|2010, 2012–2013||Teaching Assistant
I was an undergraduate teaching assistant in the Fundamentals of Algorithms course for three years, under the orientation of Prof. Lucio Mauro Duarte. This course is based on the How to Design Programs (HtDP) book, and covers topics such as data structures, lists, trees, graphs and recursion, with an emphasis in documentation and testing of programs. It uses the HtDP languages, which are variants of Scheme designed with teaching in mind, in the DrRacket programming environment.
|2011||MLP: an ALGOL-like language with closures and a graphical interpreter
MLP is a programming language with an ALGOL-like syntax, closures, dynamic typing, and lexically or dynamically scoped depending on user configuration. I designed it as the final project of the Programming Language Models course (MLP, in Portuguese), along with a graphical interpreter which shows the call stack and allows step-by-step execution of the program. It was written in Common Lisp.
|2010||AMK CYK parser
|2010||metaCPD: a crude database system in C and a graphical interface in Python
metaCPD consists of a C program, acting as a server, which implements simple database-like functionality, such as table creation and queries, and a Python program, acting as a client, which allows the user to perform those operations through a graphical interface. The database server was written by me, and the graphical client was written by Caio Miranda.
|2009||Runespell: a simple orthographical checker in C
This was my final project for the Data Structures course. The main reason I keep this program around is that it contains a reasonable implementation of a red-black tree (which is now in use in mwetoolkit, by the way).
|2009||Neander-js and Ahmes-js: simulators for the Neander and Ahmes architectures
These are some tutorials I wrote before I had a blog. Nowadays, I tend to publish these kinds of texts as blog posts instead.
|2010||Introdução ao bash
An introduction to bash and shell-scripting (in Portuguese).
|2012–today||Blognir: a minimalistic blog system in PHP
Blognir is a very simple, no-frills, databaseless blog system written in PHP. It's been powering my blog since 2012.
|2014||Litlavík: an extremely simple wiki in PHP
Litlavík is a very simple wiki I wrote to help me keep track of my Master's research.
|2011||him: a pagan text editor
him is a Vim script which makes it possible to run Vim primarily from Insert mode. Nowadays I use Emacs, so this script is not maintained anymore.
|2010–2011||Hatter: a hat-oriented esoteric programming language
Hatter is an esoteric programming language I created for fun. It is based on the concept of moving data into and out of hats, which perform some "magic" when data is dropped into them.
Most of the software I publish goes to my GitHub page nowadays.