3 ms·
I agree with your point that making inheritance, polymorphism and OO design the focus of the second course is not a good idea. But I think you're still trying t
by Goladus 15y ago
I agree with your point that making inheritance, polymorphism and OO design the focus of the second course is not a good idea. But I think you're still trying to put too many disparate concepts into it.
That's very probable. I'm in the middle of organizing my thoughts on this, based on my memories of introductory CS 14 years ago and what I've learned since then.
By far the biggest difficulty I had with my CS program was that they left it up to me to learn any "real" language on my own. The only language covered during the first two semesters was Pascal. C was never covered, except as an optional one credit class (which was combined with Unix and shell scripting). Assembly was covered, and if you took theory of languages you learned lisp. That was it.
All the painful idiosyncrasies of C and Java, rather than bogging me down in my first year, bogged me down when I was supposed to be writing operating systems and learning algorithms. Despite having a solid understanding of all the concepts: loops, recursion, lists, queues, functions, etc, having been using them since high school, I had a ton of trouble just getting them to work in C or Java (This was Java as it was in 1999 or so).
I remember submitting assignments in Java that used one single gigantic method in a single class because I got sick of spending time trying to figure out why the abstractions I was trying to create weren't working like I expected. I knew the object oriented concepts and aced all the tests, but had trouble when it came to actually writing code in anything but Pascal or BASIC. (or Matlab, actually, but that wasn't part of CSci)