About
I teach computer science in the Applied Computer Science Post-Baccalaureate program at the University of Colorado Boulder. My work centers on artificial intelligence, natural language processing, and computer science education. In practice, that means I spend most of my time designing courses, working with students, and thinking about how people learn technical ideas that can initially feel intimidating.
This site collects a few of the things I work on. You will find information about my teaching, some of my research interests, and resources related to the CSPB program.
Teaching
Teaching has been the central thread of my career. In the CSPB program at CU Boulder I teach courses such as Data Structures (CSPB 2270), Software Development Methods and Tools, Professional Development in Computer Science, and Natural Language Processing. The program serves students who already hold a degree in another field and are transitioning into computer science, so the classroom often includes people with very different backgrounds and goals.
One thing to keep in mind about this kind of program is that many students are making a significant career transition. My goal is to create courses that are clear, structured, and practical. Students should know what they are expected to do, why they are doing it, and how each assignment connects to the larger arc of becoming a professional software developer or preparing for graduate study.
In general, I try to organize courses around a simple idea. Students learn best when they are actively building things. That means frequent checkpoints, clear rubrics, and projects that produce artifacts students can show to others. A clean GitHub repository, thoughtful documentation, and a working demonstration are signals that travel well beyond the classroom.
Research and Intellectual Interests
My research asks a fairly simple question. How do people and machines communicate with each other, and what does it take to make that interaction effective?
Over the years this question has led me into several areas, including natural language processing, dialogue systems, human-computer interaction, and the capabilities and limits of modern AI systems. I am interested in both the technical side of these systems and the human side. How do we design tools that help people reason, write, and explore ideas more effectively?
Some of my earlier work explored conversational systems and virtual human technologies. More recent work examines language models and the role artificial intelligence plays in teaching and learning. Across these areas, the theme is fairly consistent: build systems that interact with people in meaningful ways and evaluate them honestly.
Background
I received my Ph.D. in Computer Science from Duke University in 1994, working with Alan Biermann on conversational interfaces and dialogue systems. After completing my doctorate, I joined RTI International in North Carolina, where I worked as a research engineer and later as a principal investigator on projects involving language technology and interactive systems.
In 2004 I moved into academic life at the University of North Carolina Wilmington. Over the next two decades I taught a wide range of courses, supervised graduate and undergraduate research projects, and eventually served as Chair of the Department of Computer Science from 2017 to 2021.
More recently I joined the University of Colorado Boulder to help grow the Applied Computer Science Post-Baccalaureate program. I now serve as Associate Director of Student Experience while continuing to teach several courses in the curriculum.
Personal Interests
Outside of the classroom I try to spend as much time outdoors as possible. Birding and hiking are two activities I particularly enjoy.
Travel is another long-standing interest. Recent trips have included Oaxaca in Mexico, Monteverde in Costa Rica, Portugal, Iceland, and Edinburgh in Scotland. Closer to home I enjoy exploring Rocky Mountain National Park and the Sky Islands region of southern Arizona, both of which are excellent places for hiking and birding.