next up previous
Next: Educational activities Up: Curriculum vitae Previous: Education and Employment

OVERVIEW OF PROFESSIONAL ACTIVITIES

Research and teaching

Western Ontario:
Full time computer science faculty member from 1962. Learned computer science by teaching courses never taught there before (in the absence of textbooks!), and designing and implementing an ALGOL 60 compiler. Research work in automata, logic and formal languages.

Penn State:
Curriculum development and departmental matters, directed many masters' students (mostly in software areas) and several Ph.D. students. Characterizing spectra in time-bounded Turing machine terms (solving a longstanding open program in mathematical logic), invented logspace reducibility and used it to formulate complete problems for NSPACE(log n).

Kansas:
Continued complexity work including the discovery of problems complete for PTIME, and established complexity of many problems in NSPACE(log n) and PTIME, particularly concerning program analysis and Petri nets. Shifted attention back to programming languages in 1974, especially program flow analysis. Fruitful collaboration with Steven Muchnick, an NSF grant for research on optimizating binding times in a program's execution by means of program flow analysis.

Aarhus:
Organized in 1980 workshop on Semantics-Directed Compiler Generation, Springer-Verlag proceedings, smaller workshop in Program Flow Analysis 1981. Papers on complexity and pattern matching, taught analysis of algorithms, and learned mathematical semantics. Research during second visit on attribute grammars, generation of compilers from denotational definitions of programming languages, and flow analysis of applicative languages.

Copenhagen:
Wrote one book on compiler generation using partial evaluation; another book on complexity and computability; and edited several proceedings and article collections. Organized several workshops and conferences, including the very large Federated Logic Conference 2002 FLoC'02. Taught both advanced courses and a very large undergraduate course.

Papers on model checking in relation to program transformation, program termination analysis, partial evaluation, complexity theory, semantics of Prolog, abstract interpretation of higher-order functional programs and Prolog, semantics-directed compiler generation, automata to detect structure in polyhedra.

Programming

Southern Illinois:
I programmed my way through undergraduate school, writing many applications and service programs for the IBM 650 and 1620. I wrote a subroutine package for elementary functions (on average five times as fast as IBM-supplied routines).

Western Ontario:
I wrote a compiler for ALGOL 60 (1962-65), and designed a fast student Cobol compiler, system to teach assembly languages. These systems were all used several years for teaching at Western Ontario.

Penn State:
I wrote system to teach IBM 360 assembly language, numerous student projects in compiling for courses and masters projects, including extensions to the ALGOL-W and XPL-compilers, a LISP compiler, and a transition matrix system.

Kansas:
I designed a pedagogical language to teach binding time concepts; a microprogrammed transition matrix processor; a structured assembly language and processor; and a language and compiler for Hoare's recursive data structures (all implemented by master's students).

Aarhus:
I developed a first version of the semantics-directed compiler generator CERES in Prolog, and a second in Lisp.

Copenhagen:
A much improved new version of CERES (with Mads Tofte), and used it for a semantics-based implementation of Prolog. Constructed the first nontrivial self-applicable partial evaluator (an open problem since 1971), for first-order Lisp. This has since led to much further activity in partial evaluation, both world-wide and at DIKU. Implemented (with students) some highly general theoretical constructions: 2DPDA (2-way pushdown automata), Kleene's Recursion Theorem, Levin's Search Theorem.



Neil D. Jones
February 22, 2008