Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Education

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?
This discussion has been archived. No new comments can be posted.

Maybe CS Class Isn't the Best Way To Expose Most Kids To CS

Comments Filter:
  • Simple solution (Score:5, Insightful)

    by darkain ( 749283 ) on Sunday September 20, 2020 @04:45PM (#60525328) Homepage

    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)

      by AuMatar ( 183847 ) on Sunday September 20, 2020 @05:04PM (#60525368)

      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.

      • 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)

      by phantomfive ( 622387 ) on Sunday September 20, 2020 @05:04PM (#60525372) Journal
      I used to think everyone should learn programming, but the end result was that now I have a lot of coworkers who don't enjoy programming, and are only in it for the money. Worse, I have to use frameworks written by such people.

      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)

        by alvinrod ( 889928 ) on Sunday September 20, 2020 @05:43PM (#60525470)
        The idea that everyone should learn programming is pure conceited idiocy on the part of programmers. If we teach kids anything about computers it should be practical information such as protecting their data and avoiding the usual sort of online scams we see all the time. Even that's probably asking a lot.

        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.
        • 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.

          • by gweihir ( 88907 )

            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

            • 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.
              • 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

              • by gweihir ( 88907 )

                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...

        • by gweihir ( 88907 )

          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

          • Talent is talent. Elite programmers adapt effortlessly. The problem is, there is no teaching the things that make great programmers program. It's no differant than professional sports. I have worked with so many people who chose programming as a career path (not out of life long passion), and it's so obvious to me that they just don't have the natural talent to succeed.
        • by rtb61 ( 674572 )

          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

        • The idea that everyone should learn programming is pure conceited idiocy on the part of programmers.

          Why did I have to learn Chemistry?

          • by sfcat ( 872532 )

            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.

          • Yeah, I mean who needs to learn science *eye roll*
        • 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.

    • by Anonymous Coward

      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

    • by mvdwege ( 243851 )

      CS focuses on theories and algorithms. But in the real world, we never ever touch those things taught in CS

      So that's why we have so much shit software?

  • Mathematics (Score:5, Interesting)

    by twistedcubic ( 577194 ) on Sunday September 20, 2020 @04:48PM (#60525336)

    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.

    • 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

      • by malkavian ( 9512 )

        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

    • by wap911 ( 637820 )
      A close friend teaches 3rd year college pump engineering.
      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.
    • by gweihir ( 88907 )

      Mathematics is not a programming language and it is not engineering. Hence this is about the least suitable way to start.

    • Algebra? Algebra is and should be a "first programming language" ? What? As someone who's taken math through calc 3 / ordinary differential equations / linear algebra and gone on to do a fair bit of programming in the workplace, that sounds like a lot of nonsense.

      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
      • by pjt33 ( 739471 )

        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.

        • Simple stuff with variables in math is taught in a middle school class known as "pre-algebra". High schoolers generally take algebra 1 and 2 (and sometimes precalc), which as I recall involved memorizing the quadratic formula and a variety of other rules, graphing, simple derivatives problems, etc. I guess the concept of a variable is important to wrap your head around, but it's introduced pretty early and comprises a small part of the curriculum.
      • by sfcat ( 872532 )

        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.

  • 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.

    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,

  • by passionplay ( 607862 ) on Sunday September 20, 2020 @05:21PM (#60525414)
    Computer Science is not Computer Programming. And neither is "Using a Program on a Computer" , the same as Computer Programming. If you want someone to be proficient in using Excel, they don't need to take Computer Programming. If you want them to be proficient in VBA, they don't need to take Computer Programming. If you want them to have a career in writing software (notice I did NOT say developer), have them take Computer Programming. If you want them to lead a team of software writers, or architect solutions or develop new ways of doing things using computers, have them take Computer Science. If you want them to build new computers, have them take Computer Engineering. If you want them to lead a team of engineers and a team of software writers, have them take both. Just like you don't have to take algebra to understand the real world, or calculus. Basic functions is good enough. The rest is empirical for most people. Same applies to computers. Teach at the level required. And let them know where to go to learn more. Create the itch to learn. Don't force it on them.
    • 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

    • 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.

  • thinking outside the box.
    " 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?"
    • by malkavian ( 9512 )

      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)

    by bjwest ( 14070 ) on Sunday September 20, 2020 @05:42PM (#60525468)
    Computer Science should not be taught in the grade schools. An intro to computer programming, with the grade not counting towards the GPA, perhaps. Being good at programming, like sculpting, painting, drawing, is an art and/or skill that cannot be taught. Introduce the students to it then, based on whether or not they have an aptitude AND interest in it, allow them to take further courses if they so desire.
    • 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.

    • 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.

    • by wap911 ( 637820 )
      My same feelings.
      You either are or are not a programmer and I can not change that.

      Those who can do and those who can't teach.
    • by gweihir ( 88907 )

      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.

    • I loved both AP c++ classes I took in high school. Also basic and pascal. I programmed as my summer job for two years before college. All of this was elective though. Of course it should be taught, just don't think anyone can do it.
    • by jiriw ( 444695 )

      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

      • by bjwest ( 14070 )
        When I say intro to computer science/programming, I don't mean to teach them how to type or use the mouse to point and click, I mean what you mention in your last paragraph. Maybe the first day or two you can show them how to use the mouse, and pressing the 'a' key will result in an 'a' being displayed on the screen where your cursor is, but if they need more that that, send them to Study Hall because they're not going to learn a thing in the class.
  • by clovis ( 4684 )

    "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

  • Asked why he robbed banks, Willie Sutton [wikipedia.org] replied, "Because that's where the money is."

  • I learned on my own before the Internet was a household thing and I wish I'd had a CS 101 course like I took in college.

    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.
    • 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...

  • 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

  • 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

  • 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.

    • Yeah, I used to tutor CS in the 80s. PL/I on punch cards baby. I had two gals come to me for tutorial, and they seemed extraordinarily clueless. I asked them what their major was, and they said they were EEs. Wow - I had never met EEs so out of touch! I asked about their curriculum, and they explained that they were Elementary Ed ;-) I was able to tailor my tutoring to THAT kind of EE, and they did fine in their coursework!
  • 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

  • Back in the day it was sewing for all, or maybe typing for all. If you were really good you could join the pool of accounts and get your very own pencil. The eraser was extra, of course. They aren't paying for your mistakes!
  • by joe_frisch ( 1366229 ) on Sunday September 20, 2020 @08:02PM (#60525860)

    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.

    • 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.

  • 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

  • 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

  • by fredrated ( 639554 ) on Sunday September 20, 2020 @11:28PM (#60526272) Journal

    and CS will just be something they can do if they feel like it.

  • 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.

  • That would be pubs and parties.

  • 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.

  • "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

  • What are you going to teach kids next? Teichmüller theory? Computer science is a branch of mathematics. I.e. something tackled by professionals in the field. Not by high-schoolers. Don't call "elementary computer programming" "computer science" - they are two vastly separate things. This aside, are elementary computer programming skills that valuable?
  • CS is just another tool to solve certain problems...maybe the approach to teach tech should be totally different...from the student POV, the problems come from paper and books.......I would love to see a 'Walter Levin' approach to CS! That would be nice!
  • "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

  • "This project supports students computationally to build data visualizations in history classes, with programming explicitly." https://www.nsf.gov/awardsearc... [nsf.gov]

    You can accomplish the same thing with Tableau (hint: that's what people use in the real world) and they would go much farther.
  • I feel that most people would benefit far more from being required to pass a few philosophy classes. Rather than trying to back door philosophy into them through CS. If someone can't even describe a problem in an organized manner how on earth do you expect them to be able to express a solution in code with any degree of success? The difficulty encountered so often in collecting accurate user requirements should tell us that if nothing else.

Remember to say hello to your bank teller.

Working...