About me
I recently graduated with a Ph.D. in Computer Engineering from Iowa State University. I was bestowed a highly prestigious Research Excellence Award that is only given to the top 10% of graduate students. During my time at Iowa State I came up with many inventions. It has been a long and arduous journey, but also the most intellectually rewarding experience of my life.
Interests
My specialty is Software Engineering. More specifically, my research focuses primarily on software engineering theory for practical applications related to software evolution. I believe my work is necessary (in the mathematical sense of the word) to increase the reliability of software and eventually will be accepted into the mainstream of software engineering – particularly engineering of systems requiring high reliability such as mission-critical and safety-critical systems.
Dissertation
My dissertation research is about laying a theoretical foundation upon which tools could be built that help automate some software engineering tasks – primarily tasks important to software evolution. A few of the tasks include online software maintenance, validation, incremental testing, software merging, project scheduling, cost estimation, and program management.
The theory is based on representing different aspects of software as graphs consisting of nodes and edges, identifying differences between the graphs, and analyzing and using the differences for the software evolution tasks. The theory includes a notion of graph difference that is important to certain software evolution tasks and a methodology for evaluating techniques for finding differences.
I created the notions of minimal signature, minimal signature tree (MST), and combined minimal signature tree (Co-MST). The MST is homeomorphic to the suffix tree when the graph is a string. I have designed a simple algorithm based on these concepts for computing an alignment between graphs.
Additional research
Because of my obsession with software engineering research, I have already branched out with my research beyond my dissertation. I created a simple, accurate, and efficient technique for removing cycles from graphs – that is finding a maximal acyclic subgraph of a graph. The maximal acyclic subgraph problem is important for many applications including graph drawing and incremental validation. The technique outperforms existing work by an order of magnitude both in terms of the speed and accuracy.
I have extended information theory to include a theory of information accessibility and have applied the concepts to create an efficient method that can perform in sublinear expected time for test case simplification and defect isolation that is provably optimal as a divide and conquer technique, improving upon existing ground breaking work in the area.
Ongoing research
Before my dissertation research, I came up with an efficient technique for performing Online Software Maintenance in Mission-Critical Software for which a patent is pending. I have done validation of a prototype that uses the technique and found the technique to be very easy to use. The work in my dissertation is an important foundation that can be used for estimating costs associated with Online Software Maintenance.
Guiding research philosophy
My research interests are in theory and algorithms for practical use – particularly in the software engineering domain. My interest in theory is to clearly define important concepts. The idea is that clear definitions can be used to define methodology for evaluating techniques and in the long term lead to important practical improvements. My interest in algorithms is to efficiently and effectively tackle important practical problems.
Other
I strongly believe that my ideas will one day be incorporated into the mainstream of software engineering tools.
I have been lucky to have had several people help me save time during my graduate studies. Adam Faeth, Ben Miller, Kevin Korslund, and Kang Gui have been helpful with assisting with implementing code for me – which allowed me to focus on the higher-level conceptual, mathematical, and algorithmic work. Kang Gui was also helpful in doing some calculations in Maple for me based on some math I derived. I thank them all for being my assistants.
I am currently working to write and revise my work for further publication. I am told that my vision of Online Software Maintenance was accepted in an RFP and I have helped prepare and revise several grant applications based on my work which I believe will eventually be accepted.
Click here to read a paper I have published about software evolution cost estimation.
Contact mePlease contact me about a position if you like what you see. If you are looking to hire - I would love to hear from you.
I am especially interested in finding a faculty position at a university where I would have the chance to work with Ph.D. students. I am very interested in building a doctoral program in Software Engineering that spans from the theoretical side of software engineering, including the philosophy behind all the stages of software engineering, to the reification of the theoretical side via advanced research tools for software engineering and tools for software engineering research, to the practical side including software engineering project management and tools used in practice.
I am also interested in consulting and am open to a position in private industry too.