At my university, we started off on ML (the functional programming language). This very quickly introduced the concept of a function as a repeatable series of instructions that could be called several times - for a functional programming language, it is almost essential to call the same function several times. This also introduced recursion and types (as part of the compiler type inference) very quickly, something which is probably quite hard for people to grasp.
The only other courses in the first term was digital electronics and pure mathmatics courses. Only in the second term was Java introduced as the perennial OOP/procedural language. I think we've got one of the lowest dropout rates in the country (but don't quote me on that).