Kevin Krenz

Home // Projects // Journal // Contact

Projects

Here are some of the projects I’ve completed while working on my master’s degree.

Introduction to Operating Systems

Multi-threaded web server
Created a multi-threaded webserver based on a simplified protocol.
Technologies: C, Linux sockets, pthreads
Proxy web server and cache
Converted web server into a proxy, translating protocol requests into http requests
Created a simple cache that communicates with the proxy via shared memory
Technologies: C, sockets, shared memory, message queues, curl, pthreads
Downsampling image service
Created a service that downsamples images via an RPC service
Technologies: C, Sun RPC

Advanced Operating Systems

Virtual Machine Manager
Created a virtual machine manager that dynamically manages the CPU and memory allocated to virtual machines.
Technologies: C, libvirt
Barriers
Implemented and evaluated various barrier designs from the paper by Mellor-Crummey and Scott.
Technologies: C, OpenMP, MPI
Simple Distributed Service
Created a simple, distributed web store service that obtains product bids from multiple vendors.
Technologies: C++, Protocol Buffers, gRPC
MapReduce Implementation
Implemented a simplified version of map/reduce framework.
Technologies: C++, Protocol Buffers, gRPC

Computer Networks

Spanning Tree Protocol
Devloped a simplified version of a distributed spanning tree protocol to run on a layer 2 topology.
Technologies: Python, Mininet
Software-defined networking firewall
Created a configureable firewall for an OpenFlow enabled switch.
Technologies: Python, Pyretic
BGP Hijacking Attacks
Explored vulnerabilities in BGP by simulating topologies and attacks.
Technologies: Python, Mininet

Database Systems Concepts and Design

Tool rental service
Designed and implemented an online inventory and tool rental service, focusing on the data model design.
Technologies: Python, Flask, MySQL

Software Analysis

Basic Fuzzing Framework
Used CERT’s Basic Fuzzing Framework to fuzz Linux and C++ applications.
Technologies: BFF
Randoop
Generated error-revealing test cases of a Java program using Randoop.
Technologies: Java, Randoop
Dataflow
Implemented two intra-procedural dataflow analyses.
Technologies: C, C++, LLVM
Datalog
Implement two static analyses using a declarative logic programming language.
Technologies: Datalog
Cooperative Bug Isolation
Use the data collected by a statistical debugging tool, Cooperative Bug Isolation (CBI) to identify and report bugs in Linux applications.
Technologies: C, CBI
Delta Debugging
Use the Delta Debugging test case minimization tool to find 1-minimal failing test cases for two different programs.
Delta, C, Java
Klee
Gain familiarity with a research based symbolic execution engine.
Technologies: Klee, LLVM, C