Research
I am a member of the Sable Research Group for compiler and computer language work, and GR@M for computer games research.
Main research areas include:
- Modern computer games. Current computer games are still woefully under-analyzed.
- Compilers and Languages. I have particular interests in program optimization, as well as in performance and languages used in web development.
- Concurrency. Both in terms of compilation/performance issues, and theoretical/linguistic models.
Links
Note: I'm not updating this list anymore; for my most recent publications please see the McGill Computer Science website, the Sable site, and the GR@M site.
- Nick Rudzicz and Clark Verbrugge. "An iterated subdivision algorithm for procedural road plan generation" Game-On NA. August 2008.
- Dayong Gu and Clark Verbrugge.
"Phase-Based Adaptive Recompilation in a JVM."
CGO'08. April 2008.
- Gregory B. Prokopski and Clark Verbrugge.
"Compiler-guaranteed Safety in Code-copying Virtual Machines."
CC'08. April 2008.
- Richard Halpert, Christopher J.F. Pickett, and Clark Verbrugge.
"Component-Based Lock Allocation."
PACT'07. September 2007.
- Gregory B. Prokopski and Clark Verbrugge. "Towards GCC as a compiler for multiple VMs."
GCC Developers' Summit. July 2007.
- Haiying Xu, Christopher J.F. Pickett, and Clark Verbrugge.
"Dynamic Purity Analysis for Java Programs."
PASTE'07. June 2007.
- Jean-Sébastien Boulanger and Jörg Kienzle and Clark Verbrugge.
"Comparing Interest Management Algorithms for Massively Multiplayer Games."
in NetGames 2006. October 2006.
- Marc Lanctot and Nicolas Ng Man Sun and Clark Verbrugge. "Path-finding for Large Scale Multiplayer Computer Games." GameOn-NA 2006. September 2006.
- Marc Lanctot and Nicolas Ng Man Sun and Clark Verbrugge. "Path-finding for Large Scale Multiplayer Computer Games." GRAM Technical Report 2006-2. July 2006.
- Félix Martineau and Clark Verbrugge. "Compiling and Optimizing A High Level Game Language." GRAM Technical Report 2006-1. June 2006.
- Sokhom Pheng and Clark Verbrugge.
"Dynamic Data Structure Analysis for Java Programs." in the 14th IEEE International Conference on Program Comprehension (ICPC 2006). Athens, Greece.
- Dayong Gu and Clark Verbrugge and Etienne Gagnon.
"Relative Factors in Performance Analysis of Java Virtual Machines." in the Second International Conference on Virtual Execution Environments (VEE 2006). Ottawa, Canada.
- Dayong Gu and Clark Verbrugge. "A Survey of Phase Analysis: Techniques, Evaluation and Applications."
Sable Technical Report 2006-1. March 2006.
- Dayong Gu and Clark Verbrugge and Etienne Gagnon. "Assessing the Impact of Optimization in Java Virtual Machines."
Sable Technical Report 2005-4. November 2005.
- Sokhom Pheng and Clark Verbrugge.
Dynamic Shape and Data Structure Analysis in Java.
Sable Technical Report 2005-3. October 2005.
- Christopher J.F. Pickett and Clark Verbrugge.
"Software Thread Level Speculation for the Java Language and Virtual Machine Environment."
in Proceedings of the 18th International Workshop on Languages and Compilers for Parallel Computing
(LCPC'05). October 2005.
- Christopher J.F. Pickett and Clark Verbrugge. "SableSpMT: A Software Framework for Analysing Speculative Multithreading in Java." in Proceedings of the 6th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE'05). September 2005.
- Christopher J.F. Pickett, Clark Verbrugge, and Félix Martineau. "(P)NFG: A Language and Runtime System for Structured Computer Narratives." in GameOn-NA 2005. August 2005.
- Paul Brebner, Emmanuel Cecchet, Julie Marguerite, Petr Tuma,
Octavian Ciuhandu, Bruno Dufour, Lieven Eeckhout, Stéephane Fréenot,
Arvind S. Krishna, John Murphy, Clark Verbrugge.
"Middleware Benchmarking: Approaches, Results, Experiences."
in Concurrency and Computation: Practice and Experience.
17: 1799-1805. June, 2005.
- Christopher J.F. Pickett and Clark Verbrugge. "Speculative Multithreading in a Java Virtual Machine." Sable Technical Report 2005-1. March 2005.
- Marc Lanctot and Clark Verbrugge. "Locally-Adaptive Virtual Environments in Persistent State Multiplayer Games." in GameOn: 5th International Conference on Intelligent Games and Simulations. December 2004.
- Sam B. Sanjabi and Clark Verbrugge. "An Algorithmic Approach for Precise Analysis of the pi-Calculus."
Sable Technical Report 2004-7. 2004.
- Christopher J.F. Pickett and Clark Verbrugge. "Compiler Analyses for Improved Return Value Prediction." Sable Technical Report 2004-6. October 2004.
- Dayong Gu and Clark Verbrugge and Etienne Gagnon. "Code Layout as a Source of Noise in JVM Performance." in The 2nd Workshop on Component And Middleware Performance. October 2004. Final version to appear in Studia Informatica Universalis.
- Christopher J.F. Pickett and Clark Verbrugge. "Return Value Prediction in a Java Virtual Machine." in VPW2. October 2004.
- Lin Li and Clark Verbrugge. "A Practical MHP Information Analysis for Concurrent Java Programs." in LCPC'04. September 2004.
- Lin Li and Clark Verbrugge. "A Practical MHP Information Analysis for Concurrent Java Programs." Sable Technical Report 2004-3. June 2004.
- Bruno Dufour, Christopher Goard, Laurie Hendren,
Oege de Moor, Ganesh Sittampalam and Clark Verbrugge. "Measuring the Dynamic Behaviour of AspectJ Programs." in OOPSLA'04. October 2004.
- Bruno Dufour, Christopher Goard, Laurie Hendren,
Oege de Moor, Ganesh Sittampalam and Clark Verbrugge. "Measuring the Dynamic Behaviour of AspectJ Programs." Sable Technical Report 2004-2. March 2004.
- Sam B. Sanjabi and Clark Verbrugge. "Precise, Partially Compositional Analysis of the Π-Calculus."
Sable Technical Report 2004-1. 2004.
- Bruno Dufour, Christopher Goard, Laurie Hendren and Clark Verbrugge,
Oege de Moor, and Ganesh Sittampalam. "Measuring the Dynamic Behaviour of AspectJ Programs." Sable Technical Report 2003-8. December 2003. nb: Superseded by 2004-2.
- Bruno Dufour and Clark Verbrugge. "Dynamic Metrics in Action" (Slides) . Dagstuhl Seminar 03491 "Understanding Program Dynamics". December 2003.
- Bruno Dufour, Laurie Hendren, and Clark Verbrugge. "Problems in Objectively Quantifying Benchmarks using Dynamic Metrics" . Workshop on Middleware Benchmarking: Approaches, Results, Experiences. at OOPSLA'03. October 2003.
- Bruno Dufour, Laurie Hendren, and Clark Verbrugge. "Problems in Objectively Quantifying Benchmarks using Dynamic Metrics" . Sable Technical Report 2003-6. October 2003.
- Sam B. Sanjabi and Clark Verbrugge. "Points-To Inspired Control Flow Analysis for the Pi-calculus."
Sable Technical Report 2003-1. August 2003.
- Bruno Dufour, Laurie Hendren, and Clark Verbrugge. "*J: A Tool for Dynamic Analysis of Java Programs." Poster. in Addendum to OOPSLA'03. October 2003.
- Bruno Dufour, Karel Driesen, Laurie Hendren, and Clark Verbrugge. "Dynamic Metrics for Java." in OOPSLA'03. October 2003.
- Bruno Dufour, Karel Driesen, Laurie Hendren, and Clark Verbrugge. "Dynamic Metrics for Java."
Sable Technical Report 2003-1. March 2003.
- Qin Wang, Wei Wang, Rhodes Brown, Karel Driesen, Bruno Dufour, Laurie Hendren, and Clark Verbrugge. "EVolve: An Open Extensible Software Visualization Framework." in SoftVis'03: Proceedings of the ACM 2003 Symposium on Software Visualization. pp. 37-46. San Diego, California, USA. June 2003.
- Qin Wang, Wei Wang, Rhodes Brown, Karel Driesen, Bruno Dufour, Laurie Hendren, and Clark Verbrugge. "EVolve: An Open Extensible Software Visualization Framework."
Sable Technical Report 2002-12. December 2002.
- Bruno Dufour, Karel Driesen, Laurie Hendren, and Clark Verbrugge. "Dynamic Metrics for Compiler Developers."
Sable Technical Report 2002-11. November 2002.
- Clark Verbrugge. "A Structure for Modern Computer Narratives.". in CG'2002: International Conference on Computers and Games. LNCS 2883. pp. 308-325. July 2002 (nb: publish date is 2003).
- Rhodes Brown, Karel Driesen, David Eng, Laurie Hendren, John Jorgensen, Clark Verbrugge, and Qin Wang. "STEP: A Framework for the Efficient Encoding of General Trace Data." in PASTE'02: Proceedings of the 2002 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering. pp. 27-34. Charleston, South Carolina, USA. November 2002.
- Rhodes Brown, Karel Driesen, David Eng, Laurie Hendren, John Jorgensen, Clark Verbrugge, and Qin Wang. "STEP: A Framework for the Efficient Encoding of General Trace Data."
Sable Technical Report 2002-7. June 2002.
- Qin Wang, Rhodes Brown, Karel Driesen, Laurie Hendren, and Clark Verbrugge. "EVolve: An Extensible Software Visualization Framework."
Sable Technical Report 2002-6. July 2002.
- Clark Verbrugge. "Fast Local List Scheduling."
Sable Technical Report 2002-5. July 2002.
- Feng Qian, Laurie Hendren, Clark Verbrugge. "A Comprehensive
Approach to Array Bounds Check Elimination for Java." in CC'02: International Conference on Compiler Construction.
LNCS 2304. pp. 325-341. April 2002.
- Rhodes Brown, John Jorgensen, Qin Wang, Laurie Hendren, Karel Driesen, and Clark Verbrugge. "STOOP: The Sable Toolkit for Object-Oriented Profiling." Poster. in Addendum to OOPSLA'01. October 2001.
- Rhodes Brown, Karel Driesen, David Eng, Laurie Hendren, John Jorgensen, Clark Verbrugge, and Qin Wang. "STOOP: The Sable Toolkit for Object-Oriented Profiling."
Sable Technical Report 2001-2. November 2001.
- Patrice Pominville, Feng Qian, Raja Vallée-Rai, Laurie Hendren,
Clark Verbrugge. "A Framework for Optimizing Java Using Attributes."
in CC'01: International Conference on Compiler Construction.
LNCS 2027. pp. 334-354. April 2001.
- Feng Qian, Laurie Hendren, Clark Verbrugge. "A Comprehensive
Approach to Array Bounds Check Elimination for Java." Sable Technical
Memo 2000-4, November 2000.
- Patrice Pominville, Feng Qian, Raja Vallée-Rai, Laurie Hendren,
Clark Verbrugge. "A Framework for Optimizing Java Using Attributes."
in CASCON2000. pp. 152-169. November 2000.
- Prakash Panangaden, Clark Verbrugge.
"Generating Irregular
Partitionable Data Structures"
in Theoretical Computer Science 238(1-2). pp. 31-80. May 2000. Here's a link to the
Elsevier version,
which has access restrictions, or here's my version
- Clark Verbrugge, Phong Co, Laurie Hendren.
"Generalized
Constant Propagation: A Study in C."
in LNCS 1060, 6th International Conference on Compiler Construction (CC'96). 1996.
- Prakash Panangaden, Clark Verbrugge.
"Generating Irregular
Partitionable Data Structures"
ACAPS Technical Memo 100. McGill University. 1996.
- Clark Verbrugge, Prakash Panangaden, Riccardo Pucella.
"Locally-Adaptive Grid Generation Using Quadtrees."
SOCS TR-95.3. McGill University. 1995.
- Laurie J. Hendren, Maryam Emami, Rakesh Ghiya, Clark Verbrugge.
"A Practical Context-Sensitive Interprocedural Analysis Framework for C Compilers."
ACAPS Technical Memo 72. McGill University. 1993.
- Godfried Toussaint, Clark Verbrugge, Caoan Wang, Binhai Zhu.
"Tetrahedralization of Simple and Non-Simple Polyhedra."
in Proceedings of the Fifth Canadian Conference on Computational
Geometry. Waterloo, Ontario: University of Waterloo, August 1993.
Ph.D. Thesis
Yes, my entire thesis is available on-line. It's all one big
postscript file (500K gzip),
so you can view it or if you have the space and the paper you can print it out.
You can also just have a look at the (text)
abstract (or en français, my
résumé).
Please see the GR@M page for current activity. Information below is archival.
I've finally aggregated and cleaned up some bookmarks on research into modern computer games.
I've also written an introductory article on the representation and use of hexagonal grids
in games programming. This includes descriptions of a distance metric on hexagonal
grids, a line of sight algorithm, and
mapping to and from arrays. I have a
text version here,
but it is also generously maintained in
html form by
Amit Patel. Recently (on a geological scale), to test some new ideas I wrote a Java Applet illustrating how to
calculate Field of View (what is "visible" from a given point) on a hexagonal
grid. You can play with the
applet or download the
Java source code in info-zip format.
This is ancient/archival information. You don't really need to read this anymore.
Coffi
I've written a bytecode parser for the Java language
called Coffi. It's freely available to use and modify
(under the GNU Public License),
and it not only parses .class files and represents the bytecode symbolically, but
also constructs the corresponding Control Flow Graph. The symbolic bytecode for any particular
method or the CFG can also be printed to the screen.
Coffi
doesn't do much by itself, but it is suitable as a basis for programs
that modify bytecode and it does not carry the onerous
license restrictions
associated with Sun's products. It is currently being used in the context of a course
on compiler optimizations here at McGill.
The Coffi source
code is freely available (in info-zip format). Installation is quite easy,
but please note that the included Makefile is intended for Un*x platforms only.
Documentation is not extensive, but I
have written a short
article on its basic structure, installation and usage.
Update: The version of Coffi available here is no longer maintained. Coffi is now
part of Soot.