I doubt they'll "instantly" be better than 90% of CS students, but if they're interested, they'll ultimately put in more time by themselves to learn how to program.
I remember that I was learning to program just as I was entering high school. I fell in love with programming instantly, but it does not mean I didn't spend hours upon hours debugging my first few programs to see what went wrong. But I didn't have anyone to guide me, so all my programs were imperative styled, not OOP. After taking my first computer science course in high school, my classmates thought of me as a programming genius (which I am not) since I was able to write programs faster than anybody else in my class. It's a lot easier to understand OOP when you've been programming for 1-2 years rather than 2-3 months.
That's why I'd say that a lot of programming ability is effort, not intelligence. Except for non-C family programmers, I've never met anyone who didn't have the "4-hour-debugging-session-only-to-find-it-was-a-missing-semicolin" experience when they were beginning programming.
"After taking my first computer science course in high school, my classmates thought of me as a programming genius (which I am not) since I was able to write programs faster than anybody else in my class. It's a lot easier to understand OOP when you've been programming for 1-2 years rather than 2-3 months."
---
I think this happens with most classes. I had to take an introductory MS Office class as part of my degree. I aced every test without effort, and was the go-to guy for help when even the teacher was stumped.
It wasn't that I was some kind of genius, it was that I had been working with various interfaces and software from the moment I could reach a keyboard.
Nitpicking here, but I'm quite sure OOP and imperative programming are orthogonal concepts. Clojure is a mostly functional OO language, while Java is a mostly imperative OO language.
Yes. On the other hand, 'procedural' can be seen as opposed to OO: the notion that the organization of programs is as a collection of procedures (and (incidentally?) data structures), as in C, as opposed to a collection of object types.
I remember that I was learning to program just as I was entering high school. I fell in love with programming instantly, but it does not mean I didn't spend hours upon hours debugging my first few programs to see what went wrong. But I didn't have anyone to guide me, so all my programs were imperative styled, not OOP. After taking my first computer science course in high school, my classmates thought of me as a programming genius (which I am not) since I was able to write programs faster than anybody else in my class. It's a lot easier to understand OOP when you've been programming for 1-2 years rather than 2-3 months.
That's why I'd say that a lot of programming ability is effort, not intelligence. Except for non-C family programmers, I've never met anyone who didn't have the "4-hour-debugging-session-only-to-find-it-was-a-missing-semicolin" experience when they were beginning programming.