Adam Brooks Webber

316 Park Avenue West
Princeton, IL 61356
(815) 876-1106
adam@webber-labs.com

Professional experience

Monmouth College

2005-present

Associate professor, department of mathematics and computer science. Undergraduate courses: introductory programming, principles of programming languages, formal languages and automata, operating systems, architecture, software engineering.

University of Wisconsin - Milwaukee

2000-present

Associate scientist, computer science department.
Graduate and undergraduate courses: principles of programming languages, formal languages and automata. Supervision of M.S. and Ph.D. students; textbook development; sponsored research.

1998-2000

Assistant professor, computer science department.
Graduate and undergraduate courses: analysis of algorithms, principles of programming languages, optimizing compilers. Supervision of M.S. and Ph.D. students; sponsored research.

Western Illinois University

1997-1998

Associate professor, computer science department.

1993-1997

Assistant professor, computer science department.
Undergraduate and graduate courses: CS1, CS2, programming language theory, analysis of algorithms, compiler construction, C, C++, computer architecture, automata and formal languages, fuzzy logic.

1992-1993

Cornell University

Teaching assistant.
Undergraduate courses: CS1, CS2, Scheme.

1985-1988

True BASIC, Inc.

Design engineer. Developed an intermediate-code compiler with integrated editor and debugging environment for various microcomputers.

1982-1984

Dartmouth College

Systems programmer. Maintained legacy mainframe operating system. Implemented file system for its modern replacement. Developed common run-time environment and virtual-memory loader for PL/1, BASIC, Pascal and Fortran languages.

Education

1989-1993

Cornell University

Ph.D., computer science. Minor, electrical engineering. Thesis research: high-level optimization of functional languages.

M.S., computer science.

1980-1984

Dartmouth College

B.A., mathematics, with honors.

Research publications

What is a class invariant? In: Proceedings of the 2001 ACM SIGPLAN - SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, (Snowbird, Utah, June 18-19, 2001), pp. 86-89.

This paper discusses the problem of finding a useful definition for the concept of class invariant. It provides a new way of looking at some of the problems of programming language design.

Program analysis using binary relations. In: Proceedings of the ACM SIGPLAN '97 Conference on Programming Language Design and Implementation, (Las Vegas, Nevada, June 15-18, 1997), pp. 249-260.

This paper presents a method for finding binary relations among the variables of a program. The method constructs a table of binary relations and treats the program as a collection of constraints on tuples of relations in the table. An application of the method analyzes programs of size n in O(n2) time.

Proof of the interval satisfiability conjecture. Annals of Mathematics and Artificial Intelligence, 15(II), 1995, pp. 231-238.

This paper resolves an open problem published by Shamir and Golumbic in the Journal of the Association for Computing Machinery, 40(5), 1994. They studied the complexity of a family of problems involving reasoning about intervals. My paper provides a missing NP-completeness proof.

Optimization of functional programs by grammar thinning. ACM Transactions on Programming Languages and Systems, 17(2), Mar. 1995, pp. 293-339.

This paper describes my work on the optimization of functional programs. Programs are represented as graph grammars, and optimization proceeds by counterexample: when a graph generated by the grammar is found to contain an unnecessary computation, the optimizer attempts to reformulate the grammar so that it never again generates any graph that contains that counterexample. Related papers include:

Principled optimization of functional programs, extended abstract. In: Proceedings of the Fifth International Workshop on Graph Grammars and their Application to Computer Science, (Williamsburg, Virginia, Nov. 13-18, 1994), pp. 224-229.

Principled optimization of functional programs. Ph.D. thesis, Cornell University, Aug. 1993.

A formal definition of unnecessary computation in functional programs. Technical report TR 92-1260, Cornell University, Jan. 1992.

Relational constraint: a fast semantic analysis technique. Technical reportTR 92-1319, Cornell University, Dec. 1992.

Thinning context-free languages. Technical Report TR 92-1318, Cornell University, Dec. 1992.

Other scholarly publications

Formal Language: A Practical Introduction. To be published by Franklin, Beedle & Associates, Inc., June 15, 2007.

I developed this textbook for courses in formal language and automata. The book introduces the foundations of computer science in a way that is accessible to students whose main interest in computer science is practical, and who do not have a strong mathematical background.

Modern Programming Languages: A Practical Introduction. ISBN 1-887902-76-7. Franklin, Beedle & Associates, Inc., 2003.

I developed this textbook for my UWM course in programming language concepts. It leads students to think about abstract programming language concepts, starting from a foundation of simple programming exercises in ML, Java, and Prolog. It has been adopted for use at many colleges and universities in the US, including UCLA and Penn State, and at several schools outside the US, including Vrije University Amsterdam and the Kuwait University.

Fluent Pascal: The Pascal Trainer Laboratory Guide. ISBN 0-07-068834-6. McGraw-Hill, 1996.

The Pascal Trainer. In: Proceedings of the twenty-seventh SIGCSE technical symposium on computer science education, (SIGCSE '96, Philadelphia, Pennsylvania, Feb. 15-18, 1996), pp. 261-265.

This paper describes my novel method of teaching programming to beginners. I believe that beginners should get plenty of practice with simple algorithmic expression. To this end I built the Pascal Trainer: a self-contained editor, compiler, interpreter, tester and problem bank. The Trainer presents students with carefully chosen sequence of simple programming exercises, starting with expressions and working up to procedures and functions. Students get to practice with the language instead of listening to lectures about it, and I get the pleasure of helping them individually when they get stuck.

Invited talks

Roots: Concerning Ancient Greece, Modern Algorithms, and Piano Tuning. UWM IEEE-CS group, December 8, 2005.

The limits to computation. Stirling College, April 21, 2004; Augustana College, May 1, 2005.

Analysis of class invariant binary relations. Dagstuhl Seminar on Program Analysis. Hanne Riis Nielson and Mooly Sagiv, eds. Schloss Dagstuhl, Wadern, Germany. Apr. 12-16, 1999. Seminar No. 99151, Report No. 236.

Grants

Class-invariant assertions in object-oriented programs. NSF grant CCR-0073070, $187,272. Oct. 1, 2000 to Sept. 30, 2004.

Object-oriented programs contain many "class invariants": propositions that are true of all objects of a given class, and remain true even as the objects change. These class invariants are the focus of this research. There are two broad areas of applications for class invariants. First, class invariants can enable compiler optimizations, allowing programs to run faster. Second, information about class invariants can be of direct use to programmers, reducing the number of software defects. Research goals include building a categorization of class invariants that are tractable for static analysis, developing static analysis algorithms for class invariants, implementing systems that apply class invariants in compiler-style optimization and in verification of user-supplied invariants, and empirically evaluating the techniques as implemented, with particular attention to their speed and the usefulness of the results for standard compiler optimizations.

A trainer for rudimentary algorithmic fluency. NSF grant DUE-9653269, $148,246. Mar. 1, 1997 to Feb. 29, 2000.

The project involved extending my Pascal Trainer to an integrated web-based trainer for C/C++/Java.

Awards

Who's Who, listed 2007.

Best Teacher in the UWM College of Engineering and Applied Science, by vote of the student body, Nov. 2003.

Best Teacher in the UWM College of Engineering and Applied Science, by vote of the student body, Mar. 2002.

Outstanding Research Award, WIU College of Business and Technology, 1996.

Best Undergraduate Computer Science Teacher, by vote of the student body, WIU, 1995.

Personal

Married, father of two.

Volunteer organist, webmaster, composer, and member of the Open Prairie United Church of Christ, Princeton, Illinois, since 2003.

Student of Karatedo Doshinkan since 1992. Title: Renshi. Rank: 4th Dan.