I have been a member of the Department of Computer Science at the University of Utah since 1987. I do research into the application of computers to education, and I teach extensively at the undergraduate and graduate levels. As Director of Educational Programs, I have broad purview over the teaching mission of the department.
For the last five years I have been actively developing computer-based tools and curricula for teaching introductory programming courses, primarily to science and engineering students. The evolution of my thoughts on this subject can be traced via the volumes of computer-based instructional material I have developed, as well as via my recently-published textbook.
Introduction to Scientific Programming:
The book introduces programming using both Maple (a computer algebra system) and C. It uses Maple in its first half to introduce the computational properties of numbers; numerical, symbolic, and graphical programming; and programmer-defined functions. In the second half, it builds on the ideas introduced in the context of Maple to introduce procedural programming in the context of C.
Each chapter is organized around the solution of a simple but realistic problem from science or engineering. The solution of each problem is divided into five steps: problem, model, method, implementation, and assessment. Since my book is primarily an introduction to programming, the focus tends to be on implementation, but I make sure that students can appreciate the context in which computational problem solving occurs.
My students and I have developed a variety of online resources that support the book. The available resources include Java-enhanced HTML-based tutorials, Maple worksheet-based tutorials, Maple libraries, and C programs. These resources can be used to create laboratory experiences for students.
The Hamlet Project
I head the Hamlet Project, a research group that develops and experiments with online instructional support for introductory computer science classes. Over the last five years we have experimented with a variety of technologies. We are currently focusing on HTML-based tutorials that exploit Java applets to interactive illustrate key ideas.
The applet whose image appears above, for example, is used in a tutorial on the physical principle of center-of-gravity.
The online course materials that we have developed include: