<p>“Yeah you can be super technical about the term “computer science” and such, but a bachelor’s degree in CS is not primarily theoretical.”</p>
<ul>
<li>You have a point, but I would contend that the importance and relevance of theory to a CS major pursuing a degree program in CS depends on both the program and the student, to the extent that you can leave with very little appreciation for theory or with a deep appreciation for theory. This can be a blessing and a curse, I guess, but CS programs are usually flexible like that.</li>
</ul>
<p>Take programming for instance. How theoretical an exercise this is depends on how you approach it. You can sit down and hack out a solution to a problem without really understanding how or why it works (even if you show that it does work, for instance, through TDD) and produce binders full of documentation, or you can thoroughly plan and carefully implement solutions, with proof where appropriate. Programming can be an end in itself or the means to an end of understanding theoretical issues - in many algorithms courses, for instance, some simple programming assignments are given, not to exercise one’s programming ability, but to show students how to empirically test algorithms.</p>
<p>The theory courses in many CS programs are fairly watered down to allow those who should likely be majoring in other things slide. These are the very people who downplay the importance of learning the theory. It has always been my opinion that there should be better options available to these people. Perhaps you know you want to work with computers, but don’t want to do EE for whatever reason. Well, Computer Engineering is a start; it attracts a good number of people who really shouldn’t be majoring in CS because they don’t enjoy math, actual math, proofy math, whatever you want to call it. My institution has a major in SE as well. Majors in things like IT and IS have a stigma attached to them that keeps some people who should be in them away, and that’s a shame - they’re fine majors and more appropriate for most people.</p>
<p>In an ideal world, CS majors would study primarily CS, which is a primarily theoretical field. There are applied areas as well, don’t get me wrong, but these areas are applied in the sense that applied mathematics is applied… it’s still mathematics, and applied areas in CS are still CS.</p>
<p>Another factor affecting CS programs is the job market. Most jobs for CS majors are in producing software, and as such, software development skills tend to be overemphasized in degree programs for CS. I guess that’s a necessary evil, but as time goes on it won’t always be so. Bear in mind that CS is by comparison to other technical and scientific fields quite new, and as such it may take several decades to separate from similar but fundamentally different disciplines… SE, IT, IS, CE.</p>
<p>The academic discipline of CS is - and more than that, should be - exactly what I have described above. It is a very precise and very technical term. Degree programs in CS generally make students learn other things because they are more marketable, and learn the actual parts of CS less rigorously because they are too hard for most people.</p>
<p>Sorry for rambling, a discussion of CS education could merit a thread of its own, but… yeah.</p>