New York Mayor De Blasio to Require Computer Science in Schools
nytimes.com
nytimes.com
Rough thoughts:
* This is great news. I'm not the biggest fan of DeBlasio but this is a step in the right direction. There are too many bright and talented kids who never get exposed to computers or the field of programming. Getting to these kids and showing them that they're capable of manipulating the machines they use everyday is huge.
* There needs to be more effort put toward sourcing qualified teachers. I talked about this in more detail in another comment in this thread but a TFA equivalent might be a good idea.
* I'm pleased this is not a mandate to teach all kids programming. I've seen kids in my classroom who are there because they want to be with their friends. There needs to be a small amount of organic interest on the student's part.
* What will the curriculum be? Is it going to be AP CS which has serious issues around it and over-emphasizes theory over practice? I've found that---especially with high school kids---it needs to be fun and have immediate feedback involved (ideally visual).
Sidenote - if you're a programmer who lives in NYC and wants to make an impact now, consider volunteering for ScriptEd (https://scripted.org/).
This is so huge - it's not just that it's exciting for students and a more rewarding way to show friends & family what you're studying. It's also a great overview of the field: AI, graphics, data structures, performance, network programming, discrete mathematics, concurrency, on and on. You never know what's going to resonate with someone and get them excited about pursuing CS further.
But it's also hard to get through to the CS academia establishment on this. I worked with a professor who struggled for years to get a game programming course accepted by his department. They kept rebuffing him because "games aren't serious." (He eventually left and started a very successful game programming track at a different school).
This was an Ivy League school, and they also seemed overly fixated on theory over practice. I think they had the mentality that in depth hands-on experience equals vocational school. I hope more of the teaching programs coming online now understand how engaging it is to just make fun things with code - and how it can still be a great learning experience as well.
They might argue because it's computer science there should an emphasis on theory over the practice. And while the practice (individual technologies and languages) change rapidly, the concepts moreorless stay the same. There are also software engineering and informatics majors that bring in more practice.
On the other hand, most employers want kids from the "hard" disciplines. And academia knows this and actively promotes themselves based on these metrics. So why not be a little forward thinking and integrate more practical skills into the curriculum like version control, more team projects, more practice with web development, etc? The whole holier-than-thou mentality that you reference is immature and has got to go.
Was this at Cornell? Sounds familiar.
Saturday is a different story.
Anyway, I also agree that computer science might not be the right word. When I was in junior high I was given a year long computer course but it was just teaching how to use Safari and the text editor on the old colorful Mac (that was back in 2003, 2004). But when I was in my 3rd grade in Hong Kong I was already beginning to learn how to use computer and then 4th grade learning HTML using DreamWeaver MX in school. We had a beautiful computer lab, not a classroom with broken chair and outdated computer. I am not a front-end guy but being able to just make a simple static webpage was really awesome.
I think they should teach how the whole agile project life cycle, give tech talk, build a couple projects on their own, think of it as a freshman engineering 101 class.
I wince when I think about the years I spent not coding because of poorly-intentioned education. I'm not sure that a mandate to have that many CS teachers at that level will create positive educational experiences on the net.
(EDIT: maybe just math is the really good example here)
https://static1.squarespace.com/static/51bb74b8e4b0139570ddf...
Thus began my life-long love affair with making computers do what I tell them to do. As a 4th grader, even just the exposure of typing words and having graphics show up on the screen was enough to let me know that this was something I would love.
At that age I was the same kid who typed random characters in my Apple IIe at home pretending to be the G.I. Joe "Sci-Fi" who was "hacking" the Cobra Terrordrome. But somehow the static pixel assignment came across as the slowest coloring book ever and I didn't get the point of it at all. What I would have done for a reference manual or any bit of the internet back then.
I remember hacking Logowriter to trace out a clock's second hand in 6 degree increments over the course of a minute, but my regular teacher thought it was stupid and told me to finish the assignment drawing squares.
We were allowed to play games a bit if we were bored, but otherwise we either had to write something, or make stacks. I mostly made stacks, and while I stuck to the visual tools in Hypercard at first, once I realized how much more I could do actually writing the code myself I got pretty into it. I didn't actually realize I had been doing computer programming until years later.
That might be the most influential class I ever took, looking back 25 years later, and it was so mostly because the teacher got the hell out of the way and let us be kids. Also, I miss Hypercard :-)
20 years ago, learning programming wasn't as important because the technology just wasn't there to make it a good return on investment. But the value of reading and writing was also relatively minimal when it cost a fortune just to make a single copy of a book. If programming is how we turn human thought into machine-understandable commands and subroutines, and more and more of our work is delegated to machines...it's hard to imagine the long-term argument against learning programming.
I think that you are underestimating this. It took so long for reading and writing to become common skills because there had to be a social shift for more people to stop farming and get an education. Shift from one type of education to another is much simpler.
These days, you'd have a hard time finding parents who would be opposed to their kid learning programming instead of just about anything else.
More and more of the job of programming will be handed over to machines. Meaning that the work will become easier and easier and the skills required will change as time passes.
The other issue is the amount of time required to do anything useful with the skill. One you learn how to read you can read books quickly.
If you learn how to code, it'll still take you 6 hours at least to produce anything that would be even moderately useful. If you try to use computers to optimize everything, you'll waste more time on the "optimization."
What? No way. I crank out extremely useful shell scripts in less than 5 minutes all the time. You don't have to use an IDE, compiler and some heavyweight framework just to be a programmer. Cobbling together a quick shell or Python script can let you do TONS of tasks that would be extraordinarily tedious, if not impossible, for a non-programmer.
I think public schools (and schools in general as an institution) face the same problem universities are facing: the obsolescence on such a mechanism to effectively and efficiently disseminate knowledge as more and more resources are allocated for signaling of such rather than acquiring/pursuit of it.
[0] http://avc.com/
I do agree schooling is starting to disintegrate.
http://boingboing.net/2012/08/23/civilwar.html
http://boingboing.net/2012/01/10/lockdown.html
I mean, how do you even convince someone that learning to program is a good idea if it takes jumping through many serious hoops just to set up? The majority of interaction with computers is with locked-down mobile devices. Contrast this with home computers in the 80s that were practically begging to be programmed as they came with little other than a built-in interpreter, or the early days of the PC where user magazines had source code - in assembly language - that people could enter in DEBUG and create small but useful programs.
The walled gardens of app stores have also grown to the point where simply sharing an executable with someone has become an almost taboo act, with some central authority telling the users who to trust.
It's in the interests of the software industry to keep the majority of users computer-illiterate, so they can be profited from. On the other hand, basic literacy is valued by the industry, because it makes it easier to persuade users who know how to read and write (adverts wouldn't work if people couldn't read them...)
Setting up a development environment is an absolute pain in the ass, for a professional developer. But when I was in middle school on my pops pre G3 apple computer (or maybe it was the G3 at that point I'm not sure) I pretty easily figured out how to use a text editor and a preinstalled language to solve project euler problems. Boy those were fun.
I'd imagine access to the computer is a big issue, and only god knows where I found projecteuler for the first time but those sparks are really whats needed. If it ends up getting taught in some stale way as proofs in highschool were taught with lots of rote memorization and none of the art it'll probably end up producing a similar amount of interest.
Also, I presume, as people get older they're less likely in many cases to spend the time to learn a skill which doesn't offer anywhere near the tangible benefit of speaking and writing. Speaking and writing are practiced near constantly just because they're generally the best tools (along with drawing, gesturing, touch) for a job (communication) which must be performed everyday. I can't imagine the future where programming ever hits that level and see it more like the internals of a car with its standard bellcurve distribution of understanding across society.
In fact, I'd say that it's more accessible because it's on a locked down, easy to use device.
...although perhaps it would be a great time to talk about how things used to be different, when such questions come up.
But now you are moving the goalposts.
It is irrelevant whether programs are "first-class citizens." It doesn't stop one from enjoying and experiencing programming, and it certainly doesn't prevent someone from making just as complex and interesting programs regardless of the environment in which they are executed.
The point I am arguing from your original post is the following:
> Unfortunately I don't know if it ever will reach the same level of importance as literacy, because the industry seems to be trying very hard to discourage regular users from ever becoming programmers or even "advanced users"; see the War on General Purpose Computing:
I very much disagree that anyone is trying to discourage regular users from becoming programmers. Whether you are in a sandboxed or locked down environment is an irrelevant implementation detail. Virtual machines can be explored on such systems, even if the real ones can't.
(And, as an aside, Codea for iPad can export a user's project into a native app that can be developed further or uploaded to the App Store. So even environments like the iPad can, and have, produced "first-class citizen" applications. In fact, we published the first game coded entirely on iPad in 2010. It has had millions of downloads.)
This is entirely because of malicious people ruining it for everyone though, not necessarily that the app stores just have the monopoly
Programming seems more similar to car mechanics to me. When the car was first introduced, everybody who owned one knew exactly how it worked and how to fix it. Partly because they were simpler and partly because the early adopter were just more interested. Over time, as the complexity and ubiquity of the car has grown, the general population knows how to operate a car but not how to fix it (save for some basic things here and there).
Similarly with computers. The increasingly abstract operating systems, UIs, and even languages have created stratifications of knowledge across the whole stack (IT, software devs, compiler writers, CEs, etc) . Most people using a computer do not know how it works anymore, just like with cars.
I think it's great that schools have to offer computer science because it's a great subject that young people can really take off with since writing software costs so little compared to other hobbies. But it would be silly to force people to learn to code. As much as computers are becoming the most integral things in our lives, it's just not a skill that everybody needs to have.
It's been about a couple decades since I wrote my first for-loops and if-statements in Qbasic...but even though computers have grown exponentially, not just in pure power, but in influence and capability -- I use the exact same logic and thinking, every day, as an application programmer -- and very close to the same syntax.
Loops and conditionals (and functions, and so forth) are so fundamental to programming that it seems like anyone could learn them -- and use them to some practical effect -- in a few hours of following a few tutorials. But I haven't seen it in the beginners I've taught...It's a profound thing to communicate my exact intent to a thing that only knows, at its core, 1s and 0s...but it's not just the ability to write code, any more than writing is just the ability to make dark marks on a piece of paper. It's the ability to take thoughts and intents inside of me and communicate it to something fundamentally different from me, and yet be understood...in that sense, it's not so much different from traditional writing.
* If it ever becomes mandatory, I also wonder if this could also be a recipe for really hampering kids who are actually interested and talented in this field. You'll have a bunch of untrained teachers trying to corral a group of kids, the majority of which won't be interested in the subject matter. That will end up with dumbed down classes so the majority don't feel uncomfortable and the talented folks also being frustrated at being slowed down and made to do a bunch of busy work.
So don't try at all? I don't follow.
> If this ever becomes mandatory for all students, I believe that it will be a recipe for a lot of wasted time and frustration.
I agree, kids need to self-select into it. Making it mandatory would be a mistake.
Removing everything from the curriculum that "a lot of people are bad at" is a bad idea. Most people are bad at something, there's nothing wrong with trying and failing; what's wrong is not trying when there's so much possibility that might be unlocked in people's minds.
The ability to program, to debug logic, to understand algorithms brought to the general public could be the biggest cognitive advance to society at large since free compulsory education. Frankly, most people take classes in geometry, trig, linear algebra and calculus which never really gels in their brains and they never productively use in their adult lives. Learning how to make computers solve problems elevates and empowers the mind.
Let's suppose that only a third of the population every becomes halfway proficient at writing software. That will be 2.5 billion people! With that many computer literate people in the world, finding teachers for the subject will not be difficult. I wouldn't worry about bright young hackers being crowded out by the dull masses; young hackers have been teaching themselves since there were close to zero teachers who could code.
<bikeshedding> Both titles have merit, both titles have flaws. Granted, in the shorter title, it's unclear that the "requirement" is of the school to offer it, not of the students to take it. In the longer title, who cares that it hasn't been formally announced yet, and it's unclear upon whom the deadline is placed. </bikeshedding>
Can't please 'em all.
Seems to be the real problem here. What kind of negative effect might result from a bunch of unqualified high school teachers teaching CS poorly? Is some exposure better than none regardless of teaching quality?
Is this problem similar enough to math that we can draw on data about mathematics education in schools? You can make a lot more money in industry with a math degree than you can teaching math to grade schoolers.
Certainly, we hear tons of stories about unqualified math and science teachers, and all the harm they do to a desire to learn math, but I'm sure some students get exposure to math that wouldn't normally have much desire to immerse themselves in it.
But as for computer science, like regular science, it will inspire a few kids who go on to learn their follies and produce work in the field and everyone else will either trudge through it or drop it and never have it affect their daily life in any manner so it doesn't particularly matter and is probably better to have those extra inspired children in society.
That being said, a course on the things that will actually effect most every childs life such as what are those TOS things you click away near constantly, where are the privacy settings in facebook and what are the different levels of privacy and what can you do in abusive or threatening situations, how often does personal data get stolen, how to store confidential material in a way minimize potential vectors for attack, etc. That'd be an absolutely useful course and would be best if taught well (as opposed to abstinence only education to continue my thought streams from above).
I'd argue acquiring skills that could take one out of poverty as pretty life changing.
> But as for computer science, like regular science, it will inspire a few kids who go on to learn their follies and produce work in the field and everyone else will either trudge through it or drop it and never have it affect their daily life in any manner so it doesn't particularly matter and is probably better to have those extra inspired children in society.
It's worth trying for the sake of the kids who do go on to make a difference. And even for the ones who decide not to pursue programming as a profession, it is a net benefit for them to know on a high level how a computer operates.
Regarding privacy, 100% agree. This could be a great sub component to a computer literacy course.
On a broader scale, what needs to happen is a TFA like organization for programmers that works with companies and source their employees for 1-2 year tours of duty. This org would train programmers how to teach (good programmer != good teacher) and place these programmers in schools that need them. Most critically, this org would need to convince employers to count this service as part of the employee's total work experience and professional development.
I can see someone who dropped or didn't go to college, but worked professionally for at least 4-6 years in different technical roles would probably take the ~$50k as long as they can have flexibility create their own lesson plans and don't have to teach to some fizz buzz test on pen and paper (part of society's tendency to drive things to the LCD)… might be a breath of fresh air from their typical corporate environments, at least for a couple years.
Do I think something like this will happen, probably not.
We had a few summer training sessions to learn how to be effective teachers, and they have some lesson plans written out for teaching with Snap (a visual language based on Scratch). The high school in our neighborhood wants to offer AP Computer Science eventually, but we are starting with an Intro to CS class first. I agree that it will be hard to find professional software developers who will leave their job to become teachers, so it seems like we are relying on volunteers who have a good work life balance at this point.
Appreciate the blog post on your previous comment, sounds like NYC has its own similar organization. Anxiously awaiting school to start on Thursday :).
Good luck for Thursday.
And being a baseball pitcher requires lots of physics knowledge. If they actually want to teach computer science, then they'll be teaching some math. But this will probably turn into a practical programming curriculum. Maybe we need to accept that vocational schools are actually what our country needs. And a vocational programming course just doesn't carry the same stigma as other fields.
The success of dev bootcamps would seem to indicate they are what's needed. I have mixed feelings here.
> But this will probably turn into a practical programming curriculum.
I would argue that's what it should be if the pathway is to get the student to major in CS (or related). Most kids need to get excited before they get interested. If the hook is practicable programming (a la jquery photo gallery) in HS, then the catch becomes learning the linear algebra that is behind moving a picture from one spot to another.
Who's going to teach, and what will be expected- a credential, a CS degree? Programs that have a shortage of qualified teachers, e.g. special education in California, have some streamlined process, but it still requires a credential.
What will the CS-skilled teachers get paid- the same as others? What material will they use? Hopefully good digital content will help students with teachers of all quality levels be exposed to good lectures and material.
Will universities see even larger increases in CS class demand?
Will poorer students join the middle class with skills gained through programs like this?
Large companies will be so happy when they get a huge increase in their applicant pools, especially more overall women/non-whites/non-Asians, for good pr/stats. And with an increased supply, a decline in price they'll have to pay for simpler/lower-level work. This could have a knock-on effect up the chain over time.
I imagine that when our industry has the next culling, public interest in CS will wane as usual until the next revolution is quickly unleashed by software fueled technology.
And even very basic skills like using Excel, Word and Powerpoint.
Programming to me is an advanced topic in computer literacy.
Fast forward 18+ years, and I'm a successful software engineer at a leading financial firm. Yup, this is a great idea.
So I have a hard time not thinking that all this attention and push to teach programming isn't really a ploy to saturate the computer field with software engineers and programmers to lower their compensation.
IMO it looks like software engineers are getting compensated fairly well , perhaps to well and to close to executive and director pay. Increase the pool of software engineers and the less you have to pay them.
How about just getting kids to pass basic Math and English courses first.