2 Ryan Street
Northcote, Victoria 3070
+61 3 9482-1765
Born 6 October 1958, Boston, USA. US and Australian (dual) Citizen.
Doctor of Philosophy, Computer Science, the University of Melbourne,
Victoria, Australia, 1999.
Thesis title: Precise and Efficient Static Analysis of Logic
Master of Science, Computer Science, Syracuse University,
Syracuse, NY, USA, 1982
Bachelor of Science, Computer Science, Syracuse
University, Syracuse, NY, USA, 1980
Program Analysis, Programming Language Implementation,
Logic Programming, Functional Programming, Object Oriented
Implementation of Boolean Constraint Solvers,
Declarative Software Engineering,
and Programming Environments
I have programmed in C, C++, Java, Prolog, Mercury, Lisp, Perl,
FORTRAN, Bourne shell, awk, sed, PL/I, Pascal, APL, Basic, and
have a passing knowledge of ML, Haskell/Miranda/Gofer, and COBOL.
I have worked on PC, Sun, DEC Alpha, SGI Iris, Apollo, IBM
mainframe, Xerox, DEC VAX, and Amiga computers, using various
version of GNU/Linux, Unix, Windows NT, VMS, VM/CMS, Xerox Lisp,
and Amiga OS.
I have done graphics and GUI programming for the X Window
System using Xlib,
Xt (the X Toolkit), and OSF Motif, for the Java platform in
Java, for Xerox workstations in
Lisp, and for the Amiga in C.
I have used the CVS, RCS, and SCCS source
control systems, and have used the LaTeX, Scribe,
Framemaker, and Star document preparation systems, and have
written HTML documents (and have written several scripts to
Lecturer, January 1999 - Present
Department of Computer Science
and Software Engineering, The University of Melbourne,
- Teaching software engineering and programming in C++ and Java at
second and third
year level to classes of around 150-300 students, and principles of
programming languages to postgraduates. This includes developing one
new subject and completely redeveloping another, preparing
lecture materials, presenting lectures, setting and marking projects
and exams, and collaborating with staff tutors in preparing and
presenting tutorials and lab exercises.
- Supervised two summer students in
developing an XML-based automated quizzing system which presents students with
questions, accepts and marks their answers, and gives them feedback on what
material they are having difficulty with. Used this system
in the second year software design subject I teach.
Automated quizzes provide students early feedback on their progress in
the subject, and provide the lecturer insight into difficulties
students are having, with little demand on staff (once the quizzes are
- Supervising two honours students in their research projects.
- Coordinating the department's seminar series.
- Carrying on research in program analysis, programming language
implementation, and Boolean constraint solvers. See sections on
publications and grants below.
- Consulting for the Swedish Institute of Computer Science.
PhD Student, July 1993 - December 1998
Department of Computer Science,
The University of Melbourne, Victoria, Australia.
Senior Research Assistant, February 1997 - January
Department of Computer Science, The University of Melbourne,
Participated in a research project to design and implement HAL, a new,
very efficient constraint logic programming language. The language
will compile to Mercury, using that language's compilation technology
to achieve high speed. I implemented the first HAL to Mercury
translator, extended the Mercury language to add controlled
support for impure programming constructs, and used this impurity
facility to implement both backtrackable and non-backtrackable
destructively modifiable references in Mercury.
Senior Software Engineer, October 1985 - July 1993
Corporation, Mountain View, California, USA (began as a Software Engineer).
Quintus, a small software development company, at that time
developed and marketed Quintus Prolog, one of the most popular
commercial Prolog systems. (From February through July 1992, when
Quintus was wholly owned by Intergraph corporation, I was
assigned to Dazix corporation, an electronic design automation
corporation, also a wholly owned subsidiary of Intergraph.)
- Designed, documented, and led the team responsible for
implementing the Motif-based Quintus Prolog source-linked
debugger. This debugger positions an arrow at the current
call in a window showing your Prolog source code, showing
variable binding, history, and call stack information in
auxilliary windows. This debugger, unlike the previous
debugger, works on compiled Prolog code, and does not require
the source code to be specially loaded in order to debug it.
- (While assigned to Dazix) designed and implemented code to
efficiently analyze an electronic printed circuit board layout
looking for places where two parallel traces run close enough
to each other for a long enough run to be subject to
electrical cross-talk. Also wrote code to generate a SPICE
input file from Dazix's proprietary file format.
- Designed and implemented an efficient object-oriented Prolog
extension, used as the foundation of all
user-interface components of Quintus Workpro. This system is
described in chapter 7 of Logic Programming: Formal
Methods and Practical Applications, edited by Christoph
Beierle and Lutz Plümer.
- Designed and led the team that implemented the Report Writer
component of Quintus Workpro, a Motif-based, client-server oriented
information management system. The Report Writer is a
flexible graphical tool which allows naive users to
design, save, and run complex reports, including calculations
and aggregations, all using an intuitive point-and-click interface.
- Designed and led the team responsible for implementing and
documenting ProXL, the Quintus Prolog low-level X Window
System interface. ProXL supports nearly all of the
functionality of the X Window System directly from Prolog.
- Designed and implemented a package that gives Prolog programs
direct, efficient access to C data structures.
Member of Technical Staff, September 1984 - October 1985
ITT Advanced Technology Center, Shelton, Connecticut, USA.
- Designed an object-oriented ``Finder/Explainer,'' a tool to
assist programmers in searching an object-oriented class hierarchy
for a class that will fit their need by explaining to them
what the class is for and how it works. The tool uses
animation to demonstrate these things to the programmer. The
implementor of each class only needs to show the tool how
to display the state of the object and specify several usage
examples of the class as ``lessons'' to show the user of the
class what it does and how it works.
- Participated in the scripting and production of a videotape
presentation and dramatization of the ideas behind
knowledge-based object-oriented reusability tools, in
particular the ``Finder/Explainer.'' Also co-produced the
software that demonstrated the planned abilities of the
reusability software system.
- Wrote SQL
database code to support defect tracking for the development
of ITT's newest generation of central office Electronic
Assoc. Member Professional Staff, October 1982 - September 1984
Schlumberger-Doll Research, Ridgefield, Connecticut, USA.
- Implemented most of the functionality of an Evans and
Sutherland vector graphics display processor on a raster
display Artificial Intelligence workstation.
- Implemented a few object-oriented graphical classes for displaying
graphs and charts.
19 September - 12 October 1995: Guest lecturer for ``optimization''
part of 3rd year programming language implementation class based on
Principles, Techniques, and Tools by Aho, Sethi, and Ullman.
2000: Z. Somogyi, H. Søndergaard, P. Schachte. Making high-level
programming practical. Australian Research Council small grant.
2001-2003: H. Søndergaard, P. Schachte, P. Stuckey, M. Sultzmann.
Constraint-Based Program Analysis.
Australian Research Council large grant.
2001: P. Schachte, M. Sultzmann. Security Analysis for Java.
Melbourne Research Development Grants Scheme Early Career Researcher
Program (application submitted).
Awards and Scholarships
January 1995 - July 1998: Australian Postgraduate Award Scholarship
July 1993 - December 1994: Melbourne University Postgraduate Scholarship
May 1980: cum laude graduate of Syracuse University
Referee for: ACM Transactions on Programming Languages and Systems,
Journal of Logic Programming, and Information Processing
Precise goal-independent abstract interpretation of constraint logic
In Colin Fidge, editor, Computing: The Australasian Theory
Symposium (CATS 2001), number 42 in Electronic Notes in Theoretical Computer
Science. Elsevier Science B. V., 2001.
Roberto Bagnara and Peter Schachte.
Factorizing equivalent variable pairs in ROBDD-based
implementations of Pos.
In A. M. Haeberer, editor, Proceedings of the ``Seventh
International Conference on Algebraic Methodology and Software Technology
(AMAST'98)'', volume 1548 of Lecture Notes in Computer Science, pages
471-485, Amazonia, Brazil, 1999. Springer, Berlin.
Tania Armstrong, Kim Marriott, Peter Schachte, and Harald Søndergaard.
Two classes of Boolean functions for dependency analysis.
Science of Computer Programming, 31(1):3-45, May 1998.
Global variables in logic programming.
In Lee Naish, editor, Logic Programming: Proceedings of the
Fourteenth International Conference on Logic Programming., pages 3-17,
Cambridge, USA, July 1997. MIT Press.
Efficient ROBDD operations for program analysis.
In Kotagiri Ramamohanarao, editor, ACSC'96: Proceedings of the
19 Australasian Computer Science Conference, pages 347-356.
Australian Computer Science Communications, 1996.
Peter Schachte and Georges Saab.
Efficient object-oriented programming in Prolog.
In Christoph Beierle and Lutz Plümer, editors, Logic
Programming: Formal Methods and Practical Applications, number 11 in Studies
in Computer Science and Artificial Intelligence, chapter 7, pages 205-243.
Elsevier Science B.V./North-Holland, Amsterdam, 1995.
Available upon request.
Thu Nov 2 12:39:46 EST 2000