His research has been in Artificial Intelligence (case-based reasoning, planning, diagrammatic reasoning, robotics, evolutionary computation) and Computing Education (empirical studies of software design, concept acquisition, and student preconceptions). He is currently the co-editor-in-chief of the ACM Journal on Educational Resources in Computing, and is on the editorial board of the journal Computer Science Education. At the University of Connecticut, he serves as Director of Accreditation for the School of Engineering, and Director of Undergraduate Programs in the Computer Science and Engineering department.