We focus on understanding the problem-solving strategies used by scientists and engineers, with the goals of automating parts of the process and formalizing educational methods.

We also work in computer languages, in computer architecture and in VLSI design. Contributions to AI include problem solving by debugging almost-right plans, various language structures for expressing problem-solving strategies, and applying AI ideas to computer-aided design. We also aim to pioneer the use of computational descriptions to communicate methodological ideas in teaching subjects in Electrical Circuits and in Signals and Systems.