I don't understand why jobs and curiosity have to be so starkly opposed.
I studied mechanical engineering, and I consider that a degree for anyone who's curious about the world. If you want to have a strong foundation to peel back the layers of existence, you really can't do much better.
I think one thing we sorely lack in modern education is a strong minor system. Students could easily get their well-roundedness by obtaining minors in subjects that interest them, and if the subjects are quite different from a job getting major, then all the better. I believe Paul Graham would say this is how startups happen.
Furthermore we need a strong system of technical minors as well. If a bootcamp in SF can get you an entry-level dev job, then why shouldn't a minor in CS train you as a web developer? Or why couldn't a sociologist minor in UX?
> I don't understand why jobs and curiosity have to be so starkly opposed.
One word: money.
> I studied mechanical engineering, and I consider that a degree for anyone who's curious about the world. If you want to have a strong foundation to peel back the layers of existence, you really can't do much better.
Certainly. But to do that, you need to spend four years or more being a financial liability rather than an asset. The standard justification these days is that you'll be more of an asset when you're done, because you're going to get a job as a mechanical engineer.
Or we could fall back to an older way of thinking, and say that everyone ought to spend four years being intellectually challenged. And by "everyone" we mean rich guys, because they're the ones that can afford it, and, really, we don't much care about anyone else.
But in a truly egalitarian society, we care about everyone. So that kind of reasoning won't do. Which leaves us with the question of who is going to pay for that foundation to peel back the layers of existence, and what motivation they have to cough up the money.
> Which leaves us with the question of who is going to pay for that foundation to peel back the layers of existence, and what motivation they have to cough up the money.
Presumably it would have to be the same motivation we had to do public education in the first place: Democracy can't work if the electorate isn't educated.
Now, if that remains a motivation for the elite today is another question.
> why shouldn't a minor in CS train you as a web developer?
Because "Computer Science" and "Web Development" aren't even remotely the same thing.
I mean, if a school wants to offer a Web Development major or minor or vocational certificate program, great, but there's no reason to call it CS, which it isn't.
I hope you don't get too many downvotes for that. You may have been making a joke (and you did give me a good laugh), but for a huge number of students, it's the truth. It's hard for a student to focus on the underlying theories when he or she is having a hard time just learning the tools that are used to explore them in today's world. Other disciplines are similar - although boolean algebra may be the basis for digital electronics, if you don't understand the basics of how to use a breadboard, a multimeter, and a logic analyzer (depending on the class), it's going to make getting through most digital electronics classes nearly impossible.
All of the 'fundamentals' courses - graph theory / data structures & algorithms, compilers / parsers / language processing, number theory, artificial intelligence / machine learning, networking, computer architecture, operating systems, graphics, databases, ... are taught using a programming language. To be able to learn them in today's educational system, where the practical examples are routinely given in the form of code, you must first have a firm grasp of the language employed. I would compare it to attempting to learn history from a book that is half English and half Mandarin when one does not speak Mandarin.
I was actually being mostly serious. I understand that the 'theory' of CS isn't inherently tied to computers, but in practice getting the computer stuff to work is where the vast majority of the time gets spent. Especially when CS100 is in Matlab, CS200 is in java, CS300 is in scheme, etc. That's a large part of why I ended up not studying CS in college, because I didn't have 40 hours a week to spend on a 1 credit compiler class and not fail all my other coursework.
It's weird because I currently work as a developer and I'm definitely deeply reliant on other people who did study CS. But at the same time it seems like a lot of them have sacrificed way more than they're actually getting back. The only thing more cliche than non-technical folks who 'just need a tech person' is deeply technical folks wasting years of their lives building things that it would be obvious no one wanted if only they had a liberal arts background.
> All of the 'fundamentals' courses - graph theory / data structures & algorithms, compilers / parsers / language processing, number theory, artificial intelligence / machine learning, networking, computer architecture, operating systems, graphics, databases, ... are taught using a programming language
You must have been lucky, if you got to write code when you were learning those things. My experience was proofs, proofs, and more proofs. I took an algorithms/data structures course that had no programming assignments whatsoever.
The school I went to emphasized having students practice practical implementations of the theories being taught. I actually was a Computer Engineering major in undergrad, though, so I only took dta structures & algorithms, graphics, and networking from that list. I also got Computer Architecture, but taught from an EE perspective rather than a CS perspective (really pretty much the same thing) ... the biggest difference is that we had to design and build a single board computer for the capstone in that class, and the CS folks didn't (they explored it from a more software oriented angle).
Astronomy is the study of the heavens, not the study of telescopes, although they may be an important tool.
Likewise Computer Science is not the study of programming or computers, it is the study of data and computing. Programming is just often the tool for the job.
Some European Computer Science departments actually call themselves Dataology departments...
CS 101 and 102 are this. After that I found CS to be 90% math, algorithms, and a sampling of some foundational topics such as operating system, graphics, and network programming.
Computer science is not vocational training and not training to be a good programmer. I've found many CS professors suck at programming anyhow, and people who never do much outside the curriculum aren't qualified to be programmers.
Btw, at my school, we had a co-op program. The undergrad program was 5 years long and you took three 6-month co-ops. This is a great way to get practical skills without changing the character of a CS curriculum.
edit: I have to add, plenty of web developers use Java, they just don't hang around HN.
CS departments use Java as a teaching language based on the ease with which a plausible case for its use can be provided to administrative superiors and student customers under the jobs training model.
"Object Oriented and used by business" is enough to sell the student customers who have yet to be trained and an administration that never will.
Useful term: "assignable curiosity". Those of us in the professional class are allowed to use our minds, but to the boss's ends. ("Do you have a passion for unit testing and SOA!?")
My wife's Ph.D. was in (mathematical -- statistical)
sociology. Sociology is the study of
groups of people. So, the role of sociology
in the rise of the Internet
now would be to apply some of their scientific
methods to understanding, say, social computing,
and the social network, yes, including the subject
of that movie, Facebook. Also social
are SnapChat, PInterest, the social graph,
Fred Wilson's "large groups of engaged users",
people and social cases of
network effects, etc.
Or, just what the heck makes a successful
social application? Then how to apply
that understanding to create more successful
such applications?
Likely there is something significantly
social about the success of Apple --
just what is it?
For UX, that would be closer to parts of
psychology.
I studied mechanical engineering, and I consider that a degree for anyone who's curious about the world. If you want to have a strong foundation to peel back the layers of existence, you really can't do much better.
I think one thing we sorely lack in modern education is a strong minor system. Students could easily get their well-roundedness by obtaining minors in subjects that interest them, and if the subjects are quite different from a job getting major, then all the better. I believe Paul Graham would say this is how startups happen.
Furthermore we need a strong system of technical minors as well. If a bootcamp in SF can get you an entry-level dev job, then why shouldn't a minor in CS train you as a web developer? Or why couldn't a sociologist minor in UX?