4 ms·
The point of a top-tier university education in CS is much more the theoretical side of things (lambda calculus, graphics theory, np-completeness, algorithms, d
by akeefer 17y ago
The point of a top-tier university education in CS is much more the theoretical side of things (lambda calculus, graphics theory, np-completeness, algorithms, discrete math, etc.), which most people are less likely or able to pick up on their own. Programming as a skill requires constant practice for years, just like writing, and isn't something you can teach as easily in a 10- or 15-week course.
I would say that especially at higher-end universities, there's also an assumption that you'll figure out the programming part on your own. The rather brutal CS 248 class at Stanford, for example, requires you (or at least used to) write a 3D game using OpenGL, while the class itself is solely concerned with graphics theory, techniques, and algorithms: it doesn't cover OpenGL in the least, and the students are expected to learn it, along with whatever other technologies they need to write the game (input, sound, etc.) on their own.
That means that, yes, you can graduate with a BSCS without being a good programmer. You can also get an MS or Ph.D. in CS without being a great programmer. As a general rule, theoretical computer science and programming are very different skills, and knowledge of one aspect does not confer knowledge of the other. From all the interviewing I've done over the years, I think I can safely say that those rules apply to graduates of pretty much any college, not just Stanford.
- endtime 17y ago>The rather brutal CS 248 class at Stanford, for example, requires you (or at least used to) write a 3D game using OpenGL, while the class itself is solely concerned with graphics theory, techniques, and algorithms: it doesn't cover OpenGL in the least, and the students are expected to learn it, along with whatever other technologies they need to write the game (input, sound, etc.) on their own. I'm in the "new" 248 right now. We got to reimplement OpenGL in the first two projects (in summary: rasterization, texture mapping/filtering, and point light Phong shading (with per-fragment normals, which I believe is more than OpenGL does)). The third project involves using OpenGL to render a .3ds scene, while implementing bump mapping, shadows, reflection maps, and probably other stuff I'm forgetting. Oh, and we still have to make a nontrivial game for the final project, though we are allowed to use OGRE for it. Point is, it's a lot of programming.