Computer Engineering Justin Gottschlich  
CU-Boulder's Home Page Department of Electrical and
Computer Engineering
425 UCB
Engineering Center
University of Colorado
Boulder, CO 80309
Raytheon Company
Building S75
16800 E. Centretech Drive
Aurora, CO 80011
Email: justin AT nodeka DOT com

Graduate Standing

I am a PhD graduate student in computer engineering at CU-Boulder. I am a member of the Draco Architecture Research Group and work under the guidance of Professor Dan Connors. My primary interest is centered around parallel computing, in particular, transactional memory. Additionally, I am interested in: programming languages, dynamic compilation environments, machine learning and program analysis.

Current Research

Transactional Memory

I am currently researching transactional memory, a new parallel programming concept which makes parallel programming easier. Transactional memory shows great promise as a new parallel programming model to help simplify the complexities of concurrent programming. I have built a software transactional memory (STM) system called the Draco software transactional memory (DracoSTM) library. DracoSTM is written in C++98, as well as using some advanced C++0x/C++1x features, and can be found here.

Publications:

Optimizing Consistency Checking for Memory-Intensive Transactions
Justin E. Gottschlich and Daniel A. Connors
[To Appear in the Proceedings of the ACM SIGACT-SIGOPS Symposium on Principles of Distributed Computing (PODC) (brief announcement), August 2008]

C++ Move Semantics for Exception Safety and Optimization in Software Transactional Memory Libraries
Justin E. Gottschlich, Jeremy G. Siek and Daniel A. Connors
[To Appear in the Proceedings of the Third International Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), July 2008]

Extending Contention Managers for User-Defined Priority Based Transactions
Justin E. Gottschlich and Daniel A. Connors
[Proceedings of the ACM Workshop on Exploiting Parallelism with Transactional Memory and other Hardware Assisted Methods (EPHAM), April 2008]

Exploration of Lock-Based Software Transactional Memory
Justin E. Gottschlich
[M.S. Thesis, Department of Electrical and Computer Engineering, University of Colorado-Boulder, October 2007]

DracoSTM: A Practical C++ Approach to Software Transactional Memory
Justin E. Gottschlich and Daniel A. Connors
[Proceedings of the ACM SIGPLAN Symposium on Library-Centric Software Design (LCSD), October 2007]


Other interests I have in the area of parallel computing are: automatic code parallelization, parallel algorithms and parallel programming languages.

Other Research Interests

Dynamic Analysis

Optimization, correctness evaluation and software security rely on program analysis. Two high level types of program analysis exist: static analysis, which is performed at compile/build time and dynamic analysis, which is performed at runtime or pre-runtime.

The future of software analysis seems to lie in runtime analysis which varies greatly depending on the level of bytecode being analyzed (Microsoft's CIL, Sun's Java bytecode or generalized disassembled machine code). Currently, there are a number of analysis techniques emerging from runtime environments, such as, low level IR alias analysis, platform specific IR analysis and code slicing.

Machine Learning

Machine learning and dynamic compilation seem to go hand-in-hand. Dynamic compilation attempts to identify certain behaviors of applications while they are running in order to perform a variety of tasks. Through intelligent machine learning algorithms, we can make more correct conclusions about runtime behavior, faster. While machine learning concepts have been around for decades, some of the more advanced learning algorithms (learning bayesian networks) are still in their infancy and hold much potential for growth in the next several years.

I recently built an integrated database machine learner using Oracle's Java Machine Learning Interfaces. This machine learner takes historical data for any problem domain and then builds a bayesian network or support vector machine after performing Oracle's attribute importance for the traits of the given problem. Once the machine learned algorithm is built it can then be applied to real-time data and returns fairly accurate percentage probabilities for the occurance of the anomaly.

General Interests

I am generally interested in scientific programming languages, algorithms, parallel computing and compilers (static or dynamic).

Background

When I'm not doing graduate school work, I run marathons, am a software engineer at Raytheon Company in Aurora, Colorado, and run a software online gaming company, Nodeka, LLC.

I received my BS in computer science at Colorado State University, my MS in electrical and computer engineering at University of Colorado-Boulder and am currently working towards my PhD in electrical and computer engineering. My dogs Max and Chase also have jobs, lounging around and doing battle, which they take very seriously.