jlk picture         JEFFREY KORN
jlk@cs.princeton.edu

 
Info
Research
Resume
Schedule
Finger
       
[Interests | Publications | Projects]

Research Statement (PDF)
Teaching Statement (PDF)
Slides to job talk: PDF, Powerpoint


RESEARCH INTERESTS

My research interests are in software visualization: debuggers, programming language systems, development tools, distributed software development, human-computer interaction, compilers.


PUBLICATIONS

    J. Korn, R. Chen, E. Koutsofios, Chava: Reverse Engineering and Tracking of Java Applets, Working Conference on Reverse Engineering, October, 1999, to appear. Postscript

    J. Korn, A. Appel, Traversal-based Visualization of Data Structures, IEEE Information Visualization '98, October, 1998, 11-18. Pdf, Postscript.

    D. Wang, A. Appel, J. Korn, C Serra, The Zephyr Abstract Syntax Description Language, Proceedings of the 1997 Conference on Domain-Specific Languages, Santa Barbara, CA, Oct. 1997, 213-227. Postscript.

    J. L. Korn and D. R. Hanson. A Simple and Extensible Graphical Debugger, Proceedings of the Winter USENIX Technical Conference, Anaheim, CA, Jan. 1997, 173-184. Pdf, Postscript.

    J. L. Korn. Tksh: A Tcl Library for KornShell, Fourth Annual Tcl/Tk Workshop, Monetery, CA, July 1996, 149-159. PostScript (132028 bytes).


    D. G. Korn, C. J. Northrup and J. L. Korn. The New Korn Shell, The Linux Journal #27, (July 1996), 30-37. Html.

    J. Korn. Data Compression Techniques, Brown University Senior Thesis, Providence, RI, December, 1993.

    J. Korn. A Database File System for Plan 9, AT&T Bell Laboratories Technical Memorandum, August, 1991.


RESEARCH PROJECTS

TRAVIS

    Algorithm animation systems and graphical debuggers perform the task of translating program state into visual representations. While algorithm animations typically rely on user augmented source code to produce visualizations, debuggers make use of symbolic information in the target program. As a result, visualizations produced by debuggers often lack important semantic content, making them inferior to algorithm animation systems. This research introduces a method to provide higher-level, more informative visualizations in a debugger using a technique called traversal-based visualization. The debugger traverses a data structure using a set of user-supplied patterns to identify parts of the data structure to be drawn a similar way. A declarative language is used to specify the patterns and the actions to take when the patterns are encountered. Alternatively, the user can construct traversal specifications through a graphical user interface to the declarative language. Furthermore, the debugger supports modification of data. Changes made to the on-screen representation are reflected in the underlying data.

DEET (work with David Hanson)

    Deet (Desktop Error Elimination Tool) is a simple but powerful debugger for C and Java. It differs from conventional debuggers in that it is machine-independent, graphical, programmable, distributed, extensible, and small. Low-level operations are performed by communicating with a "nub," which is a small set of machine-dependent functions that are embedded in the target program at compile-time, or are implemented on top of existing debuggers. Deet has a set of commands that communicate with the target's nub. The target and deet communicate by passing messages through a pipe or socket, so they can be on different machines. deet is implemented in Tksh, an extension of the KornShell that provides the graphical facilities of Tcl/Tk. Users can browse source files, set breakpoints, watch variables, and examine data structures by pointing and clicking. Additional facilities, like conditional breakpoints, can be written in either Tcl or the shell. Most debuggers are large and complicated, deet is less than 3,000 lines of code plus a few hundred lines of machine-specific nub code. It is thus easy to understand, modify, and extend. We have implemented nubs for Java and C. Deet is publicly available, and to date there have been several thousand downloads of the software.

CHAVA (work with Robin Chen and Eleftherios Koutsofios)

    Java applets have been used increasingly on web sites to perform client-side processing and provide dynamic content. While many web site analysis tools are available, their focus has been on static HTML content and most ignore applet code completely. Chava is a system that analyzes and tracks changes in Java applets. The tool extracts information from applet code about classes, methods, fields and their relationships into a relational database. A suite of programs queries the database to display structural information about the application. Other tools built on top of the database perform advanced tasks such as reachability and clustering analysis, and can graphically display query and analysis results. Databases contain supplementary checksum information which is used detect changes in two versions of a Java applet. Our tool is able to generate a database using only the compiled class files, making it possible to analyze remote applets whose source code is unavailable. Chava is publicly available for download from AT&T Labs Research.

TKSH

    Tksh is a graphical language (similar to Visual Basic or Tcl/Tk) that uses KornShell (ksh93) for scripting and Tk for graphical user interface. Tksh is implemented as a ksh93 extension, and allows Tcl libraries such as Tk to run on top of ksh93 unchanged. ksh93 is well suited for graphical scripting because it is backward compatible with sh, making it both easy to learn and easy to extend existing scripts to provide user interface. Tksh also allows Tcl scripts to run without modification, making it possible to mix and match components written in either Tcl or ksh93.

COMPILER INFRASTRUCTURE (work with Dan Wang and Andrew Appel)

    The National Compiler Infrastructure project aims to develop a common compiler platform to support the collaboration of compiler researchers and to facilitate the transfer of technology. I have worked on tools for the abstract syntax definition language (ASDL). Specifically, I have authored a graphical browser-editor of ASDL structures. The browser-editor is able to display structures as hierarchical lists or as graphical trees. By allowing the selection of colors, fonts, etc., the user can specify how each kind of node is drawn. Trees can be edited using standard cut and paste operations or by creating/modifying nodes.


12/03/08