Are the first programming courses in the Computer Science major supposed to be hard?

<p>I'm in Structures of Programming 1 (Scheme language + SICP textbook) at my university..estimating my grade for this fall semester will be a B like 84-85%...
(finish all my labs =100%, quizzes= 90-93%, programming hws = 90-95%, midterm 1= 88%, midterm 2 = guessing 65-70% -ouch)
Considering how the 2nd midterm went I'm also pretty nervous for the final , and also our big project is daunting on me..</p>

<p>Are the first few courses meant to be weed-out courses?</p>

<p>I am used to being a much better student than this..in my Calculus 2 class I have a solid A</p>

<p>Is it just this one midterm was a fluke? Because I do well and get A- usually on my homeworks.
Is it bad to be someone who can't write code under pressure in exams? -_- or common?
I just feel worthless at my own major and intimidated by others who seem to do much better..</p>

<p>Any other computer science majors felt this way?</p>

<p>B is supposed to be a good grade.</p>

<p>It could be a weeder. It could be you just weren’t prepared for the class. At my school you take an intro class in standard C++ (or Java) before moving onto a three-quarter sequence on component-based software design in their own proprietary variant of C++, which incorporates design-by-contract, a mathematical modeling language to describe what functions and data types are/do. It’s definitely a weeder, while the first intro course was just to get your feet wet programming. Is this your first time getting your feet wet?</p>

<p>I think the biggest problem that holds people back in programming classes is lack of planning. Know what a piece of code is supposed to do, know what its “input” is, and know what its “output” is, and list the steps it is supposed to do all on paper. Actually writing the code should be the next-to-last thing you you (last would be typing it up and building, if you’ve done your job well there will be no debugging to do :-)). Don’t just dive in, design your algorithms on paper first.</p>

<p>One thing I do when designing anything with a loop is to actually write out instances of the loop, i.e. “the first iteration of the loop does x,y, and z, the second iteration does…” When I’ve written the first four or so instances of the loop, it’s clear what pattern is emerging and how to put it into code.</p>

<p>Getting a B in introductory programming classes is fine. I don’t know whether schools design courses like that to fail a majority of the incoming class, but that’s typically the actual outcome.</p>

<p>Yeah, I never actually programmed before I came to college and this class. So my feet are definitely getting wet for the first time haha.
I do feel like it’s my cup of tea in that it’s not boring to me, I do really get in to it, it’s just really hard.</p>

<p>I just feel like I take longer to think things through before I can write out an algorithm that makes sense to me. Using the language is not a problem and I’m fairly quick with that, just using it in clever/tricky ways I am not always good at (it’s like an either you get it or you don’t situation). I feel like I was so focused on learning the language aspect that I stink at constructs and methods of programming, which are actually what really count…</p>

<p>The thing is I really want to go graduate school to get a Masters in Computer Science… At a really good university so I want to get at least a 3.67+ GPA or so.</p>

<p>If I get past the courses needed for acceptance into the major, (the next is a similar Structures of Programming 2 except in Java, and also a Discrete Math course) do you think it will get better?
Just wondering if the ones for being accepted in the major are usually the hardest?</p>

<p>I’ve been working through everything myself and going to office hours for TA assistance A LOT (probably the only reason my homework scores are decent)…is that how it usually is, self study?</p>

<p>Ask your professor if there are some old sample exams you can take for practice. Also, try to come up with your own exam questions (and answers).</p>

<p>The exams should be easy since you don’t actually have to code anything. You would just have to write simple statements on the exam. </p>

<p>It takes a while to get the feeling for programming. Once you get the hang of it, you will start to see where you can make better documentation and validation statements to make sure the user doesn’t put in something that can crash your program. </p>

<p>Congrats on the B.</p>

<p>So, you had never programmed before and are finding some aspects of the first programming courses to be difficult. But, you “really want to get a Masters degree in Computer Science” at a top university. Do you have an actual interest in CompSci or are you in it because you think it’s a hot major? Intro courses are rarely boring IMO. It’s when you get deep into a subject that you realize whether you like it (it’s not boring) or love it.</p>

<p>It’s not boring at all, just hard sometimes. All in all, I find it very interesting and I know it’s what I want to study. I’m not some undecided freshman…
I am just worried since it’s not coming to me as well as I’d like…</p>

<p>I don’t think you should be worried at all. Sure, it’s hard at first. But if you really have an interest and persist with it, things will start to make more and sense. Also, don’t take this experience as an accurate depictor of what the rest of your CS classes are going to be like. CS is an extremely varied field, and you may find that you’re more suited for object oriented or procedural programming (like Java and C, respectively). Scheme is a great language, but it’s also very different from the other languages you’ll learn.</p>

<p>It’s a great book and I can tell already that it’s a great class. Do your best and you’ll be fine. Master the concepts in that book and you’ll be able to program circles around the Java/C++ crowd, even in Java or C++. Also study hard and practice. Get help from TAs if you need it. Scheme is such that programs can be often written very quickly. That’s one of the reasons that it’s such a good language to learn CS.</p>

<p>On that note, I love thunks. What a fantastic concept.</p>