See http://craigc.comText version below.
J. Craig Cleaveland P.O.Box 1092 Amherst, NH 03031 (603) 479-2656 craig@craigc.com http://craigc.com OBJECTIVE: Free lance consulting, contracting, or teaching for Java, internet, XML, software generation, and distributed systems particularly groupware applications. Alternatively, a permanent position that uses my expertise and technical leadership skills to create tools for building the next generation of WWW interactive sites for commerce, groupware, simulations, games, and on-line tools. SKILLS: Technical leadership; team player; creative and innovative; broad and deep technical expertise in software architecture, design, 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). EXPERIENCE: Whitebirch Software, Inc., 2004-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 http://whitebirchsoftware.com 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: Classic games such as Chess, Checkers, Backgammon, Othello, Gomoku, and Boggle. Ratings for individual players for each game A completely automated tournament system A set of tools to aid a group of volunteers to respond to complaints and remove or ban people from various rooms. 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. 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. Tools I designed and developed the following software tools for production use: MetaTool: A tool for building application generators. MetaTool is used at many AT&T locations for producing a wide variety of application generators. MetaTool (formerly called Stage) is trademarked and is available commercially from Lucent Technologies. Consulting services for MetaTool are provided by http://www.ivystar.com/. WOODS and BriefCase: Tools for building software tools consisting of small flexible data bases, user interfaces and product generators. Both are used to produce data dictionary tools, MR tracking tools, software reuse libraries, application generators, documentation tools, and other information management applications. BriefCase uses an object-oriented database and X windows. DCGS: An application generator for MML user interfaces for telecommunications equipment. DCGS has been used by over 15 telecommunication projects. Ring Simulator A tool used to describe SONET protection switching protocol for ring networks. The tool also provided a graphical simulation environment for testing independent of the hardware. CAST: A module interconnection language, for describing software components, their interconnections, and the communication mechanisms underlying software connections. Used for constructing reusable software components, and software architectures. Tcl/Tk frontends: A tool that given a specification will generate the C code for creating a Tcl/Tk interface, thus allowing users to directly access the tool using the Tcl/Tk system. This tool was used for MetaTool (see above) and a host test environment that was created for CAST (see above). WWW Tools: For the last 30 months at AT&T, I designed and maintained the WWW site for the software reuse group. This included the transfer of a paper newsletter to the web, the construction of domain catalog tools to keep track of various assets, membership lists, and email discussions for domain-specific user groups. Near the end I started working with Java, at which point I decided I wanted to spend full time on Java. I left AT&T at this point so I could find a job dedicated fully to Java. Huffman: An application generator that will minimally encode string data for DCGS and other application generators. i51sas: A C-like structured assembler for the Intel 8051 line of chips. Education 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. Consulting 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 Degrees: UCLA, B.A., Mathematics and Computer Science 1975 UCLA, M.S., Computer Science 1975 UCLA, Ph.D., Computer Science, 1978 Thesis: The Design, Implementation and Correctness of an Expression-Oriented Language for Microcomputers. 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: 1974, UCLA Undergraduate Honors Program 1975, Phi Beta Kappa 1976-77, IBM Fellowship 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. Personal Notes: US citizen, excellent health.Publications
BOOKS
Program Generators using Java and XML, Prentice-Hall, 2001, Using domain engineering techniques, this book shows a variety of techniques for writing program generators in Java using XML as a specification language. See http://craigc.com/pg for more details.An Introduction to Data Types, Addison-Wesley, 1986, translated to Japanese by Kyoritsu Shuppan, 1990, translated to Dutch, 1991. In this book I give a detailed treatment of programming language data types and abstractions, from the simple numeric types to complex data constructors. The book ends with a description and examples of data abstractions and algebraic specifications.
Grammars for Programming Languages, Elsevier-North Holland, (with Robert Uzgalis), 1977. This book shows the variety of grammatical techniques and formalisms used in the definition of programming languages. The highlight of the book is the demonstration of how to use W-grammars (double level grammars) in defining not only the syntax but also the complete semantics of a simple programming language named ASPLE. Subsequently, ASPLE has been used by numerous authors for illustrating various techniques in defining the semantics of programming languages.
PAPERS
"Dividing the Software Pie," (with Jan Fertig and George Newsome), AT&T Technical Journal, vol. 75, no. 2, 1996."Untangling the Dependency Jumble," Proceedings of the AT&T Symposium on Software Reuse, May, 1995.
"Specification Driven Tools and Techniques," in Encyclopedia of Software Engineering, edited by John Marchiniak, published by Wiley-Interscience, 1994.
"Software Conveyor Belt: An Attack Strategy for Software Development," (with others), Proceedings of the Second annual AT&T Symposium on Software, July, 1992.
"The Next Generation of Specification-Driven Tools", (with T.T.Wetmore IV), Proceedings of the AT&T conference on Specification Driven Tools, Oct. 1989.
"Tools for Building Application Generators," AT&T Technical Journal (with Chandra Kintala), vol. 67, no. 4, 1988.
"Building Application Generators," IEEE Software, July, 1988; also reprinted in Domain Analysis and Software System Modeling by Prieto-Diaz and Arango, 1991. This paper was identified as one of the landmarks in the software reuse literature by Frakes & Isoda, IEEE Software, September, 1994.
"The Computer Science Education Program at AT&T Bell Laboratories, Merrimack Valley," in Proceedings of the SEI conference on Software Engineering Education, Springer-Verlag, (with R.W.MacDonald), 1987.
"Computer Science: Key to a Space Program Renaissance," 1981 NASA/ASEE Summer Study, (with 20 others), August, 1981.
"Mathematical Specifications," SIGPLAN Notices Vol. 15, 2, December, 1980.
"Programming Languages considered as Abstract Data Types," Proceedings of ACM 80, October, 1980.
"Logical Structure Specification and Data Type Definition," Proceedings of ACM 79, (with Billy Claybrook and Don Criscione), October, 1979.
"The Design and Implementation of a Simple Programming Language for Microcomputers," AFIPS Conference Proceedings, Vol. 46, 1977 National Computer Conference (with C.D.Satten).
"Meaning and Syntactic Redundancy," published in New Directions in Algorithmic Languages, Edited by S.A.Schuman, Institut de Recherche d'Informatique et d'Automatique (IRIA), 1975
"Redundant Specification in Programming Languages through Pouches," Proceedings of the International ALGOL 68 Conference at Stillwater, OK, June 1975.
"Computer Assisted Interactive Modeling of Coastal Processes," Environmental Dynamics Inc. for ONR contract No. N00014-73-C-0501 (with J.Dracup, S.Grant, J.Smith, and R.Uzgalis), August 1974.