Graduate School Without Undergraduate Degree?

I agree with everything that’s been said above, especially about CS not being the same as programming.

Look, I’m going to level with you. No high school student is so advanced that they know everything they’d learn in a BS or BA Computer Science degree. The high school I went to offers courses in parallel computing, artificial intelligence, computer vision, etc. There are students there that have taken all the CS courses, and done research and courses above that, and guess what, they still go and get a CS undergraduate degree, and realize that they have barely scratched the surface. You are not qualified to go into a graduate program.

How many languages you know also does not matter. What languages you need to use on the job will change over the years, and the languages themselves evolve. At both of my internships (one as a research mathematician, one as a software developer), I had to learn languages I had not programmed in before, and quickly, in order to be productive and get my assignments done. In the job I’ll have after I graduate in May (BS in CS and Math, with 2 performing arts minors), I’ll have to learn and be able to use/understand many, many, more, some of which most programmers have probably never even heard of. When I graduated high school, I probably knew about 8 languages. At this point, I’ve used (for class, on my own, or for an internship) more than 20 languages. And I expect I’ll probably have to use dozens more over the course of my career (which isn’t even as a software developer; I’ll be doing specialized, technical work that involves both math and CS skills).

To give you an idea of how much there is in CS, here’s what’s covered in just the senior major seminar at my university (Design and Implementation of Programming languages). One of the main goals is to learn important principles and issues in programming language design. For this, we learned in detail how the following languages work, why certain choices were made, how these produce what some may see as quirks in a given language, and how this creates strength and weaknesses. The languages were: Fortran, Pascal, Ada, Smalltalk, C++/Java, Lisp/Scheme, and Python. We had to be able to program in Smalltalk and Scheme (all majors also already know Java and C++ at this point), and be able to understand/trace through the others. We had to be able to produce pseudocode of what happens when a function is called or finishes, know how run-time stack, heap, and memory in general are laid out in each language, and covered important features in block, functional, procedural, and object-oriented languages. We also studied formal languages, compilers/interpreters, and various important computability theory topics, such as the Halting Problem. All of these topics were covered in depth, and the smallest details, including exceptions to rules, tested. This is just a brief summary of what we covered. While this course does cover more than other courses in our major, this just shows how much is in a CS major. We’ve already had 3 years of rigorous courses in various topics (computer architecture, algorithms, computer security, etc), and there’s still this much that we have to learn. As tough as this course is, it’s nothing compared to graduate studies.