On the flip side, I get frustrated by my lack of theoretical knowledge on things I deeply wish I knew. I've never taken an OS course, or a databases course. I don't feel like I know Big O as well as I should. I don't know ANYTHING about graphics. I don't know ANYTHING about AI work, or compilers, or anything beyond basic *nix sockets.
Right now I spend my days trying to do linear algebra in the cloud on demand. And I would be willing to bet a years worth of my paycheck that if I had doubled up in computer science I would be better at my job than I am right now.
Also, after my time at university I noticed that I didn't need to be a .NET or PHP developer. I was a well rounded computer scientist with the capacity to learn anything I set out to, which is the point of degree. I learned what I wanted in my free time, the technologies you use shouldn't define you.
[1] http://crossbridge1.blogspot.com/2011/09/does-education-pay-...
Java isn't a bad decision but I 100% believe you should try as many languages as possible, especially from different paradigms. Every language has something to like and most have something you can bring back to your primary language to be more productive.
Happy trails!
It's about as good as any other language, and has more libraries than most. It's also mildly annoying to work with, but so is any language when used as more than a toy.
Over the last decade not much has changed. You'll have a data structures type class although most grads seem to completely forget everything taught. Typically some kind of theory of languages/theory of computing/computability/scaling. Everyone still suffers thru intro to databases complete with explanations of codd-normal forms and drawing E-R diagrams and such. Everyone suffers thru an intro to operating systems class. Everyone has some sort of intro to algorithms, aka welcome to Knuth, class.
"learn to code java" is probably less than 10% of the total class time. All the upper level classes I took demanded some form of working code but they didn't care what language. Remember its education not job training. They thought psuedocode was fine on tests.
Three notable changes: 1) No more discrete math. Huh? Even with discrete math most grads seem mystified by multiple simple conditionals. Maybe its rolled into the first lectures of theory of computing or whatever. 2) No more required systems analysis. Maybe its kinda rolled into "software engineering" ...perhaps. 3) Capstone project senior year type things seem very popular now a days. I donno if that's in addition to, or in replacement of, the liberal arts survey class I had to take in my last semester.
Edit: I maybe should add theres nothing wrong with java. It's just not my choice that's all. And in my country (switzerland) the education system looks little bit different. I started a education at age 16 as software a developer. 2 days school, 3 days work at a software company for four years. Now you add some years of experience and there you are with no degree.. and that's why I wrote my first statement