What are optimal study habits in college?

<p>^^^ I guess that works for little Intro Java courses; but I think that it’s bad software development practice to suggest that you should never use code you could not have written yourself.</p>

<p>GO TO CALNEWPORT.COM </p>

<p>seriously. It saved me so much wasted time and effort. Even if you dont have the cash for his books (which I highly reccomend) his blog posts cover all the most efficient ways to study, write papers, ect.</p>

<p>^^^ Understanding the code you’re using doesn’t develop bad habits. The best programmers understand the most primitive of code and languages. It doesn’t matter because hardly any CS majors will be programmers, but there’s no reason to limit your abilities.</p>

<p>If you disagree, then don’t do it. Certainly there are times when I don’t have time to heed my own advice. But I try to follow it when possible.</p>

<p>^^^What if you have to use a class that is thousands of lines long? Should I waste company time by making sure I understand exactly how all that code works? Also, a lot of CS majors end up being “programmers” in some respect. What is important is not the code itself, but whether or not it meets its purpose. It seems that your problem solving ability is most imporant, not whether you have memorized primitive code and languages. Classes in algorithms, data structures, math classes, etc. are much more useful in this regard.</p>

<p>^^^Why would understanding the java methods you implement come at the expense of your other CS courses? Every CS major takes classes on data structures, algorithms, linear algebra/optimization, discrete math, and usually operating systems and databases. So what? There are very few classes that focus primarily on programming–in those classes, there is no reason not to understand the code you are using.</p>

<p>Just because the study habits I’m advocating aren’t directly translatable to job performance doesn’t make them useless. You want to learn while in school. You also want to get good grades. Just because you can’t study code on the job doesn’t mean you shouldn’t do it on your own time. </p>

<p>I agree, the reason to study code isn’t to memorize nuances in the language. Computer languages are going to be updated and expanded making what you memorize now obsolete (which is why I’m advocating learning the primitive languages–not just Java). But looking over code teaches you how others think and how others maximize efficiency. It’s like an applied algorithm. This is how I learn to improve my coding style and, more importantly, my thinking style.</p>

<p>For what it’s worth, I certainly didn’t understand the inner workings of the libraries I was using in my intro CS course. And I still don’t understand them.</p>

<p>If you can implement sound and graphics support from scratch, more power to you. I can’t.</p>

<p>Fine, I concede. You blew my statement out of context. I’m not saying you have to know every class and every method–particularly if it’s long code for conceptually trivial algorithms. </p>

<p>There IS a benefit to reading certain code because it expands your logical thinking. Not all code is useful, though.</p>

<p>Basically, if you’re in CS 101 and you’re using some method you imported from some Array class that reverses an array using like Array.reverse, then you’re screwed. Learn to reverse an array by yourself or you’ll never learn to program by yourself. That’s all I meant.</p>

<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>

<p>

</p>

<p>I don’t know about you but my CS texts weren’t a bunch of code. I was pretty well served by reading them. And I wasn’t specifically referring to CS courses–I think most of us have taken non-CS courses at college, too. I was offering study tools/habits I’ve picked up from all my classes.</p>

<p>So what is the problem here? Do you have issue with any advice I offered? Or do you just not like the specific example of sun java libraries?</p>

<p>I suppose I thought it to be a bad example. Reading and quizzing yourself works well for some subjects and not as well for others. Yes, Java books are not merely compendiums of example code; but I find that to be their main use. Much of the other material should have been covered in lecture. I admit I was surprised at a “technical” major advocating a reading-centric approach to learning. Most such majors in my experience prefer to minimize reading and maximize time spent practicing problems.</p>

<p>

</p>

<p>Correct, they are not inherently conflicting attributes, but they are also not widely distributed attributes. Athleticism and intelligence are not inherently conflicting attributes, but they tend not to occur in the same individuals because of their rarity. I am one of these individuals, and for that I am Extraordinary, just as are those individuals who possess both IQ and memorizing/studying prowess. However, when ordinary individuals choose to develop themselves, they often choose one or the other due to their limitations. Higher-IQ persons with weak study habits fall short when they take memorization-based exams that demand daily grinding and burning the midnight memorization oil. Lower-IQ individuals with strong GPAs might not get into the top schools of their choice, so they’ll end up at, say, a flagship state school where they put their contemporaries to shame with their academic prowess, compounding their advantage as they ride the top of the curve to victory.</p>

<p>In fact, I’d make the argument that at the top half of the bell curve, intelligence and GPA show a weaker correlation than at the lower half. Intelligence coupled with minimal effort can get you to the middle of the GPA bell curve, but effort becomes exponentially more important in the upper echelons of achievement, especially in a typical low-IQ/high-GPA major.</p>

<p>

</p>

<p>I definitely think it’s a balance act between conceptual understanding and concrete practice problems. But I’ve found that the more I read technical texts carefully, the less practice problems I need to do. I’ve done it for all my classes, including ochem, which is stereotypically a problem-set oriented class. </p>

<p>The OP sounded similar to me, so I simply offered my study strategies and told him(her?) the mistakes I’d made in the past. </p>

<p>I agree that the java library example was poor–I wasn’t encouraging anyone to memorize unhelpful information that will ultimately become obsolete.</p>

<p>

</p>

<p>Your sure blow that whistle. Remove the exaggerated arrogance and I somewhat agree with your above post (although the absurdity is noted); thinking and memorizing are two separate skills. But conceptual understanding compensates for poor memorization skills because there’s less things you don’t understand/need to remember precisely. This is a benefit, not a drawback, even in your so called “low IQ/high GPA” majors.</p>

<p>And the idea that there’s some inverse correlation between high intelligence and GPA is idiotic. IQ is not subject to inflation–by definition. Thus, there’s way more high GPA students than intelligent people–if IQ is the measurement tool. The odds favor intelligent people so much that they would have to be specifically lazy to not get a high GPA. Very few other factors (besides medical/psychological conditions) are reasonable.</p>

<p>I am of course not suggesting that my position is correct in any absolute sense; I was offering a contrary perspective to your own which might be of benefit to people reading this thread other than the OP.</p>

<p>

</p>

<p>This is not fact, this is your assumption. There are so many inconsistencies that betray your assumption. Certainly, yes, people who are perfect tend to do better than those who are not perfect. But the trend among the imperfect seems to tend toward an incomplete mastery of the faculties of the mind, tending more toward either aptitude or memory. I’m not saying there’s this absolute 1.0 negative correlation between aptitude and GPA, I’m saying that aside from the obvious forces at work that you perceive, the situation is multifaceted. The idiosyncrasies of countless strong-GPA individuals are simply staggering, they are almost savant-like in the way that certain faculties dominate their consciousness, especially those with low IQs.</p>

<p>If I have a relatively high IQ and a relatively high GPA am I perfect? I’ve always wanted to be perfect.</p>

<p>Only whistleblower is Perfect. Any mere mortal can be perfect.</p>