You don't need much equipment to teach CS. Basic machines will do. And there is no need to spend any money on software these days (f/oss). I worry that this money is less an educational initiative and more a handout to those companies who sell services to schools. Which organizations are behind this pledge?
I'm reminded of L.A. Unified and the iPad debacle:
http://www.latimes.com/local/lanow/la-me-ln-ipad-curriculum-...
They bought over 120,000 iPads, they paid above retail, and nobody ever thought of implementing a policy assigning liability or establishing any procedure in the event of damages or theft. To iPads. That were given to the children of low-income parents. In low-income neighborhoods. In Los Angeles.
Another few hundred million dollars went of course to an overpriced and ineffective Pearson curriculum. Another few hundred million to "improve internet connectivity in schools."
All told they spent about $1.5 billion -- not nationwide on colleges, but in just 1 school district (LA Unified) -- and we really have nothing to show for it whatsoever. Apple made some money, Pearson made some money, some company that makes expensive routers probably made some money, and the citizens ... well, not so much happened for us.
If students actually had a choice in how education funding was allocated, they would spend it directly on higher teacher salaries to pay for the additional teacher labor hours necessary to receive individual one-on-one instruction.
They wouldn't spend it on proprietary learning materials, large classrooms, large facilities, large administrative offices, and large campuses.
Get rid of the "smart classrooms" and allow students to pay directly for instruction with a student\teacher ratio of 1.
I think iPads are wonderful devices, but to think a school would buy them for their students just seems stupid and short sighted. I think Chromebooks offer the most compelling class room solution. They are hyper secure, come with a keyboard, and extremely easy to manage and share.
Who cares if kids install new software or screw something. I'd argue that this is what they actually should be doing, instead of running some crap overpriced "educational software" on locked-down hardware.
> How much of [the pledged
> 4,000,000,000 USD] will go
> to good teacher and interesting programs?
It looks like about 1,000,000 USD will go directly to educators. [1][1] https://www.whitehouse.gov/blog/2016/01/30/computer-science-...
I think FOSS should be considered, but more important is that they study which software gets the best results and pay for that if needed. Also, let's remember that FOSS often is not user-friendly and most students have nothing close to the typical aptitude found on HN, nor the interest, nor the expertise and years of experience. Most will not grow up to be professionals in the IT industry. Emacs and Vim probably aren't going to yield the best results, for example.
IMO there is no need to pay for programming related software in an educational environment
Forcing everybody to take part in computer science education is probably going to frustrate the hell out of most people (make them feel stupid and annoyed at having to do this stuff) and dumb down the curriculum for the small percentage of kids who would naturally thrive at this stuff.
Also, given the insanity in the education field, I don't see too many actually good computer science teachers wanting to be there even if more money is being thrown around. If I had to guess, a lot more career minded Machiavellian types are going to be trying to grab onto the gravy train and get some of these gigs and the side effect of this will be that the kids get even crappier teachers.
Like most government programs, on the surface this sounds good. I could very well be wrong, but like most government programs it will probably end up costing more money than planned and have the opposite of its intended effect.
Also, the existing programs are finding that you don't need, or even want, computer science teachers to be teaching kids. You want professional educators, who understand children and their development, to teach kids. Again, we're talking a basic level of curriculum, so having a professional elementary educator learn a new curriculum is working quite well already.
As far as actually developing that curriculum, code.org is a really good basis for it, which many local programs are using. most supplement it with additional material, and I know of at least one program that is funding grants to districts to develop their own local programs, while at the same time formalizing curriculum in a way that they can be shared nationwide with districts that have not yet had the resources to create their own.
This is not a new idea coming from the government that needs to be tried - it is an existing idea already succeeding in some districts that may receive funding to expand.
Basic Java Programming is waaaaay easier to learn to any one of those.
Isn't the same true of math, which we already teach in schools extensively?
Evidence would suggest that most people don't really have the abstract thinking skills necessary to do math either.
It's just like you said. Math frustrates the hell out of most people, and probably makes them feels stupid.
The education system in North America is just not ready for this.
For most kids, math is way more interesting if you can move past generic formulas and into real-world use cases. I remember continually asking math teachers "And what would I use this for?" and never getting an answer which left me super-frustrated and uninterested.
Instead of breaking them out into different "tracks", integrating math, logic, and CompSci into existing courses might produce some interesting results.
It's quickly becoming more and more important to be familiar with these concepts, because electronics are getting more and more complex and their use cases are becoming more and more universal by the day.
It's OK to have computer programming/computer science available as an elective, but with the way we seem to struggle just to get kids to be able to read, write, and think competently we don't need to be piling on.
Kids need to know what they've always needed to know: how to read, write, express ideas, think logically, and have a decent grasp of math, science, history, and their responsibilities as adult citizens.
I have never seen a kid who had any trouble picking up an iPad, a video game, or sitting down at a computer and working out how to do what they need to do. You don't a need computer science education to use technology. K-12 required subjects should stay focused on the essentials. Keep stuff like Computer Science as electives for those who find it interesting.
Just teach kids how to think in math and they will take to most CS topics like fish in water.
Also, you do not need to know Calculus, or pre-calculus, or trigonometry, or geometry, or algebra, or pre-algebra in order to build, say an Android twitter app.
Unfortunately, the problem isn't "US public schools lack {{important thing}}". The problem is that US public education is deeply broken.
It's interesting to see the momentum living wage/minimum income campaigns are getting. But education equality, for which there must be a better term, isn't often brought up.
At the school I'm in, when a kid with any potential comes in, the only course of action is to to help her transfer out to a school where she will actually learn something. Sadly, this is not the exception - there are literally millions of kids around the country in similar schools.
Why aren't they learning anything in your school? What should the school be doing that they are not doing now?
Secondly is the demographics. Inner city kids are often from low-income single-parent homes, living with foster parents or extended relatives, moving a couple of times a year, one or both parents may be incarcerated. Being around substance abusers is another big problem. Education is really low on the list of things they or their parents care about. And it's impossible to fix that at school.
Public education should serve some practical purpose: teaching kids the basic skills everyone needs to be productive in the workforce and to contribute as citizens. To that end, I'd advocate taking courses away instead of adding them. Math and science education in K-12 is a disaster and a waste of time for all but a small fraction of kids. We'd be better off taking those out, shortening mandatory education to K-10, and letting kids who actually want to go into particular fields study the relevant coursework when they're old enough to actually learn it properly.
Of course, I also don't think we've succeeded in that goal with math and science either. Physics was a requirement in high school, but our physics classes in college taught everything from the ground up because god only knew what kids learned in K-12.
http://www.overcomingbias.com/2009/07/stupider-than-you-real...
It's insane to me that we spend so much effort trying to teach kids subjects like algebra that they'll never really understand and that 95% will never use again, and we don't teach courses in European history, formal logic, or Bayesian statistics--subjects that would give kids practical insight into issues that affect them directly.
Regardless of the reality of capitalism, work must be done in order for people to eat. That work could be actually plowing fields and picking fruit. Preferably, it is building and configuring machines to plow and pick.
Public education should be about enriching lives. A large part of that is teaching people the skills they can use to satisfy material needs.
All of this remained true under governments that humanity has so far built which strive to abolish capitalism. If you insist that we should not try to improve the human condition until we have abolished capitalism, then it is your burden to explain how to do that.
More people who can program means that programming is a less valuable skill and that programmers are compensated less. And cheap labor is the holy grail.
Things like this are pushed by the business elite and then sold to the public by politicians as enabling a middle-class lifestyle. Which will be true, for a little while, in some parts of the country. Already that is barely true in other parts of the country. The next state over from me, junior developer wages start at 25k and rise to the mid-50s as you become more senior. Yes, the cost of living is lower, but not that much lower.
I doubt truly substantive change can be made in the developer market through increased government funding of the curriculum, but they will find other ways.
I'm not sure that more schooling is the answer, but I do feel like we are always strapped for talent. The people who pass are usually spent a significant amount of time teaching themselves.
I've probably done > 100 interviews, and it's hard to see the correlations. Man, I so wish I would have kept records.
Of the many people that I've worked with, I'd say < 0.5% have been 3x programmers, maybe 5% have been 2x programmers, 20% have been 1x programmers, and the rest have been ... meh. (In comparison to me, and I'd guess that I'm probably a 3x programmer.) And, ALMOST ALL of these people had successfully passed an algorithm and programming based interview.
I am curious how you judge "interest."
And they didn't take yours. I don't mean to be critical, but in my experience, when a company says they pay "market prices", they mean the market in their imagination instead of the real market. Maybe the offer wasn't big enough. There was some reason those candidates turned you down.
And sure, maybe you couldn't afford to make bigger offers. Not all businesses are viable. If I could hire labor for $0.50/hour I'd own a business, but I can't.
> emc/vmware
VMWare was in the news recently as cutting 900 jobs. Maybe they are hiring. In which case I expect we would find that expensive senior developers are being laid off and cheap new grads are being hired.
Today, every job is your first job. We are all contractors, constantly re-interviewing and justifying ourself to our customers.
And the idiots are in charge. Every founder who needs my help seems to be a 20-something kid who thinks knowledge is something you can pick up at a trade show or week-long intensive at some resort.
Everyone in the United States cannot be a programmer - its going to lead to the same problem we have with law, business, etc. Too many graduates leading to labour oversupply.
Government will always be slower to respond then markets.
So even though right now there is a shortage of programmers - it might not be the case once these student's graduate.
So Govt is always one step behind the movements in markets.
What is more important is helping students understand how important learning is. Even though my skills in programming helps me get paid - I use the knowledge I have in biology ( learnt in school ) to make informed decisions as a consumer. My knowledge in writing helps when I need to explain a difficult concept to my bosses. My skills in mathematics helps me model problems in much more efficient ways.
Being a programmer in a society with no doctors, or chemists is no fun.
Its understanding that the economy is extremely complex - and rather than create bursts of inefficiency in one area - the best thing to do is facilitate the system to perform better - maybe make it easier for labour ( students ) to choose what they want to do with their lives - rather than burden them with student debt ?
I agree. This just seems like an attempt at a poorly thought-out quick fix. The country has a lot of problems with unemployment/underemployment, so they're fixating on to one job category that's "hot" with a high pay/education ratio as the solution.
But since the real solution is to do something effective about economic inequality, misguided quick fixes are what we're going to get.
Plus, the more CS grads, the more competition for jobs, and the less they have to be paid and the more disposably they can be treated. I'm sure big employers are salivating over that just like they do over an increase in the H1-B quota.
This is misunderstanding the future state of the programming professions of the future. This is understandable, since you're merely projecting the current state forward, but things will almost certainly change.
Up until now, the majority of programming jobs have been filled by people trained in CS and we've had to learn whatever disciplines which we're asked to apply our programming discipline to. But as we're able to layer more and more abstractions on top of the machines that do our computing, programming will become much more accessible and the situation will change. In the future, the majority of programming will be done by domain experts who learn enough programming discipline to automate their field. There will always be a small, niche of core CS practitioners that advance the state of the art of the tools used at the higher levels. But they will be that will be a very small percentage of the workforce.
The important thing isn't that we create more CS graduates. That will cause the problems you foresee. What we need to do is ensure that all graduates outside of CS are trained in basic computer programming.
It also means people working in other fields who can more efficiently applying computing to their own domain, either directly or by being better able to identify opportunities and work with people who are primary programmers.to realislze them. That's also a general win.
For example, in the early days of the university in England and France, higher education served to satisfy the market of younger-child aristocracy who needed something to do to make them valuable to their family. It's no coincidence that monastaries, reading, and higher education were very often neighbors, and sometimes part of the same organization- they served chunks of the same market. That the universities started opening themselves to lower scions of aristocracy was a side-effect of how profitable that market could be, and the value that graduates could provide. [0]
In a more modern example, the disciplines of higher education that have less-certain ROI, but are still judged to be valuable, or serve education for education's sake: I would say that those serve the market of people who are either idealistic, or believe they understand some long-term feature of humanity that the 1-year, 5-year, or generational time-scale markets ignore. They pay the price, but they still do hope for ROI of some sort- even if not in cash.
Even more nebulous things, such as very low-overhead charities, serve a market- the market for people to feel generous, to avoid guilt, or to serve causes that the traditional free market overlooks. That so many charities are very high-overhead, or so bad at satisfying the ends they ostensibly aim for, seems to be a symptom that people don't care so much about the assuaging, as the fact that they have attempted to assuage.
So, are there ways to remove education from the capricious, short-term, short-sited nature of the modern free-market? Of course. State action, benevolent organizations, and other more attempts at far-sitedness are a good way to adjust the externalities of education. However, you simply cannot remove education from the market.
"One of the best ways to stifle the growth of an idea is to enshrine it in an educational curriculum." - Hal Abelson[2]
[1] https://www.maa.org/external_archive/devlin/LockhartsLament.... [2] https://www.cs.berkeley.edu/~bh/ssch0/foreword.html
I had "computer science" classes in middle school in France. They consisted of typing classes. I still remember sheets of "QSDF JKLM" or whatever it was that had to be typed x times before moving on to a slightly more complex pattern. I think the class was graded based on how far you got down the sheet by the end of the hour.
Granted, the teacher stipend is inconsequential so it's much more of a volunteer position, but that's significantly less sacrificial than being a dedicated teacher.
No, it's not. You're not going to do better with your English degree than English teacher so there's no disincentive to becoming one. Hence, students get reasonably competent English teachers.
High School CS teachers, on the other hand, have to be completely incompetent or insane to choose to teach for $40k when they could be writing CRUD apps for $100k.
This isn't true in my state.
This will ultimately end up with unqualified teachers teaching computer science while kids are fucking around and playing computer games. What an atrocious waste of money. Why not spend $4B to fix piss-poor American education system so that we can produce graduates who are ready for college and not trying to catch up taking Algebra I or basic reading /English.
To emphasize the second point, I only started programming in college sophomore year due to a requirement in my original major, and would have been too intimidated to take it otherwise thanks to all the other kids that had learned before college (a situation unique to CS). Yet now as a developer I earn more than me or my parents could ever have dreamed, just because my college happened to require I take the course.
I know others who were too intimidated and weren't forced into it. What if they'd tried it out in high school? Maybe they too would have a shot at what is arguably among the best careers in the US (good pay / reasonably low stress / low cost of entry).
Starting salaries for a teacher -- after additional years in school -- are something like a half to a third of a salary for a programmer in the USA, as far as I can tell. The upper bound for salary also seems much higher in industry. So, salarywise, it's a bad choice.
The job is seen as socially important, but not to the degree that enough for amazingly talented people to flock to it in the numbers that are needed. So, prestigewise, its' also a bad choice.
As a result, the bulk of teaching positions are not held by the best and brightest. They're often not even held by the good and bright. There aren't enough people who would prioritize children over their own futures. And as long as teaching suffers from a lack of respectability or a lack of salary, teaching is going to suffer. And before you blame the institutions -- institutions are run by the people who went into this system.
Though I wouldn't say this is malicious I think it may have the same effect. We will get many, many more bad programmers. We still have no good way to tell a good programmer apart from a bad one. We have no licensing, we have no professional organization, we have no standards.
Right now the barrier for entry is really, really low for an upper or middle class person who wants to learn about programming and CS. For the poor, what good is CS if you don't have regular access to a computer? How many graduating seniors in poor communities own their own laptops? Have consistent internet access? I think a pledge like this needs to focus all of its attention on low-income students for it to be worthwhile.
For a while I was enthusiastic about things like Greasemonkey which would have allowed people to modify the software they use on a daily base. But it doesn't seem to have taken off, and presumably web clients are increasingly more complex so that "greasemonkeying" become too complex, too.
Long story short - I'd be happy to hear about examples for ways that non-IT-people could improve their lives with programming.
I have even considered to donate part of my time to solving such problems, choosing from user-submitted problems.
I also had a mediocre programming class in 10th grade at the Sr. High school taught by a part time business teacher. We spent a semester programming in Basic on a decade old IBM box. You can guess which class was the better influence on my decision to go into CS full-time.
The frustrating thing was that there was an entire lab full of 5-6 year old Macs that we were not allowed to touch outside of typing classes, so the decision to use the crappy 10 year old non-GUI machines was basically curriculum related.
The point being, teachers are important (and this initiative won't help with that), but even getting some good tech into the hands of students would help more than you realize. There are still schools with not enough resources to teach a decent CS course or more than a vague idea of what kind of curriculum would cut it in the real world.
Your money. Not his money.
My year had 60 students and I'm the only one studying CS/working in the industry. I'm pretty sure your, mine and everyone's wage will be alright.
Yes, only an anecdote, but it's not like everyone is switching from their dreams to become a doctor/lawyer/pilot/xyz to a CS job just because they had a HS class.
First of all, teaching everyone computer science will not create more programmers. I doubt that's even the intent.
Second, if there were more programmers, there would eventually be more jobs.
More business people would realize the amount of surplus (assuming it ever happens) and they will find ways to utilize it.
or, more technology startups could spring up.
There are still a lot of problems in this world that technology can solve.
I think that the learning curve between "able to automate simple things in Excel" and "doing software development as a career" is high enough that it's not going to do much to wages.