J. Craig Cleaveland
Freelance consulting, contracting, or teaching in the areas of Web applications, Java, XML, domain engineering, or financial planning applications.


Technical leadership; team player; creative and innovative; software developer extraordinaire, broad and deep technical expertise in Java, distributed internet applications and groupware, software architecture, specification-driven tools, application generators, software reuse, domain engineering, design and specification of languages, WWW publishing/programming, technology transfer, and education (both course development and delivery).

Whitebirch SoftwareCTO 2002-present Financial Planning Web Application
craigc.comSoftware Consultant 1998-present Internet applications, teaching, writing
Internet Games CorporationCTO 1996-1998 Internet multiplayer game and chat networks
Digial Equipment Corporation MTS1996 Research in Java technologies
AT&T Bell Laboratories DMTS1983-1995 Innovative software tools
University of Connecticut Asst. Professor1978-1982 Data abstractions and Language Specifications
University of California, Los Angeles Student1970-1978 Computer Science PhD
Publications Three Books and various papers
Miscellaneous Other activities and personal notes

CTO, 2002-present

I designed and developed an innovative financial planning and modeling application for creating comprehensive financial models and long-term forecasts that go beyond the scope of traditional spreadsheets and standard budgeting software. The software has received rave reviews from customers and press, including a Four Star rating from PC Magazine. The software is based on Java and DHTML and deployed as a web application or desktop. See

Consultant/Instructor, 1999-present

I've taught Java, XML, and Program Generation courses for both academia and industry. I've provided consulting and contracting services to numerous clients including Rare Medium, Cedarpoint Communications, Harmony Software, Progressive Solutions, Riverstone, TEST Inc., Caribbean Supplies, and Whitebirch Software.

Internet Games Corporation, CTO, 1996-1998

I designed and developed a complete internet based multiplayer game network, including the following features: This site was sold to go2net and can be seen at http://www.playsite.com or through the Lycos site.

Both server and client were written in Java. Experience included security issues (SSL, encryption, ecommerce), database issues, server monitoring and performance issues.

I also designed and developed related applications for real time auctions, shopping shows, and chat networks with customizable rooms. See http://LiveUniverse.com and http://LiveMarket.com.

Digital Equipment Corporation, Member of Technical Staff, 1996

I spent about 11 months at Digital researching Java technologies. I investigated different techniques for building distributed groupware applications, including RMI, CORBA, and tuple-spaces. I created a number of demonstration models showing how to create various groupware applications. I also demonstrated how one could develop a system for remote Java development environment and testing. A secondary interest was Java performance issues. I developed a number of performance benchmarks for use with Digital's Just-In-Time Java compiler on Alpha machines.

AT&T Bell Laboratories, Distinguished Member of Technical Staff, 1983-1995

I've spent more time at Bell Labs than anywhere else and enjoyed it very much. My contributions there fall in three categories: Tools, Education, and Consulting. Many of these activities are documented in external publications. I was awarded the Distinguished Technical Staff Award in 1987.


I designed and developed the following software tools for production use:


I helped develop software education plans at AT&T. I organized and developed a software engineering currriculum for a unique 2 year retraining program (roughly equivalent to an MS degree) for a group of 20 AT&T engineers. During my stay at AT&T I developed and taught courses in programming discipline, data structures and algorithms, data types, software engineering, software tools and programming environments, software methodology, and software specification techniques. The best of these courses was a 3 day course on MetaTool and a 5 day course on domain engineering and software reuse. Both courses have been taught (up to 1996) to several thousand students throughout AT&T.


I provided consulting services to most of the software projects at Merrimack Valley. These services have included software audits, reviews, inspections, and advising primarily in software methodology, software architecture and design, and the use of application generators. Iwas also an active member and leader of the Software Methodology Engineering Circle which investigated and solved problems in software at Merrimack Valley. Circle work resulted in guidelines for establishing a software process, a software reuse library, and techniques for formal specification.

University of Connecticut, Assistant Professor, 1978-1982

I did research in data types, data abstractions, specification languages, semantics of programming languages, programming environments, and software engineering. I taught courses in data structures, principles of programming languages, advanced software engineering, automata theory, semantics of programming languages, discrete mathematics, data types, and others. I also worked on curriculum development, graduate degree admissions, and graduate degree exams and requirements. Please see my publications for further information about my research here. Perhaps the most interesting result from this time was the demonstration of how to define the semantics of a programming language using data abstractions and algebraic specifications.

In 1981, I was awarded a NASA Summer Faculty Fellowship where I spent a few months helping develop a vision of how computer science would aid NASA's programs.

University of California, Los Angeles, Student, Research Assistant, 1970-1978

I taught several undergraduate level courses in programming.

I designed and implemented:

  1. GAMMA and Delta, expression-oriented programming languages for microcomputers,
  2. a library system for SARA, a design methodology system,
  3. a Meta 7 parser for Algol 68 and
  4. improvements to two Meta 7 compilers (translator writing systems).
I maintained an Algol 68 compiler and the Meta 7 translators and provided consulting services to users. Also see my publications from this period.
Academic Honors:
Footnote to history: My first computer science job in 1972 included Arpanet access, my first exposure to what would become the Internet. The very first node of the Arpanet was installed in the Sigma 7 room next to my office.

Miscellaneous Notes

Over the years I have done numerous other activies including giving talks at Universities and professional societies, reviewing books, papers, and NSF grants. I was a software consultant for Parker Brothers, Microkit Inc., Micropolis, Econergy Inc. and Environmental Dynamics Inc.

One page summary resume in MS-Word
Text-version resume suitable for printing or email (excludes publications).