Programming Projects

Compiler

Compiler written for Compiler Theory with Dr. Wilsey.

 

Feel free to use it as an example:

https://code.google.com/p/compilertheory/

Network Security

The final project for Network Security. Our code files for the normal client as well as our automated script to steal points/accounts from other players.

 

It is disguised as a pretty pony jpeg game so our competitors wouldn’t find the code:

https://code.google.com/p/horsepuzzle/

Parallel Processing GUI

Senior Design Project – University of Cincinnati

Take a parallel (or normal) program and use it as input. Let the GUI analyze the program and determine how analysis should continue. Then the GUI builds -> compiles -> executes and times -> produces graphs of these results in real time.

Project Files

The final version of this project is a Parallel Processing GUI designed to help parallel programmers characterize performance of program written in C++ using OpenMP tools. The GUI is written in Java, and the user can use it to edit, compile, and monitor the execution of his/her C++ (works whether or not the program utilizes OpenMP). Perl is used in the background to analyze the program, notifying the user of possible sections to monitor. It also modifies a copy of the code to produce differing versions to be compared. Finally, this back end compiles the copied and slightly modified version, and through a system call times the program’s execution. Because of the system calls, this program is bound to Linux/Unix.

After the program is analyzed, the user may “sweep” certain detected or pre-identified parameters to determine their affect on execution speed. This is a great way to monitor the best settings for certain algorithms that require tuning, or to see the scaling of different classes of algorithms based on size. For instance, one could observe the growth in execution of an O(n^2) algorithm vs. an O(nlogn) as n increases. This tool allows the user to see the plots of execution time, memory use, and distribution of user/system time build as each data point is collected by running the program.

The files contained are the reports from each stage of the design, and highlight the planning along the way, as well as the evolution of the concept.