Brian C Gernhardt

Graduate Student, Computer Science, RIT
BS, Computer Science, RIT 2004

initials 2784 @ cs rit edu


Master's Thesis

Equality saturation is a recently developed optimization technique. It transforms a program into a data-oriented structure, collects as many equivalent versions as possible, and then heuristically selects the most optimized version. Standard ML is a functional language that is value oriented and uses immutable data structures. This thesis will determine if these features of Standard ML make it particularly well-suited for equality saturation. As part of this goal, we will explore new equality axioms for Standard ML and common idioms within.


Data, Communications, & Networking

Fall 2011

Term Paper: Botnet Detection

A botnet is a network of computers that have been compromised by an external entity for malicious purposes. The collected power of the machines can be used to perform distributed denial of service (DDoS) attacks, send spam, or perform large-scale distributed computation like password cracking. The widespread, invasive, and powerful nature of botnets make their detection and removal a high-priority task for today's network administrators at all levels. However, botnet creators hide their traffic in popular protocols such as IRC and HTTP, making differentiating between normal users and malicious ones more difficult.

This paper provides an overview of botnet functionality and communication before giving a survey of the increasingly complicated methods used to detect and shut down these networks such as traffic inspection, behavior analysis, and machine learning.


Cryptography II

Spring 2011

Term Paper: Cryptographic Pseudo-Random Numbers

The generation of random numbers is too important to be left to chance.
~~ Robert R. Coveyou

Many cryptographic algorithms require a source of random numbers for applications such as a nonce value during encryption or as part of the generation of keys. Since we generally prefer computers to be deterministic machines, they are poor at generating random numbers and so we turn to Pseudo-Random Number Generators (PRNGs). Like any other part of a cryptosystem, the PRNG is vulnerable to attack1. The Blum-Blum-Shub (BBS) generator2 is a random number generator that is based on the difficulty of factoring integers. The major problem with BBS is its reliance on mathematics on very large integers, which severely limits its speed. This paper will explore what the cryptographic needs of a PRNG are, provide an overview of various PRNGs in use such as the Mersenne Twister3 and Yarrow4, and describe in depth the BBS algorithm.


Compiler Construction

Winter 2010

Presentation: Parrot Compiler Tools

This project was uploaded to github so that it might be kept up to date with changes to Parrot and its tools.

Project: bcg Language

The bcg language runs on and compiles to the Java VM, and is implemented using pj2 (which is similar to lex and yacc) and ASM (to create Java class files).