<p>Furyshade:</p>
<p>There are two competing aspects of CS undergraduate programs: one is the theoretical description and understanding of computation in its most basic form, and the other is the practical application of principles to create powerful, robust, and correct software. These are quite different areas, and some even separate them into Computer Science (theory) and Software Engineering (practice).</p>
<p>You could, perhaps, study Computer Science without ever writing a single program. One of the fundamental idea in Computer Science is the algorithm: a systematic (and therefore programmable) way of taking a given set of inputs (the domain) and producing a corresponding set of outputs (the range). In many ways, algorithms are similar to the functions of mathematics, and in many ways they are different. Also, it's not just the specification and creating of algorithms that is of interest, but also how fast the algorithm is, how much "room" it takes up, and whether it is "correct" for all inputs in the domain. Logic also plays a huge role in CS. The main thrust, perhaps, of CS is computability and decidability: what sorts of problems can we compute the answer to? Finite state machines, formal languages and grammars, graph theory and combinatorics all enter into CS theory at an early stage and are there to stay.</p>
<p>By the same token, one could study Software Engineering without ever taking more math than a few courses in calculus. Software engineering asks the following sorts of questions: what is it about software that makes it better or worse? how can software be designed most efficiently? how can code be best written?</p>
<p>The theory of CS, while much more intellectually stimulating, is also the part that employers are least impressed by. Software Engineering skills are fundamental to businesses which make software. Most programs combine CS and SE, in practice, so that students are exposed to a wide range of ideas and techniques.</p>
<p>Programming is something which should not be brushed aside so easily. Could you learn math without ever solving a single equation? Sure you could. Physics? yeah. Could you learn chemistry without mixing a single chemical or performing a single calculation? most definitely. Could you learn biology without ever dissecting something? indubitably. My point is that while you could be a CS/SE major and never write a program, why wouldn't you?</p>
<p>Computer programs are the same thing as mathematical proofs, as has been demonstrated. They are really the same thing. Computer science is a branch of mathematics - discrete mathematics - and it is inherently constructivist, meaning that for something to be true, you have to be able to demostrate it by providing evidence for its claim. Such evidence is the program.</p>