What are the profound theoretical ideas in computer science?
Ok, to make things a little more concrete, here are some of the concepts that I think are central to Computer Science as an intellectual disipline: (a) abstraction, (b) the relationship between nested structure, recursion, and induction, (c) emergent properties, and (d) computability and complexity. Abstraction is the process of describing a complex component with a simplified model of its externally-visible behavior. Abstraction is the primary tool used by engineers to manage the complexity of large systems. Nested structure is a common feature of all natural and most formal languages. An example in English grammar is a noun phrase, which can contain (among other things) an adjectival clause that contains, in turn, another noun phrase. Thus, there is a small noun phrase nested within the larger one. With few exceptions, the grammatical rules that apply to the outer phrase also apply to the nested phrase. Recursion is a problem-solving technique that is used when a programming task can