What are the weed-out courses for CS?

<p>What would you consider the weed-out courses for CS majors? I had Computer Science I last semester and it didn't seem too difficult, but by the end of the semester 2/3rds of the class had dropped. We had to pass the final project to pass the class and the class average on the final project (programming a checkers game in c++) was 51%, which means a lot of the people who were left didn't even pass the class. Is CS I supposed to be a weed out for CS?</p>

<p>Generally speaking, the introductory programming classes will weed out many, many people who thought they’d major in CS just because they thought it would be cool. These people are the ones who quickly realize that they don’t like programming, aren’t good at it, or just don’t have the kinds of gifts that makes a person a good logical problem solver. At my school, there are three courses that are more or less programming-intensive, and the projects increase drastically in difficulty as you move up. They get harder to figure out and larger in size, so that people who aren’t 100% willing or able don’t make it.</p>

<p>If you take a rigorous class in algorithms, this will also be a major hurdle for some. By that point, many people will stay with CS even if they have to retake the class. However, some people are just not good at the abstract thinking and writing proofs.</p>

<p>With enough studying, the rest of the courses are fairly straightforward in terms of succeeding.</p>

<p>

</p>

<p>This was my experience as well. The introductory CS class was the weed out for me and all the other CS students in my dorm. When I failed the class twice I decided that perhaps CS was not the major that I wanted to study. Granted, I went into the major without any programming experience whatsoever. The professor did not care what we did in class. If you were able to pass his final you passed the class and if you failed the final than you failed the class. Our final was a conducted using paper and pencil.</p>

<p>I am actually glad I was weeded out as it sent me back to learning the fundamentals of programming languages (this is what I lacked previously) and to my chosen major, computer engineering. </p>

<p>

</p>

<p>I struggle with proofs and abstract concepts. I was reminded of this when I recently took a grad CS class in data flow optimization.</p>

<p>

I think that is typical of a CS class. We had three exams, including the final, and all were closed-book hand-written exams. We had to write two complete programs on the final, plus several code snippets. One of the programs was four pages long and took me a full-hour lol.</p>

<p>I agree…in my school it’s the data structures class (the 2nd and final 100-level class). The first intro class is easy enough for anyone to do well provided they don’t slack off, but the 2nd is much more rigorous and formal. Later on, as AuburnMathTutor said, the abstract/theoretical stuff (such as theory of computation, algorithms, programming languages design) tends to be hard but if you’re determined enough you will get through them. Most of the upper level applied courses require a lot of time commitment and effort, and resemble similar-level engineering courses.</p>

<p>The weeders for my son were the first two CS courses, physics I, II and Calc I, II.</p>

<p>The sophomore year has several math courses which may lose those that want to be programmers without the math to CIS. The junior year has foundations and algorithms which a lot of students have trouble with but will take over if they fail because they’ve already come so far. If you get that far, the senior year should be easy.</p>

<p>introductory programming class being a weed-out?</p>

<p>i guess it depends on school, but that’s kinda funny because you can skip that class if you have an AP credit in my school.</p>

<p>Same for mine. The first weeder course is usually basic data structures. If you can survive the workload in that class, then you have a good idea of what to expect from every programming course thereon.</p>

<p>The weed-out aspect is the sheer volume of work. There are CC students that can skip the first computing course because they took it in CC where it’s 1/6th the work but they won’t be as well prepared later on. The professor that taught data structures got those that skipped Computing I by handing a packet out with all of the Computing I labs which the data structures students were responsible for (80+ programs). If you took computing I, you simply handed in your graded assignments. If you skipped computing I, then you had to do the 80+ programs in addition to the data structures assignments.</p>

<p>Computer organization and design seems to be a weeder at my school, too, though it depends on the professor. I guess that’s kind of fitting, seeing as being good at programming and even theoretical CS topics means nothing when you get into hardware. And if CS majors wanted to do hardware, they wouldn’t be CS majors.</p>

<p>You have to have some appreciation for the hardware for some software engineering jobs. In the past, there were far more software engineering jobs requiring some knowledge of the hardware but there are now fewer architectures than there were two decades ago and less need for companies making their own architectures to make compilers, operating systems, etc. due to ISAs.</p>

<p>A good background in discrete structures does make computer organization easier.</p>

<p>I didn’t say it wasn’t warranted or wasn’t necessary, I just meant that it was not an interest or a strength of a majority of CS majors. I’m a math major who dislikes Physics, but it’s one of my requirements and I’m not complaining - it makes sense.</p>

<p>Weeder at my school is data structures. The classes like Theory of Computation, or Algorithms, however, do make some feel like quitting CS :P</p>

<p>i was thinking about doing computer engineering over civil engineering several semesters ago. either choice i had to take a intro to structured programming course (c++)…that weeded me out of going into comp.engineering. imo, you’re either good at programming or not…regardless of how smart you think you are. i was taking it with people who were full into their engineering major and i was only taking calculus1 at the time…they struggled as much as i did. i dont know, i think you should have at least some previous experience with programming before taking an intro course (it was my first time).</p>

<p>elementG, I think you are right that people with prior programming experience have the most success, but I’m not sure that it is by virtue of having that prior experience. I think that people who are good at it are just drawn to it and, as such, end up coming into the class with prior experience. If that makes sense.</p>

<p>I won’t be taking data structures until Spring 2010. Can anyone recommend a book or something I can study between now and then?</p>

<p>^Or rather, people who are drawn to it become good at it. </p>

<p>Algorithms & Data Structures: The Science Of Computing by Douglas Baldwin seems to be popular. Beware though, it’s 600 pages long.</p>

<p>I would say you have two weed out courses in CS. One if more programming intensive and the other is more theory. So here I would say…our second C++ Class & CS - Discrete Mathematics. Of course there are other hard classes after that ;).</p>

<p>I don’t think prior experience makes you so much better at the programming courses. Sure, for the people who can’t program it would have been nice for them to figure out before registering for the course. But for the people who can, they’re learning it for a first time and are paying a lot more attention to the material than the people who think they already know it. And seeing as tests are really professor-specific, not programming-language-specific, that gives you a leg up.</p>