Paul Werbicki's Research

I completed my Masters of Computer Science at the University of Calgary in 2006.

This page is a summary of the work I did during that period. My Thesis was in the area of language interoperability.

Important Note: The links may or may not work. I have preserved the links as they were when I completed my studies. If the links work then the content is still live, otherwise it is not available anymore.



The Masters Thesis work I am performing is in the area of C++/Java integration.

When Microsoft developed their Java Virtual Machine, before the Sun Microsystems lawsuits, they introduced a Windows specific feature into the JVM called COM Callable Wrappers (CCW). This feature allowed Java Objects to be wrapped by a COM object and called from other languages like C++ and Visual Basic.

Microsoft was one of the earliest to ease the integration of Java with other programming languages. Since then many other products have surfaced that allow interoperability between Java and other languages. My thesis will investigate the various methods available and provide an implementation similar to Microsoft's original approach, but independent of the JVM.

  "Developing Applications with Multiple Programming Languages - an Investigation using C++ and Java" [PDF] [Double-sided PDF] [Power-point]

  • Masters Thesis Progress
    • Second Draft
      • Thesis - Second Draft [Zip]
    • First Draft
      • Thesis - First Draft [Zip]
    • Relevant Work


Important Note: My original Thesis Proposal was on Agent Vision in 3D Virtual Environments that I believe to be an important part of developing Believable Characters for the video game industry. The material turned out to be too ambitious for a Masters Thesis and I have switched to a more straightforward topic.

My hope is to work on the original proposal as a PhD Thesis some day. The original Thesis Proposal is available for anyone interested in reading it:

  • Synthetic Agent Vision in Complex 3D Environments [Word]


Simple Template Library
The Simple Template Library (STL) is a collection of C++ template classes that represent abstract data types such as a vectors, sets, stacks, linked list, trees, etc. The idea behind these templates are that they are very simple to use and extend while still providing a fairly powerful set of functionality on par with the Standard Template Library.
[Source Code - Zip]


Regex++ - A portable template regular expression library
Written by Dr. John Maddock, regex++ is the most comprehensive regular expression library written for C++. It is available as a seperate library (this is how I use it, follow the Regex++ Homepage link below) or as part of the boost libraries (
Regex++ Homepage


Parse++ - A portable LR parsing library
This library was written to provide integrated LR parsing in C++ projects. It was designed for submission to the boost library project and is still currently a work in progress.
[Source Code - Zip]


JavaCOM - A Java/C++/COM interoperability library.
JavaCOM was designed to allow Java, C++ and COM-compatible programming languages to co-exist within the same process space. This library includes a COM object and Java library that facilitate Java calling COM and COM calling Java, as well as a proxy compiler that allows C++ to call Java. This work is the focus of my Master Thesis.
[Source Code - Zip]


SmartHome Powerlinc USB Component Object Model
This project comprises a COM object and source code examples for physically controlling devices within a person's home using the X10 protocol. The COM object simplifies controlling the Powerlinc USB Controller made by Smarthome.
This project also includes a CASA Agent that uses JavaCOM to access SmartHome devices.
[Source Code - Zip]
[Compiled Binaries - Windows Installer]


CASA Event Based Agent Add-In
These files provide a Java and Com interface for CASA agent that allows agents to be developed in Visual Basic 6, scripting languages and .NET languages.
[Source Code - Zip]


CASA Voice Recognition Light Control Agent
Written in Visual Basic, the Light Control agent uses the Microsoft Speech SDK 5.1 to control lights using voice commands with audio feedback.
[Source Code - Zip]


CASA Web-Based Device Console Agent
Written in C++, the Device Control agent uses a web-based interface to interact with devices controlled by CASA agents. It encapsulates the Web Browser control used by INternet Explorer and exposes functionality to web pages to allow them to send and recieve messages from CASA.
[Source Code - Zip]


Becerra, G., Werbicki, P. and Kremer, R. A Social Commitment-Based Agent-Controlled Constraint Environment. Submitted to the Fifth International Conference on autonomous Agents and Multiagent Systems (AAMAS'06), Hakodate, Japan, May 8-12, 2006.


Werbicki, P. and Kremer, R. Object-Oriented Programming across Native-Virtual Boundaries. Submitted to the First ACM/USENIX Conference on Virtual Execution Environments (Vee'05), Chicago, IL, USA, June 11-12, 2005.
[Word] [PDF]



CPSC 601.64 Advanced Intorduction to Computer Graphics (F05)

  • Important Links
  • Assignments
    • Simple Math Library - 3D math library required to build the assignments [Zip]
    • Assignment #1 - Tesselate a Sphere [Zip]
    • Assignment #2 - Ray Tracer [Zip]
    • Assignment #3 - Modeler [Word] [PDF] [Zip]

      Assignment #3 is a simple Modeler that uses the Ray Tracer developed in Assignment #2. The Modeler allows the user to view the images as wire-frame models rendered using OpenGL. The user is able to move the quaternion-based "Camera" using the keyboard and mouse to change the view of the objects and render images based on that view. This allows the modeler to interactively position the view of the image without incurring the overhead of rendering the image each time. The image is rendered interactively in real-time using the Ray Tracer from the previous assignment.

    • Project - Inverse Kinematics & B-Splines [Word] [PDF] [Zip]

      The final Project for this course investigated two interesting areas of Computer Graphics: Inverse Kinematics and B-Spline Curves. In the project Inverse Kinematics (IK) is used to control a robotic arm with 4 degrees of freedom (shown in blue). This arm follows a path defined by a B-Spline curve (shown in green). The IK implementation uses (Buss and Kim, 2005) which introduces a method called selectively damped least squares (SDLS) which adjust each singular vector's damping factor during the Jacobian singular value decomposition. This is based on the difficulty of reaching the target position.

      Samuel R. Buss and Jin-Su Kim. "Selectively Damped Least Squares for Inverse Kinematics." In Journal of Graphics Tools , vol. 10, no. 3 (2005) 37-49.

    CPSC 609 Multi Agent Systems (W05)

      CPSC 699 Research Methodology in Computer Science (F03)

      • Originally when I took this course my thesis proposal was about Agent Vision in 3D Virutal Environments. I have since changed by thesis proposal however I am hoping to continue this work as a PhD student sometime in the future.

      SENG 623 Software Quality Management (W03)

      SENG 621 Software Process Management (W03)

        SENG 613 S/W Life Cycle (Requirements Engineering II) (F02)

        SENG 611 Software Requirements (F02)

        SENG 609.23 Object Oriented Analysis and Design (W02)

        • Tutorial - Object Constraint Language [Word]
        • Project - Class Modelling Editor Design [Zip]

        SENG 609.24 Agile software processes (W02)

        • Presentation - The Unified Process, Agile Modeling and Feature-driven development [Power-point]
        • Project - Time Tacking System [Zip]