There are some seriously odd concepts in computer science. These concepts are like air for programmers - so normal they're not even noticable. But for beginners, it's like not knowing how to breathe. Here's Alfred Thompson: "Somehow the idea that the index is, in some sense, part of the name and not the value being stored is hard for some to grasp. Though come to think of it, I never talked about an index as being like a name... Perhaps I will discuss indexes as part of the name next time I teach arrays." That's the sort of thing I mean. When I was studying logic and programming I found the lessons full of such background concepts that were never stated, but just assumed to be understood. (Society is like that too, and uses this as one of its primary differentiators of power and class).