Teaching Programming Broadly and Deeply: The Kernel Language Approach.
Peter Van Roy, Seif Haridi · 2002
Abstract We present the kernel language approach, a new way to teach program-ming that presents most of the widely-known programming paradigms (including imperative, object-oriented, concurrent, logic, and func-tional) in a uniform setting that shows their deep relationships and how to use them together. Widely-dierent practical languages (exem-pli ed by Java, Haskell, Prolog, and Erlang) with their rich panoplies of abstractions and syntax are explained by straightforward translations into closely-related kernel languages, simple languages that consist of small numbers of programmer-signicant concepts. Kernel languages are easy to understand and have a simple formal semantics that can be used by practicing programmers to reason about correctness and com-plexity. We have taught the approach at three universities in courses ranging from second-year undergraduate courses to graduate courses. We are completing a textbook with accompanying materials. As part of a curriculum, the approach naturally complements courses on algo-rithms & data structures and program design & software engineering. The approach is the fruit of ten years of research by an international team, the Mozart Consortium.