<p>Yes, I agree with BCEagle91. For instance, in a sophomore level course I had last semester (I took it out of its usual order, but still...), we did the following (basic, mind you... very basic, really) programming exercises to learn C++ (after a 2-semester sequence learning to program via Java):</p>
<ul>
<li><p>Write a text-based adventure video game in the D&D tradition. The purpose of this was to just learn the compiler and basic input/output.</p></li>
<li><p>Write a program which predicts the value of a complicated function using the KNN technique. Again, this was simply to learn some language features... knowing how to solve the problem in Java was assumed.</p></li>
<li><p>Write a program which optimizes certain non-analytic functions using evolutionary techniques (hill climber, genetic algorithm, etc.) This was just for learning about inheritance hierarchies and such.</p></li>
<li><p>Write an API which calculates the return on various kinds of investments. This was just for polymorphic functions.</p></li>
</ul>
<p>Furthermore, each of these projects required detailed documentation of at least 10 pages, and sometimes as much as 50. The system had to be designed completely before implementation was allowed.</p>
<p>In prior courses, we learned all about some basic data structures and algorithms. If you can't code a linked list, N-ary tree, binary search, or merge-sort (for instance) by hand in an hour without looking stuff up, the odds are that you're not as prepared for software as even the average CS student applying for the same job. I understand these things are fundamental and basic, but that's the knowledge you use over and over again in real jobs.</p>
<p>Not to mention the advanced (junior/senior) courses required of CS majors. Any non-CS major should ask themselves if they could write an assembly program to add integers of arbitrary size, or write a multi-threaded application using C with unix, or write a BNF for an arithmetic expression involving decimal numbers, or use a logic/constraint language such as PROLOG to compute the union of sets... the list goes on. These are things a capable CS graduate will know how to do, and the sort of things which others may have to learn on the job.</p>
<p>Not to mention the fact that people who hire CS majors expect them to be more than programmers AND more than scientists. They expect engineers. Can you read, interpret, and write UML diagrams? Do you know what software process is, and why you should use it? Can you write a use case, or a system sequence diagram, or design a suite of test cases?</p>
<p>My point is that it seems unlikely that a few courses in CS will adequately prepare someone in another major to enter the field without considerable on-the-job training.</p>