<p>
It doesn’t come at the expense of other courses… the other courses make understanding the methods you implement through Java largely irrelevant.</p>
<p>
A lot of schools have 3 “program-centric” classes… Intro to Programming and then CSI and CS2. More than enough, in my opinion. What do you mean by “understand the code”? I think the point of those classes is to give you a general overview of writing programs and the methodology behind the practice of programming. Encouraging students to get bogged down in minutae seems counter-productive.</p>
<p>
You will never, ever learn a significant amount of programming technique in an undergraduate CS/SE course. Like 80% of what you know ends up being real-world experience with working in the software industry, etc. To pretend that one can become a programming guru through studying Java code and taking closed-book tests on said code is disingenuous. You learn programming through experience, pratice, discussion with other programmers, etc.and have to continue this throughout your career. Grades…well that’s another matter. I guess it depends on how your coursework was designed. At my school, the CSI and CSII tests were always open-book. And still the class average was about 85 on those tests, so you can’t argue that open-book tests are bad and render tests useless. If you did not know how to use a reference efficiently and did not have a decent understanding of coding practices in general, you would not do well on the tests. The rest of the grades were programs and projects, which still presented a something of challenge despite having unlimited access to references (short of merely cheating), so clearly there is more to coding than the methods in the books.</p>
<p>
</p>
<p>Hence the Algorithms and Data Structures course, etc. What do you mean by “primitive” languages? Low-level languages like assembly? I think there is generally a distinct difference in function and methodology for low-level and high-level languages. I am dubious of how much you actually learn by “studying” code.</p>
<p>EDIT: Note that I had not read your previous post before posting this…we cross-posted I guess. The concept of reversing an array is hardly unique to coding. Also, I bet one could program for years without ever having to reverse an array (not using a class). You are generalizing too much i.e. “If you can’t write this one method you clearly can’t program at all.”</p>
<p>As for context:</p>
<p>
</p>
<p>Read code, memorize, references are unneccesary tools, make writing code a closed-book test; learning = perfect recall of material; reading is more important than practicing. I think I attacked your position well within context.</p>