The solution is to artificially make top-level education available at the cost to provide that education, not at what the student is willing to pay. You'll end up having to subsidize it though so you can attract top-level professors away from schools making a lot more money per student. So this becomes a public university. Yes, that's right, a conservative slashdotter advocating public universities. In this case, you're using one market distortion (government funding for a public university) to try to cancel out another market distortion (a school essentially having a monopoly on students wishing to attend it).
You are dead on with this. I teach technical classes (Large GIS Database creation, usage and manipulation) on an adjunct basis. I have watched promising STEM students drop out or postpone their education due to a factor of higher costs and harder classes. They receive the same financial packages as a social science or liberal arts student, but have to pay more and have less time to work part time to support themselves. The original purpose of public universities was education for the public good, as a conservative as well, I see little public good in graduating 50 history majors for every electrical engineer. Yes the engineer will make more out of college, but they will also contribute more to the economy a through their work. The 50 history majors consume public resources for a degree that has little chance of landing them a job. Last time I had lunch with one of my history professors (which was my minor in college as I enjoy it), in an average year there is one history related position for every 2500 graduates - so I question the purpose of a public university wasting resources in such degrees. Should they offer degree minors and classes in areas like history? Yes. Should they spend money on an entire program, probably not. Take where I teach, a university of 16000 students, they have 11 full time history faculty and use 5 adjunct faculty to graduate 50 majors and 7 masters a year. If they were to scale back to a history minor and have enough faculty to cover general education and interdependent majors, they would need 4 full time faculty and a couple of adjunct. The savings could hire 4 STEM faculty (they cost more - 35k for a starting history PhD v. 70k - 80k for a STEM PhD) and would better serve the purpose of a public institution. I have no problem letting the small liberal arts colleges pick up the students that really want to study history as they graduate more than enough to cover what the market needs. This would require a shift in thinking about how public universities are run, but it needs to be looked at. It is my personal belief that societally, making STEM degrees cheaper to obtain is good for all parties involved and represents a solid investment by society.
Programming is an unnatural act.