2 ms·
I have a fairly new (2 years) computer science degree, from what I feel is a very good program. Even in this program, some courses were definitely more valuabl
by amalcon 19y ago
I have a fairly new (2 years) computer science degree, from what I feel is a very good program. Even in this program, some courses were definitely more valuable than others.
Not long past the point where it was too late to change majors, something astounded me. I discovered a pattern to the valuable courses. It was as follows:
The most valuable high-level courses were the theoretical computer science courses (the foundations of CS series, AI stuff, the sort of thing where you're asked, "How would you solve this problem?"). The most valuable low-level courses were the concrete courses in things other than computer science (mostly math and physics; to a lesser extent, various engineering disciplines). If you think about it, this actually makes sense: the courses about solving problems, following the courses that give you the tools to do that.
If you think about it, there's a good reason for this: Low level courses exist to provide a foundation for more advanced courses. This means that they are not designed for people who already intuitively understand their subject matter. If you already know C, Java, and two or three other languages like Pascal, you can learn Perl, Prolog, and Scheme on your own -- you don't need a professor to teach them to you (though it might help to have someone get you to use macros). You just need to understand that language's "thing" (punctuation, assertions/derivations, first-class functions/closures/continuations) and then it will almost learn itself. If you already know how to build a pointer-based binary tree, you don't need a course to tell you how to build a radix tree, or a red-black tree, or a trie.
On the other hand, the low level courses in other disciplines are designed for people who don't already intuitively understand that area. That makes them perfect for you.
Unfortunately, most universities do try to curtail the obvious solution by enforcing prerequisite courses. This makes little sense from a teaching perspective, but it makes perfect sense from a "raising the average GPA of their students" perspective.
Almost anywhere you go, you'll find the ability to game the system somehow -- be it alternate prerequisites, testing out of things, or taking a minor in CS instead of a major. You need to be able to game the system to an extent. Yet, that's a valuable skill in itself. Just optimize what you're trying to learn, not the best way to get that piece of paper.