He received his Bachelor's and Master's degrees from Oregon State University in 1977 and 1979, respectively. He received a Ph.D. from the University of Massachusetts in 1984. Over the last 23 years, he has taught courses in introductory programming, software engineering, computer architecture, and parallel processing. Since 1986 he has co-authored 13 textbooks that have helped over a million students learn to program computers. His books have been translated into French, Spanish, and Russian. He conducts research in computer architecture, compilers, parallel processing, and compiler-architecture co-optimization.