Undergraduate Research

Halfway through my second year of the computing degree, I decided I wanted to participate in the undergraduate research program. For an undergraduate, it was the top of the food chain. An internship outside the department didn’t give you much access within the department; being a teaching assistant helped a bit, but research was different. It carried a certain status and, more importantly, privileged access: there was a dedicated room for students in the program, with computers we could use without fighting the rest of the student body. Depending on the professor, research also gave you access to a real lab, full of special machines and equipment that most students never even got to see.
To participate, you needed a project and had to register by the deadline; missing the date meant waiting another year. When they announced that applications were opening, I started looking for a professor to be my advisor. First, I went to talk to Professor Bauer, with whom I’d already had some contact when we’d found the viruses in the computing lab. I told him I wanted to do a project related to virus research, but he replied with something like: “Okay, write up a project and bring it here.” The thing is, I was a second-year student, with no idea how to write a research project, let alone one about viruses. And there was no one in the department formally working on that topic.
I also went to talk to other professors. Among them, Professor Márcio Bunte, who had taught us the RSA algorithm, mentioned in another chapter. That conversation was very different. He understood I was still in the early years of the course and explained that cryptography wasn’t his area. His field was parallel and high-performance computing. Even so, he suggested a topic that bridged the two: studying prime number generation on parallel processing machines. That ended up being our project.
The project was accepted and I started receiving a scholarship. I officially joined the parallel computing group at UFMG’s Department of Computer Science. The group had its own lab: I finally had a quiet place to work, always with a computer available and with machines that few people had access to. It was there that I first saw, for example, a Silicon Graphics workstation, introduced to me by Yuri. That was out of this world: 3D graphics, top-quality audio, 3D animations running on the screen — everything a student in the ’90s dreamed of seeing on a computer. There was also a strange server in a corner, which I later found out was actually a vector coprocessor. It was so advanced (and different) that nobody really knew how to use it.
Back to the project: to generate prime numbers, the first step was to have good random number generators. So I dove into studying pseudo-random number generation algorithms, implemented several, and then had to figure out how to compare the results. My literature review led me to a visual method that became my favorite, even though it wasn’t the most scientifically rigorous. The idea was simple: use pairs (or triples) of random numbers as coordinates and plot them on a graph. Good generators produce a uniform cloud of points; bad ones reveal patterns — lines, clusters, geometric structures. In 2D, many simple algorithms pass the test; in 3D, several start to fail. The graphs were beautiful, and seeing patterns emerge where there should be none was fascinating.
After that project came another one: my senior capstone, which was about the Kerberos protocol. Kerberos is a cryptography-based authentication protocol, created at MIT in 1988 and still in use today. The project consisted of studying how it worked and putting the theory into practice. At the time, one of the issues in the labs was controlling access to the printers and limiting the number of pages per student. So I implemented a printing system that used Kerberos “under the hood” to authenticate the user and keep track of their pages. It worked well enough to pass the course, but it wasn’t ready for production, because the network infrastructure didn’t yet use Kerberos and there was still a lot to build.
Even so, it was enough to be my gateway into the magical world of cryptography.