Biography
On January 2011 I began working for Google as a software engineer at the Madison office. Before that I was apost-doctoral associate in the Department of Computer Science at Purdue University working with Professor Suresh Jagannathan.
I completed my Ph.D. in Computer Science in August of 2009. I was advised by Professor Thomas Reps.
-
Static Verification of Data-Consistency Properties.
Check out the Weighted Pushdown Systems page.
Here is my CV (September, 2010).
Publications
Publications
Conference Publications
-
Verifying Information Flow Control over Unbounded ProcessesIn Proc. International Symposium on Formal Methods (FM), November 2009. [,(c) Springer-Verlag]
-
A Decision Procedure for Detecting Atomicity Violations for Communicating Processes with LocksIn Proc. SPIN Workshop on Model Checking of Software (SPIN), June 2009. [pdf,(c) Springer-Verlag]
-
Finding Concurrency-Related Bugs using Random IsolationIn Proc. Verification, Model Checking, and Abstract Interpretation (VMCAI), January 2009. [pdf,(c) Springer-Verlag]
-
Language Strength ReductionIn Proc. Static Analysis Symposium (SAS), July 2008. [pdf,(c) Springer-Verlag]
-
Interprocedural Analysis of Concurrent Programs Under a Context BoundIn Proc. Tools and Algorithms for the Construction and Analysis of Systems (TACAS), April 2008. [pdf,(c) Springer-Verlag]
-
Abstract Error ProjectionIn Proc. Static Analysis Symposium (SAS), August 2007. [pdf,(c) Springer-Verlag]
-
Verifying Concurrent Message-Passing C Programs with Recursive CallsIn Proc. Tools and Algorithms for the Construction and Analysis of Systems (TACAS), March 2006. [pdf,(c) Springer-Verlag]
-
Anomaly Detection as a Reputation System for Online AuctioningIn Proc. Computer and Communications Security (CCS), November 2005. [pdf]
-
String Analysis for x86 BinariesIn Proc. Program Analysis for Software Tools and Engineering (PASTE), September 2005. [pdf]
-
Model checking x86 executables with CodeSurfer/x86 and WPDS++In Proc. Computer Aided Verification (CAV), July 2005. [pdf,(c) Springer-Verlag]
Invited Papers
-
Program Analysis Using Weighted Pushdown SystemsIn Proc. Foundations of Software Technology and Theoretical Computer Science (FSTTCS), December 2007. [pdf,(c) Springer-Verlag]
Technical Reports
-
Static Verification of Data-Consistency PropertiesTechnical Report TR-1665 , Computer Sciences Dept., Univ. of Wisconsin, Nov., 2009. [pdf]
-
A Decision Procedure for Detecting Atomicity Violations for Communicating Processes with LocksTechnical Report TR-1649 , Computer Sciences Dept., Univ. of Wisconsin, Apr., 2009. [html]
-
Towards the Analysis of Transactional SoftwareTechnical Report TR-1624 , Computer Sciences Dept., Univ. of Wisconsin, Oct., 2007. [pdf]
-
Static Detection of Atomic-Set Serializability ViolationsTechnical Report TR-1623 , Computer Sciences Dept., Univ. of Wisconsin, Oct., 2007. [pdf]
-
Advance Queries for Property CheckingTechnical Report TR-1621 , Computer Sciences Dept., Univ. of Wisconsin, Oct., 2007. [pdf]
-
Interprocedural Analysis of Concurrent Programs under a Context BoundTechnical Report TR-1598 , Computer Sciences Dept., Univ. of Wisconsin, Jul., 2007. [pdf]
Software
C++
- WALi - a Weighted Pushdown System library that is used at the University of Wisconsin for program analysis. This is a rewrite if WPDS++ that removes the use of templates in favor of inheritance. WALi is used as the underlying WPDS implementation in the CPDS model checker. This model checker has been used to discover a bug in a model of a Windows NT Bluetooth driver.
- WPDS++ - a Weighted Pushdown System library that is used at the University of Wisconsin for program analysis. WPDS++ is used in the CodeSurfer/x86 system that is codeveloped at the University of Wisconsin and GrammaTech, Inc.
-
dot2html.ml - Simple OCaml script that translates a dot file into a
client-side image map, gif file, and html file.
ocaml str.cma dot2html file.dot
Python
- JobMonitor - a python class
that runs a shell command and reports the time, memory usage, and return code.
All of the code is pieced together from various places online (e.g.,
the python recipe);
however, I wanted something that was simple and aggregrated it all together.
- Shell Job :
(cmd,rcode,time,mem) = jobmonitor.RunJob('[[ shell command ]]') - Non-Shell :
(cmd,rcode,time,mem) = jobmonitor.RunJob([args,list],shell=False,timeout=XXX,stdout=o,stderr=e)
- Shell Job :