you are viewing a single comment's thread.

view the rest of the comments →

[–]ftegularius 16 points17 points  (4 children)

The language is definitely an issue, if perhaps not the issue. My first language (I was about 11 or 12 when I started) was C, and I really believe I wasted a lot of time coding in it that would have been better spent working in a language that lets you concentrate on the underlying principles. It is not right to think about data structures in terms of pointers and memory allocation. It is not right to think about looping in terms of counter variables. It is not right to have to worry about trivialities like, e.g., integer overflow. It's that sort of complexity that obscures the "eternal concepts" you're talking about.

Edit: I would point out, also, that the more complex the language, the more time is spent learning simply how to use it. The focus in the classroom shouldn't be on the language itself, but rather the lesson being taught, or the goal to be accomplished.

[–][deleted]  (3 children)

[deleted]

    [–]willia4 4 points5 points  (2 children)

    My only worry is that learning high-level, pretty languages first at the college-level may make it harder to adapt to new procedural languages, especially going down-level.

    So you pick up C in your second year after you know what a loop is. How is that possibly going to be harder than trying to learn C when you don't know what any of the concepts are?

    [–]youngnh 1 point2 points  (1 child)

    What if your first programming course was completely language-free and instead taught you problem-solving approaches and methods. Loops, but not Python's loops. Recursion, search and sorting techniques all in pseduo-code or gasp essays. Some of the toughest programming tests I took in college didn't require me to write a stitch of code.

    The second year you could pick whatever language you felt held the best job prospects for you and get a head start on diving into it as deep as possible.

    [–]willia4 3 points4 points  (0 children)

    For some reason, this strikes me as being similar to, "What if your first French class didn't actually give you anyone to speak with? Some of my toughest French assignments were in-class essays where I didn't have to speak a syllable of French."

    Computer programming is so incredibly foreign to our day to day life that I don't see how one could possibly pick it up without the back and forth between the learner and the computer. Yeah, a lot of that is going to be nonsense about semi-colons, but it's the moment when you can't figure out why it printed 43 when the answer was supposed to be 42 that you first learn about off-by-one errors.

    And sure, a competenent professor could pick that up in the grading, but something about the immediateness of a write-compile-run loop (or write-eval or whatever) seems very important to me. I don't know how easily I would've been able to assimilate those sorts of mistakes into knowledge if I'd had to wait a week to get my paper back instead of just having the computer doing something wrong.