Maybe CS Class Isn't the Best Way To Expose Most Kids To CS 78
Long-time Slashdot reader theodp writes: "If we want all students to learn computer science (CS for All), we have to go to where the students are," writes University of Michigan
Grand Valley State University CS Professor Mark Guzdial. "Unfortunately, that's not computer science class. In most US states, less than 5% of high school students take a course in computer science.
"Programming is applicable and useful in many domains today, so one answer is to use programming in science, mathematics, social studies, and other non-CS classes. We take programming to where the students are, and hope to increase their interest and knowledge about CS."
America's National Science Foundation (NSF) was intrigued enough by this idea to fund Creating Adoptable Computing Education Integrated into Social Studies Classes, a three-year project created by Guzdial and Grand Valley State University history professor Tamara Shreiner, a project which "aims to provide more students computing education by integrating programming activities into social studies classes and to use the computing to enhance students' data literacy." Along the same lines, the NSF has also greenlighted Northwestern University's CS professor Marcelo Worsley's Computational Thinking and Physical Computing in Physical Education for this fall, which will bring computer science to K-5 gym classes.
While the tech giants have lobbied for billions in spending on "rigorous" K-12 CS courses, could it be that the best "CS class" for most K-12 students is no CS class?
"Programming is applicable and useful in many domains today, so one answer is to use programming in science, mathematics, social studies, and other non-CS classes. We take programming to where the students are, and hope to increase their interest and knowledge about CS."
America's National Science Foundation (NSF) was intrigued enough by this idea to fund Creating Adoptable Computing Education Integrated into Social Studies Classes, a three-year project created by Guzdial and Grand Valley State University history professor Tamara Shreiner, a project which "aims to provide more students computing education by integrating programming activities into social studies classes and to use the computing to enhance students' data literacy." Along the same lines, the NSF has also greenlighted Northwestern University's CS professor Marcelo Worsley's Computational Thinking and Physical Computing in Physical Education for this fall, which will bring computer science to K-5 gym classes.
While the tech giants have lobbied for billions in spending on "rigorous" K-12 CS courses, could it be that the best "CS class" for most K-12 students is no CS class?
Simple solution (Score:5, Insightful)
Simple solution. "Computer Science" and "Computer Programming" are two entirely different things. CS focuses on theories and algorithms. But in the real world, we never ever touch those things taught in CS, except on white-boarding interviews. Those topics are mostly boring as hell. Teach more "fun", "exciting", and "interactive" programming instead. Look at the freaggin MySpace generation, and how many of them picked up HTML over night just to give a little sparkle to their profiles. THAT mindset is the direction we need to move to, giving basic copy-pastable scripts for fun little things, that can then be edited and improved upon to customize something social.
Re:Simple solution (Score:5, Insightful)
I touch on many of the issues taught in CS on a daily basis. If you're not, you're either not doing your job well, didn't learn enough to realize that you're using those concepts, or are doing the most entry level and trivial of tasks in the field.
Re: (Score:2)
lambada calculus
That's so over; everyone is doing at least macarena calculus these days.
Re: (Score:3)
When an interviewer asks me something like, "Which is your favorite sort algorithm and why?", I answer this:
"Who cares? Every platform has a sort that was written by somebody smarter than me who devoted their entire career to optimizing algorithms. I'll just use that."
And I always get the job.
CS Students: I have bad news for you. You will spend your entire career putting database column X into textbox Y using framework Z. That is, in the rare times you get to write code. 90% of your career will be mee
Re:Simple solution (Score:5, Interesting)
Your approach might work though. Eventually they'll have to learn to recognize and enjoy elegant code before they'll be of any use.
Re:Simple solution (Score:5, Insightful)
If programmers think everyone should learn to code what's to stop plumbers from thinking everyone should learn the basics of their trade. They probably have a much better argument since pretty much everyone has a toilet and sink, but not everyone has a programmable computer.
Even if you teach programming in primary schools the best use of it is as a vehicle to teach problem solving skills. Being able to think algorithmically is valuable in all kinds of professions even if a person will never write a lick of code in their life.
Re: (Score:2)
The idea that everyone should learn programming is pure conceited idiocy on the part of programmers.
I have never seen any significant number of programmers espousing the idea that everyone should learn programming. I have seen exactly the opposite: large groups of programmers decrying that very notion.
The group that has most vocally argued the nonsensical notion that everyone should learn programming is the corporate overlord group that want to bring programming wages WAY down by drowning the market in cheap programmers.
Re: (Score:3)
The group that has most vocally argued the nonsensical notion that everyone should learn programming is the corporate overlord group that want to bring programming wages WAY down by drowning the market in cheap programmers.
Indeed. But this is pure stupidity and incompetence on their part as well. Cheap programmers are bad. (The good ones will switch careers if wages go down too much. Bad programmers are exceptionally expensive, way more expensive than high-wage good ones. The reason is all the damage they do and all the cleanup that damage requires. Sure, it may take a few years to become obvious, but eventually those that hired cheap coders will pay. And they will pay a lot. Much more than hiring good ones would have cost th
Re: Simple solution (Score:1)
Coding is FUN! (Score:2)
On Mindstorm or Scratch.
Then you get to the real world. A huge tangle of Makefiles with 200 redundant variables. A dozen complex dependencies that nobody understands. And a weird memory corruption that only happens in production. Plus management that "needs" it fixed by yesterday but will not consider spending anything to clean up the mess.
It takes a special type of brain to do that. And a particularly sick personality to enjoy it. Not many people are like that. Which is probably a good thing for soc
Re: (Score:2)
True story. Me, on Friday night, getting a call, "We need you to update production server keys. A developer hardcoded a key on github. Not your product, just need to rotate all keys immediately." Face palm.
Indeed. More stupid than possible...
Re: (Score:2)
The idea that everyone should learn programming is pure conceited idiocy on the part of programmers.
I agree. Probably not on the part of the programmers, at least not for the good ones. But there is really no good reason to tech everybody how to write software. First, it requires real talent (rare) to ever be any good at it. High intelligence is not enough. I know PhD mathematicians that really struggle with writing code. Second, we already have way too many programmers, and most of them are bad. Adding more bad ones is about the least useful thing to do. And third, except for the few talented people, bei
Re: Simple solution (Score:1)
Re: (Score:2)
I agree, do you know who you teach computer science to, only those who are interested, the rest are a waste of time, the reason they are not interested they do not like it and they never will and they will be bad coders who cost more than they produce. Same as for teachers, you should only train people who are interested in teaching and have the right psychological profile for it, else they will be shite teachers their entire carreer and every student in the class doing worse than they could have been. Doct
Re: (Score:2)
The idea that everyone should learn programming is pure conceited idiocy on the part of programmers.
Why did I have to learn Chemistry?
Re: (Score:2)
The idea that everyone should learn programming is pure conceited idiocy on the part of programmers.
Why did I have to learn Chemistry?
So you know on your own not to drink Bleach.
Re: (Score:2)
Re: (Score:1)
Years ago my dad took a computer class at the local state university extension campus. They went on about things like sectors on floppies, and of course he had no friggin idea what they were talking about.
I agree with alvinrod. Kids should also have opportunities to learn to code, but like the BS that art/music/gym classes are, they shouldn't be forced or graded.
Re: (Score:1)
It all boils down to scratching an itch.
You can forcibly teach some minimum standard amount of basic knowledge about the construction, workings, and usage of modern computers--both operating systems and typical productivity software--help relieve the burden of tech support in the future and their own fears and frustrations with technology.
But as far as contributing to computing in general, unless someone is scratching an itch you will not succeed in forcibly teaching them to *want* to solve a problem they d
Re: (Score:2)
So that's why we have so much shit software?
Mathematics (Score:5, Interesting)
The first programming language for most students should be mathematics--basic arithmetic and algebra. All other workarounds just fail miserably, but it is culturally cool to pretend otherwise. Well-meaning educators and career boosting grant seekers alike have been trying these workarounds for decades, and they never work. And it's so obvious why they don't work.
Re: (Score:2)
The first programming language for most students should be mathematics--basic arithmetic and algebra.
Or, instead of trying to transform CS education into an advanced mathematics education...
....we could transform mathematics education into beginner CS.
You can tell that things have been backwards because all the big "mathematician" programming languages, such as found in matlab, mathmatica, maples, etc, are the least popular of all the languages, and have terrible cryptic notations (see all the "operators" in those languages, etc) designed specifically to map to ancient mathematicians notions and pract
Re: (Score:2)
That's been done in quite a lot of CS courses. If you don't get the math, lots of things in programming are (usually poor) reinventions of the wheel.
Matlab etc. have very specific purposes, and are core scientific languages. If you're not doing scientific analytics, then other things may better meet your needs; that's another thing that CS is supposed to teach; use the right tool for the right job.
If you do your games programming in R and C++ for your everyday simple automation tasks, you may not really g
Re: (Score:1)
On a recent test [3 weeks into semester] one person of 28
could not calculate the area of a circle.
Most fail at finding a missing data value when the formula, result and other data are given.
School is not what it was when I grew up, from 1960-1972 then college.
Everything is about passing students because if they don't they don't federal / state dollars.
Re: (Score:3)
Mathematics is not a programming language and it is not engineering. Hence this is about the least suitable way to start.
Nonsense (Score:2)
If anything, schools should drop the algebra emphasis in favor of statistics. A good statistical grounding (the concepts much more than equation memorization) would benefit society much moreso than algebra. But that doesn't have anything to d
Re: (Score:2)
I suspect that by "basic algebra" GPP means the stuff that's taught to 12 year-olds as algebra: i.e. manipulating expressions with variables. And I further suspect that the idea is that understanding what variables are in mathematics will help to understand what they are in programming. I've no idea how true that is, but I think I found the use of variables in mathematics easier to understand than many of my peers because I'd already been programming in BASIC for a few years when we were taught them.
Re: (Score:2)
Re: (Score:2)
If anything, schools should drop the algebra emphasis in favor of statistics. A good statistical grounding (the concepts much more than equation memorization) would benefit society much moreso than algebra. But that doesn't have anything to do with programming, either.
Understanding statistics to any level necessary to not make a complete fool of yourself requires both algebra and critical thinking. Also, they have started to put stats into HS math now, but its so rudimentary that its probably better to just not do it. A little knowledge is dangerous and without algebra, you can't have enough stats knowledge to use it successfully.
Sounds good on paper, will it work? (Score:2)
Not a bad idea, but the application has to be repeated frequently enough that the students remember what they've learned and can build upon their skills. If they wind up, say, using R to do basic analysis in science class, they're going to need to do it more than a few times per semester to actually develop that skill. And it has to be every year,
One size does not fit all (Score:5, Insightful)
Re: (Score:2)
There exists a natural progression from using a program on a computer to computer programming to computer science (which should largely be called data structures and algorithms). The Unix principle made it easy to follow, and to some degree the 1980's microcomputer basic practice of entering programs from magazines. It has a lot to do with control of your own machine; the kind that lets you ask "how do I tell the computer how to do this" instead of "can't the vendor tell the computer how to do this". The be
Re: (Score:2)
Just like you don't have to take algebra to understand the real world, or calculus.
In light of the (mis/dis)information pandemic, one or more classes in probability and statistics would do most people more good than studying either algebra or calculus.
At the least someone seems to be (Score:2)
" less than 5% of high school students take a course in computer science"
and
"could it be that the best "CS class" for most K-12 students is no CS class?"
Re: (Score:2)
5% seems a fair number. I suspect that lots of people don't also take advanced sciences in huge numbers either, as they don't necessarily lead down the path someone wants to take.
I suspect that taking advanced pure maths isn't going to help if you've got a career mapped out in art these days.
So, one person in 20 seems to believe that the hard science (not the fluffy VBA macroing etc.) behind computing is going to be very important to their careers.
No. (Score:4, Interesting)
Re: (Score:2)
Exactly. The worst classes I ever attended were music, biology, physics, and of course gym.
But computers? I was programming in GW-Basic on a Color Computer 2 when my friends were watching cartoons and playing with plastic dolls - I'm sorry, action figures.
You can try to teach kids some subjects, but you can't force them to care about them.
Re: (Score:2)
Being good at programming, like sculpting, painting, drawing, is an art and/or skill that cannot be taught.
Ding ding ding ding! I'm not going to split hairs, as it's largely pointless, but, in my experience, you are 99.999% x 100% correct.
Re: (Score:1)
You either are or are not a programmer and I can not change that.
Those who can do and those who can't teach.
Re: (Score:2)
Indeed. Incidentally, the same is true for all engineering and STEM fields. The established fields simply weed out the bad candidates early. So does academic CS and Software Engineering (the distinction is fluid, no matter what some people claim). But these utterly stupid "teach everybody to code" projects do not. Hence what they will mainly produce is failed coders and really bad ones.
Re: No. (Score:1)
Re: (Score:2)
However, when I took my first interest into programming (half-way through primary school and already had a few years of beginner electronics on me), computers were inviting you to program, because there was no other way to get it do what you want. Yes, there was software, on tape, like games and some office stuff. But those were single applications working stand-alone. No integration, no tool-chains. If you wanted something 'custom', you had to make it yourself from scratch and most computers came with a bu
Re: (Score:2)
If (Score:2)
"If we want all students to learn computer science (CS for All), we have to go to where the students are," writes University of Michigan Grand Valley State University CS Professor Mark Guzdial."
If
A Willie Sutton Approach to Teaching K-12 CS (Score:2)
Asked why he robbed banks, Willie Sutton [wikipedia.org] replied, "Because that's where the money is."
I could have used a CS 101 course when I was a kid (Score:2)
Many of my programs were one huge main() with little thought to organization, functions, global variables, or any of the real basics in general. Just those fundamental building blocks would have helped significantly as a basis for learning other things on my own.
Re: (Score:2)
What is wrong with one huge main()?
I used to code that way. But since I have become more experienced I now reference as many complex packages as possible in that main(). My resume is very think, which fortunate as I need to keep moving fast...
Going where the Students are.. (Score:2)
Means teaching them an aspect of computing. This may well not be Computer Science at all.
Basic programming is not Computer Science, it's essentially knowing a little bit about state and flowcharting, and knowing how to use a simple language to implement that flowchart.
Or using elements of a statistical language to improve analysis for the various subjects that require statistics and analysis as part of their syllabus.
None of that goes deep into the science of computing at all, in the same fashion that hav
Logic ... Teach Logic (Score:2)
CS is all theory, Programming is all about the how. If you want to get students to understand how a computer THINKS, teach it logic. I mean the basic programming is VARIABLES, IF, WHILE, FOR, and CASE statements. If you teach them how to do those things, students will understand the basics, can go to any programming language, syntax, and not be so afraid of CS theory.
A phrase I used on all my college students teaching them C 101, "A computer is stupid, it does exactly what you tell it to do, faster than
Re: (Score:2)
CASE statements
B..b..but Python!
Bleah (Score:2)
Sorry, but, no. Having worked at a computer science lab help desk back in the 80s, I can tell you that some majors shouldn't be writing code. How this should work is that the non-CS people should be hiring the CS people to write code for them.
Re: (Score:2)
CS should be in K12, BUT not as it is (Score:2)
As a member of the CS standards committee for CA (a review group, which had zero to do with formulation of the standards), I can say unequivocally that they are not fit for purpose.
They are a hodgepodge aimed somewhat at the AP classes, and with NO exit point.
Universities in CA did not want to get involved. And thatâ(TM)s where the buck stops. Universities do not believe in CS education in K12, yet bitch about the students they get. To this end they prance about putting together âoeseeker friendly
coding for other people's gain (Score:2)
Maybe CS is too broad a field (Score:3)
We no longer teach "engineering", we separate electrical, mechanical, chemical etc because the required knowledge is very different.
Maybe its time to stop thinking of CS as a single field. There is some commonality, but the skills to build a user interface on windows are very different from those to program the embedded controller on a drone, are different from those to write a kernel level driver are different from developing a new machine learning algorithm. Writing in some high level toolkit is different from writing C or similar directly to hardware.
Re: (Score:1)
the required knowledge isn't actually very different. It branches off at some point with some domain-specific knowledge, but the bulk of work is just continued self-learning and application of the scientific method.
Sounds right for today's world (Score:2)
I'm not a "classically trained" computer science major. I graduated quite a while back with a chemistry degree and wound up in systems engineering/architecture. CS was and is primarily a math and logic degree, and CS majors learned tools and languages as a side effect. That was back when you needed a ton of backstory to do anything with a computer, and the tools were pretty primitive.
Fast forward to now and unless you're writing embedded C code directly to hardware, it's pretty easy to slap a ton of tools a
"Educators" unleashed are kids with hammers (Score:2)
Nearly everybody has heard the line that if you give a kid a hammer, he will think the whole world is made of nails. There's simply an aspect to human nature that makes people fixate on some fave thing, usually within their field. It's for this reason that many institutions have structures to them which are designed to counter the impulse. In a firm of engineers, who by nature would tend to fixate on their engineering, you have managers who have schedules and budgets and a boss who sets an agenda. Unfortuna
Re: (Score:2)
The kids were on your law again this weekend, weren't they?
Re: (Score:2)
The kids were on your law again this weekend, weren't they?
Spell check strikes again. Perhaps the GP has a point.
Teach kids logic and critical thinking (Score:3)
and CS will just be something they can do if they feel like it.
CS and CP (Score:2)
Algorithms and programs are just tools to achieve other STUFF.
Artistic, engineering, accounting, management, geography, history, math, whatever,
that looks like a list of standard schooling subjects
and they could all fit in a bit of CS or CP.
"We have to go where the students are" (Score:1)
That would be pubs and parties.
I failed CS class miserably (Score:1)
We were learning C at the time. I got an F, because I didn't do any of the assignments. It started my career in computer science, and I went on to become a test engineer for several of one of the big tech company's skunkworks projects, working on projects using embedded microprocessors.
This applies to every other subject too (Score:2)
"We have to go to where the students are" applies to every subject you want to teach.
The best way to Subject X is not to have a class on Subject X, but to find a way to relate Subject X to what the student is doing. I taught my pre-schoolers multiplication while we played with Legos by showing them a 3x2 lego base and asking "how many studs are on this one?" Then 3x3, 3x4, etc. When they got to first grade, the concepts of area and perimeter were natural and obvious. While other students puzzled on which
Here we go again (Score:2)
problems and solutions (Score:1)
Yeah, thanks (Score:2)
"Programming is applicable and useful in many domains today, so one answer is to use programming in science, mathematics, social studies, and other non-CS classes. We take programming to where the students are, and hope to increase their interest and knowledge about CS."
This is, literally, the reason BASIC was invented, to allow people in non-STEM courses to do practical programming. That decision was made in 1961, and by the mid-1960s, Dartmouth had a complete set of coursework that was used in practically
Computationally build data visualizations (Score:2)
You can accomplish the same thing with Tableau (hint: that's what people use in the real world) and they would go much farther.
A poor idea (Score:1)