Recursion via PASCAL
Thinking recursively
The C programming language
Computer science: a modern introduction: 2nd edition
Computer science: a modern introduction: 2nd edition
SIGCSE '94 Proceedings of the twenty-fifth SIGCSE symposium on Computer science education
Communications of the ACM
Explaining recursion to the unsophisticated
ACM SIGCSE Bulletin
Incorporating problem-solving patterns in CS1
SIGCSE '98 Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education
Design patterns: an essential component of CS curricula
SIGCSE '98 Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education
Recursion in gradual steps (is recursion really that difficult?)
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Helping students through multiplicities
CCSC '00 Proceedings of the fifth annual CCSC northeastern conference on The journal of computing in small colleges
Shared terminology, private syntax: the case of recursive descriptions
Proceedings of the 7th annual conference on Innovation and technology in computer science education
Platyhelminthes are [re]constructed recursively
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part II
Hi-index | 0.00 |
This paper includes an abstract, a discussion of the usefulness of self-reference in early computer science courses, and some examples to illustrate this usefulness. Most readers will not be troubled by this example of self-referential writing. Why then is self-reference, usually in the form of recursive subprograms, thought to be so onerous as to be placed in its own left-until-the-end-and-often-uncovered chapter in most introductory texts? Self-reference is one of the cornerstones of computer science from the unsolvability of the halting problem, to writing a Pascal compiler in Pascal, to reveling in the beauty of Quicksort. We argue that the notion of self-reference should permeate first courses in computer science. If this is to be the case such courses should take a view far broader than “Wow, I can average 10 numbers with the skills I learned in my first programming course!”