next up previous
Next: Bibliography Up: Functional Languages and Introductory Previous: 17 Schools Using Scheme

18 Summary

Languages which are routinely used by industry, such as Basic, FORTRAN, C, C++, etc., are often not entirely suitable for expository presentation of topics in the introductory computer science curriculum. Frequently, students entering computer science programs have already studied one of these languages and have some programming experience. Choosing a language which is better suited for expository presentation of computer science topics, such as Scheme or J, can have a leveling effect amongst students who have different preparation for college level training in computer science. Moreover, choosing a language which allows expression of powerful ideas helps give the mindset which allows students to think what might otherwise have been "unthinkable" thoughts. Such notation should foster development of formal methods in addition to the practical aspect of design, analysis and programming. An important method of exposition involves building small working models of each topic. Once built, such models provide the basis for laboratory experimentation which can involve measurements, formulation and verification of hypotheses and analysis.

Programming notation becomes a powerful tool of exposition by making an appropriate choice of language. The decision about choice of programming language should be made primarily on the basis of how well key concepts in computer science may be expressed in the language. For these reasons Scheme or J is preferable to other languages commonly used in introductory computer science courses.

Functional languages such as Scheme and J are useful in teaching recursion and iteration to introductory students. The exercise of writing the continuation of each recursive call in a definition forces students to think about the definition. Students also find that the alternate view of recursion as a composition of continuation functions gives a new perspective on recursive definitions. Identifying tail-recursive definitions or transforming non tail-recursive definitions into tail-recursive definitions is a useful exercise which helps enhance understanding of the algorithm. This author has found Scheme and J to be equally effective in the teaching of recursion and iteration. Both languages have significant advantages, particularly when used for exposition, over imperative languages.


next up previous
Next: Bibliography Up: Functional Languages and Introductory Previous: 17 Schools Using Scheme
2002-11-26