admanimal said:I don't think it's that simple. You can't really design something when you have no idea how it will be built. At the very least, designing a program requires you to know what classes, variables, methods, etc. are. And you have to have at least a rudimentary knowledge of how different design decisions affect the computational complexity. Even the fact that you can only do one thing at a time isn't obvious to someone with no programming experience.
For these reasons, I really think it is necessary to strike a balance between teaching design and actual programming. You can't really teach one without the other.
As for starting with OOP vs. procedural, I would definitely go with procedural. OOP is basically just procedural with additional design considerations which are difficult to grasp at first and can distract from the task of learning basic programming constructs. I don't think you can do OOP effectively without being comfortable with breaking a program into functions anyway. Once the students are ready for writing serious programs with serious designs, then OOP can come in. (Not that you can't write a serious program without OOP).
It is that simple. You don't need to think about coding at all.
Imagine all the items in your house as objects. Disassemble them logically. Figure out what parts they have and at a high level, how they work together.
There is no reason for a first year student to touch a programming editor.
OOP doesn't need to be applied to everything but when both techniques are taught properly, the outcome is equally successful.