Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Education Programming

How Should High Schools Teach Computer Science? (acm.org) 151

A high school computer science teacher claims there's an "unacknowledged failure" of America's computer science (CS) classes at the high school and junior high school level. "Visit classrooms and you'll find students working with robotic sensors, writing games and animations in Scratch, interfacing with Arduino microcontrollers, constructing websites, and building apps with MIT App Inventor...

"Look underneath the celebratory and self-congratulatory remarks, however, and you'll find that, although contemporary secondary education is quite good at generating initial student interest, it has had much less success at sustaining that engagement beyond a few weeks or months, and has frankly been ineffectual in terms of (a) measurable learning for the majority of students; (b) boosting the number of students who take a second CS course, either in high school or college; and (c) adequately preparing students for CS college study."

Long-time Slashdot reader theodp writes: In " A New Pedagogy to Address the Unacknowledged Failure of American Secondary CS Education ," high school computer science teacher Scott Portnoff argues that a big part of the problem is the survey nature of today's most popular high school CS course offerings — Exploring Computer Science (ECS) and AP Computer Science Principles (AP CSP) — both of whose foundational premise is that programming is just one of many CS topics. "Up until a decade ago," Portnoff explains, "introductory high school computer science classes were synonymous with programming instruction, period. No longer."

This new status quo in secondary CS education, Portnoff argues, resulted from baseless speculation that programming was what made Java-based AP CS A inaccessible, opposed to, say, an uninspiring or pedagogically ineffective version of that particular curriculum, or a poorly prepared instructor. It's quite a departure from the 2011 CSTA K-12 Computer Science Standards, which made the case for the centrality of programming in CS education ("Pedagogically, computer programming has the same relation to studying computer science as playing an instrument does to studying music or painting does to studying art. In each case, even a small amount of hands-on experience adds immensely to life-long appreciation and understanding").

This teacher believes that programming languages are acquired rather than learned, just like any other human language — and concludes the solution is multi-year courses focused on one programming language until proficiency is fully acquired.

For this reason, for the last seven years he's also been making his students memorize small programs, and then type them out perfectly, arguing that "the brain subconsciously constructs an internal mental representation of the syntax rules implicitly by induction from the patterns in the data."
This discussion has been archived. No new comments can be posted.

How Should High Schools Teach Computer Science?

Comments Filter:
  • by serviscope_minor ( 664417 ) on Sunday June 28, 2020 @06:52AM (#60237356) Journal

    How? Well, badly, like everything else...

    High school does a pretty ropey job of teaching maths and English, and foreign languages, and etc so why should computer science be different?

    Sarcasm but you know I'm right.

    Oh also, we need a bunch of the "wE sHoUlDnT tEaCh iT bEcAuSe iTs SpEcIaL" posts, because for some reason a subject that a small number people picked up on their own 40 years ago shouldn't be taught at school even though the modern world runs on this stuff and it's good for functional adults to have at least a basic understanding of things they encounter day to day,

    • ... it's good for functional adults to have at least a basic understanding of things they encounter day to day,

      Like cars?, Microwaves?, Toasters?

      • by Zitchas ( 713512 ) on Sunday June 28, 2020 @07:58AM (#60237516) Journal

        Yes, exactly like those. Thanks to the modern education system, I have a basic idea of how those things work. I wouldn't be able to build or design one; nor could I tell you the detailed physics and formulas describing how they work. But I can explain in general terms how they work, and I think having that sort of general conceptual understanding of the world around us is very valuable.

        In computer science terms; this could be understanding how simple programming works; basic logic operators, If/then/else statements (seriously, people have trouble with that! And that can be useful to anyone in any field that uses a spreadsheet!)... Perhaps learning how to make a flowchart that describes the flow of data and ideas through a program.

        From a generalist point of view, just learning enough that someone can describe what their program does and how it does it in general terms and understand it is something that everyone should be able to do. If they can progress to the point of looking at simple code and actually understanding it even better.

        Although all that being said, teaching proper logic and how to research properly is probably more important.

        I've always thought that the core things that people really need to learn in school are: A second language, Math, Logic, Research skills, and how to interact respectfully with others. Everything else can be learned elsewhere. ("Research Skills" basically boils down to how to identify that one needs to learn something, how to identify sources to learn from, and how to verify that information is correct using multiple trustworthy sources)

        • by CastrTroy ( 595695 ) on Sunday June 28, 2020 @08:39AM (#60237626)

          This sounds a lot like what I did in highschool 20-25 years ago. We started by learning spreadsheets, how to apply formulas to get the computer to do the calculations for you. How to properly lay out data using multiple sheets and how to generate charts using the data and calculations.

          Then we moved on to databases. But not programmer databases like MySQL, SQL Server, or Oracle, but user level databases like Access and Filemaker Pro. Using these databases we could create tables, make queries, make forms to enter data, and basically design an entirely working application without really have to understand any complex coding concepts.

          Then you move onto coding after that. You understand the concepts of data manipulation and getting the computer to do the work for you, and you slowly add more complex functionality learning as you go. I think that this would lead to a pretty good understanding of how computers and programming work, while at the same time teaching useful skills that just about anybody could use at some point in an office environment.

          • by rtb61 ( 674572 )

            The average IQ is one hundred and that means 50% of the population are below 100. Seriously to study computers you need to be plus 125 to do it well. It requires a lot of complementary knowledge maths, physics, writing, editing, logic. Those below 125 have to work hard, those below 100 well, a power tool is the better electronic device for them, rather than a computer.

            Tech companies just want to bullshit and sell hardware and software. There are some that are delusional and think they can flood the market

        • That was the point to BASIC way back in '79 on Apply IIe machines, can you understand abstraction, can you understand logic/controls?

    • by imidan ( 559239 ) on Sunday June 28, 2020 @07:38AM (#60237462)

      I agree that CS should be taught in high school, at least for those students who demonstrate an interest or aptitude. But, having been tangentially involved in teaching CS to high school students, I can tell you that the typical approach is way more wrongheaded than our approaches to English or foreign language. The AP curriculum is the most popular, and it's trash. These days, programming is not even the central premise of AP CS; they're trying to turn it into some kind of social science course with programming as a sideshow. I believe this is because they're trying to make the course more attractive to people who have no interest in programming.

      I'm not saying that every programmer is born that way. It's totally valid to try to lure people into learning about CS. But luring people into CS, teaching them the historical or cultural or social consequences of CS, and then telling them that they now have programming skill? It's borderline cruel. If you want to teach those things, teach them as a co-requisite to the programming class. But don't gaslight students into thinking they're programmers because they can write "hello world" in Lego Mindstorms.

      • by Osgeld ( 1900440 )

        I love how CS is just boiled down to programming these days and usually only in a couple simplistic languages

      • by Ichijo ( 607641 )

        These days, programming is not even the central premise of AP CS

        Why should it be? That would be like making learning an instrument the central premise of a music theory class. Learning a computer language is a good tool to help you learn the fundamentals, but don't confuse computer science with programming. Computer science is so much more.

        In a computer programming class, they really ought to teach how to use a debugger to help keep students from getting discouraged. Knowing how to use a debugger gives you

        • by HiThere ( 15173 )

          From what people have said, most "Computer Science" courses should really be called "Computer Appreciation" on analogy with "Music Appreciation" and "Art Appreciation".

          Computer Science could reasonably start with programming, but it could also reasonably start with relays. In either case one should construct a half adder to pass the introductory course. But programming isn't Computer Science, at best it's a small part of computer science. (An important part, yest, but by no means the entire thing.) Algo

      • Programming is like a shop class. Some people have no real interest, some do. A three month class can let people figure that out. After that initial class it can be optional and you can begin to sneak in real CS topics if you like. For example data structures and analysis of algorithms.
    • They have been trying to teach CS to highschool student for 8 years and still asking how to do it. CS requires a person to sit still and have the desire to learn, not something children do these days.
      • Kids do sit still when something really interests them. Look at any gamer. Too bad both bullies and unenthusiastic teachers quash the natural curiosity of so many kids.
      • How's that different from, well, any other subject, other than the 8 years being a somewhat smaller number. All subjects are going to require some sort of desire to learn. CS isn't remotely special in this regard.

        It's not like you can learn literary criticism by slacking off in the back of an English class.

    • Yeah I see a bit around here, and its puzzling.

      I do think we ought go back to basics with it. I love python, but I sometimes find myself wondering we could be deploying a bit more rigour. I get C/C++ is probably a bit evil to foist on the youngsters, but how about Pascal? Its got most of the bits we want to teach that in C/C++, pointers , data structures, all of that, but its also a teacher, and wants you to learn to put your variables in sensible place, structure things properly, think about types clearly,

      • I gather the young'uns are sometimes taught scratch.

        I think there's way too much emphasis on specific languages in people's minds. I started with BASIC because... That's what all the computers came with. At the time there was plenty of business use of it too. By the time I finished my undergrad, the main use of basic was a deprecated product from Microsoft for people to complain about.

        On the other hand it wasn't hard to move to another language, since the fundamentals don't change.

        I think there should be ze

        • The main proponents of "usefulness" in teaching are those who want schools to churn out pre-trained worker bees.

          Schools must teach Java, they said, because that's what industry wanted from their workers. Screw understanding, just as long as we have a supply of cheap, entry level programmers who know the syntax and can be plugged into the consultancy and support roles they had already sold to corporate customers.

          Computer science class should teach how computers work, statistics and performance and reliabili

        • I have long advocated Pascal as a teaching langue, since technically you could cover all the ground you'd want to in any course but you wouldn't want stick with it any longer than you had to.

        • Basic was my original language too, as a kid in the 80s, tapping away on my Amstrad (Z80 home computer, similar to the C64 and popular in UK,Europe and Australia). But as soon as Turbo Pascal 3 was "made available" to me (I suspect my computer teacher in year 8 was breaking all sorts of laws giving us copies, but hey it was the 1980s) that was really the first time where I felt like I could do powerful things with a computer.

          In some respects Python is the new Basic. Its simple enough for a child to understa

    • Computer Science is an ancient field of mathematics that existed back when a "computer" was a human being who was paid to crunch numbers by hand. It's proper subject matter is algorithms (mostly of the variety that every modern development platform already provides), techniques for performance assessment (most of which are too obscure to be practical), and an indecipherable notation for representing both.

      "Software Engineering" is a superior fit for the kinds of skills that people need to be effective in th

      • "Computer Science" is not a science and "Software Engineering" is not engineering. Real science is about proposing hypotheses and then testing if they are right and real engineering is about designing something and when it is built knowing that it will work.

        CS and SE do not fulfill these basic requirements. They are both artisanal, in that the skill and the experience of the practitioner is the key to having a good result. CS/SE aspire to their engineering and scientific labels but are currently far from

    • by Revek ( 133289 )
      The problem with teaching it to kids these days is it seems like it has to be platform specific. They pick one of many and that student has to learn it when the reality is if you want to be good at it you have to learn many aspects of IT in order to be considered competent. It also needs a particular kind of mind coupled with genine interest in the subject which is harder to identify. They don't teach computing in schools very well being more concerned with teaching them how to use a word processor or sp
    • The modern world also runs on car mechanics.
      So do high school boys/girls need to learn how to fix a car engine?

      The modern world also runs on food and cooking, so do high school girls and boys need to learn cooking? Or Farming?

      Why Cop Sci is a nice topic: no one should be required to take it.

    • We should take all of the suggestions from Slashdot and eliminate them from consideration, since the average Slashdotter couldn't teach their way out of a paper bag.

    • by vlad30 ( 44644 )
      Where as Teaching was once an honourable profession where someone desired to be a teacher and had an aptitude for teaching (there is more to teaching than just knowing the subject). It is now the fallback for many who didn't get into the job they really wanted. And those who do get in now fewer are willing to get involved in teaching as they are taught to distance themselves from the students some schools regions have combined classes so 2 teachers can vouch for each other . Add in shitty parents and vindic
  • by Anonymous Coward on Sunday June 28, 2020 @06:53AM (#60237360)

    Having a class on computer science is almost as silly has having a class on pencils and pens.

    Better to just have traditional classes (math, science, literature), but to have the kids use computers to solve problems for those classes.

    Write a program to calculate yield on a chemistry lab. Write a program to see in which scenes Romeo speaks more than Juliet. Write a program to find solve the word problems in math.

    Then kids will understand the point of programming --- it's to make their lives easier than doing things by hand.

    • Have students count change.

      "I can't. I don't have a computer program."

    • Computer Science isnâ(TM)t about learning how to use a computer. Itâ(TM)s about understanding the mathematics behind making computers possible (or in high school, building enough foundation to be able to do that).

      Comparing it to a pens and pencils class is like comparing English to a pens and pencils class. They get used - but theyâ(TM)re only a tool to learn the real content.

      • No. CS is the Study of Algorithms. Math and Programming languages are means to that end, not the end itself. The issue is that many kids don't have the right mindset to disect a problem and break it down into smaller problems. If you're one of the many students who hates Story Problems in Algebra, and hated doing Proofs in Geometry, you're highly unlikely to do well at Programming or CS in general.
    • Sounds like they should offer a few different courses. IoT, Games, and programming. I have built numerous gadgets for the house using Pi's and Beaglebones. There is very little what I would call programming involved. I could see a programming course where they wet the appetite with stuff like do a bubble sort of 1 million items versus a quicksort. Or maybe a linear search for a string versus a hash. Fairly simple stuff but could show the power of picking the right algo. Even if the kid does not fully unders
    • by fred911 ( 83970 )

      " but to have the kids use computers to solve problems for those classes."

      THIS... but more.

      High school is much too late. Computer utility starts in elementary schools and methodology should be taught in steps leading to highschool. More importantly children need to be taught how to value, research and understand who is publishing the information they are seeing, along with researching the reputation of the said publisher. Specificity of system operation is and should be an elective subject.

      Reputation of the

  • I have a theory.... (Score:5, Interesting)

    by Pollux ( 102520 ) <speter@[ ]ata.net.eg ['ted' in gap]> on Sunday June 28, 2020 @07:02AM (#60237376) Journal

    I'll call my theory the "MacGyver Side-Effect", because the "MacGyver Effect" is already taken [urgentevoke.com] and means something completely different. My theory is this...

    Whenever a complicated subject is sensationalized to maximize the entertainment value and minimize its complexities of the discipline, a surge of interest in the field will begin, followed years later by a natural decline in interest when the students discover that mastering educational material takes dedication and hard work.

    For me, this happened in my high school chemistry class. I took chemistry, because I thought it would be fun and amazing like MacGyver made it look. But when we spent the whole first semester studying moles and electron rings and atomic weights and unit conversions and more really, really, really boring things, I realized that it just wasn't for me. Now, I think we're seeing the same affect with programming. Sure, you can make programming look entertaining, and you can Construct a framework to support students as they begin to Scratch the surface of the subject (puns intended), but it doesn't actually teach what students need to know in order to become fluent in the discipline. When students finally discover the realities of the discipline, which includes long, long days of staring at a computer screen either writing or reading tens of thousands of lines of code, in addition to hours and hours of debugging said code, that's when reality hits, and people say, "no thanks."

    • natural decline in interest when the students discover that mastering educational material takes dedication and hard work.

      Most the people in my class of 2016 HATED the program for CS and regularly joked about hating it. I go home after writing software to write more software for fun.

    • by goombah99 ( 560566 ) on Sunday June 28, 2020 @09:42AM (#60237744)

      I've coached sports at all age groups over the years and if you are doing it right your job at one age group is not to win games or teach at t high level, it's to make the kids ready for the level of the _next_ years coach. If you are doing that then those kids are going to have fun at their age, and progress to awesomeness. If you don't do that all you are doing is selecting on early aptitude which seldom persists late aptitude.
      This is well studied in sports (most pro athletes have birthdays early in the year), and countries that supress having lots of divisions (A, B, C...) at early ages kick butt in the Olympics because they dodged the early-age selection effect.
      And now studies are starting to show this in other academic areas.
      So if you want to teach computer science in Highschool you need to start earlier and just make it fun. For me writing games was the lure. As you get better your games get more complicated and thus laggy. And it's at that point you, not your teacher, become motivated to figure out how to make them go faster. That's where the switch clicks to Computer science. (is one sort better than another, should I use a linked list or a dictionary?. What the heck is a featherweight pattern? Oh you mean I can do vector ops not just loops? cool!)

      THat's where a kid needs to get to before you can actually teach computer SCIENCE. Up till then it's just familiarity with languages and libraries and things you can do (build a web server! write code to make game mods. Learn to textue a 3d model).

      But if you want to actually start them thinking about optimality and design patterns they have to have some place they see that this solves some problem they had in their exploratory patterns.

      So start early, teach them tools, give them objectives of things to build, but above all make it all about fun and learning at your own pace. Make it an easy A. fun fun fun. they have to want to learn to do better because CS actually requires thinking about things differently and it's not all fun.

    • by rho ( 6063 )

      I took chemistry, because I thought it would be fun and amazing like MacGyver made it look.

      "I'm Julius Sumner Miller, and physics is my business!"

      Thirty minutes of that guy freestyling with a workbench and a blackboard taught me more physics than my one year of physics in HS. We have the ability now to put the best teachers in front of as many students who are eager to learn as necessary.

    • "When students finally discover the realities of the discipline, which includes long, long days of staring at a computer screen either writing or reading tens of thousands of lines of code, in addition to hours and hours of debugging said code, that's when reality hits, and people say, "no thanks."

      I'm sure there are a few that got forced into it, and think it's awesome, and the rest learn that it's not for them.  Sounds like a solid goal for a high school class.
      • You're right, it's not for everyone.

        I tell non-coders two things about programming. First, it requires excruciating attention to detail. Seemingly tiny details can cause problems that are extremely hard to find.

        Second, you are always working on something that is broken. When something works the first thing that happens is you change it and it will most likely break and the cycle repeats.

        Both of these things make many people crazy. The combination is even worse. I have known a lot of people who have all t

    • by gweihir ( 88907 )

      Pretty much this. Also, CS and coding are subjects that need specific aptitude to not be exceptionally hard on even only intermediate level. Most people just do not have that aptitude and it cannot be created. My take is that we already have many more people in these fields than there should be in it. In particular, we have far too many coders and most of them are bad. It would be far better to have a lot fewer coders, but instead they would produce things hat work well and can be used for a long time.

    • by fred911 ( 83970 )

      "that's when reality hits, and people say, "no thanks."

      Yes math is hard. But, doesn't excuse our learning platforms to exclude the availability for students that grock and not to have an availability to to further expand their curiosity. And yes, advanced math takes talent to apply. But, it's just a prerequisite to properly understand how to send code to a processor to execute the function in the most effective manner. I know those that have that ability, they all had childhood paths to explore. If you o

  • In other news, teachers struggle with explaining to chemistry students why it is a bad idea to mix large quantities of ammonia and sodium hypochlorite in a sealed 50 gallon drum in the middle of the auditorium, and the difference between "they're," "their," and "there."And not to Capitalize every other Important word, and that it's "you" not "u."
  • Wrong in every way (Score:5, Interesting)

    by imidan ( 559239 ) on Sunday June 28, 2020 @07:17AM (#60237406)

    I was asked to teach a computer programming/science course at my local high school. I had been involved with mentoring advanced students in semester-long programming projects that they did for credit, and I had mentored several of those students through the process. When the instructor I was working with asked me to teach a CS course, I was initially interested.

    Then, I looked at the AP computer science curriculum. Java was the only language I could use for the "A" version of the course, which is the only technically useful version. There was no option for Python, no option for a set like HTML+JS+CSS, no option at all. Not even any discussion of the difference between interpreted and compiled languages. There was a required section to "teach" about how intellectual property is inviolable and pirating media is a crime (because that has so much to do with programming).

    I was happy to teach CS to high school students, and I recognized that it would be most useful to them if they could get AP credit for it... but the AP requirements were so stupid that I couldn't do it. If we want to teach CS to high school students, we need to abandon the current AP rules and teach it in a more flexible way, and we definitely need to ditch the industry-provided "lessons" about not pirating movies.

    I can easily put together an intro CS course for high schoolers that will get them interested, engaged, and programming. I've done it several times. I absolutely can't do it by following the AP requirements.

    Oh, and memorizing small programs and regurgitating them, as this guy says, is absolutely stupid. I cannot imagine a worse way of learning to program. Learning by rote is for memorization courses like anatomy, it's not for learning skills like programming.

    This guy is even stupider than the people who came up with AP-CS-A in the first place. He's taken the problem and made it worse.

    • by Nidi62 ( 1525137 ) on Sunday June 28, 2020 @07:38AM (#60237464)

      Yeah. Forcing students to memorize small programs and regurgitate them doesn't foster understand of the language or syntax, all it does is turn it into some arcane incantation or rite. Its no different than back when the catholic church used latin: a parishioner could eventually pick up the Latin phrases of the regular liturgy but they wouldn't be able to expand that into actual useful knowledge of Latin as a whole, able to have a conversation.

      • by imidan ( 559239 )
        You are exactly right, and that is a great analogy. The layperson didn't understand Latin, and so the Latin incantations they learned didn't even mean anything to them; they were just a series of magic words.
    • The APCSA course can be made engaging. The standards are pretty broad and even the section you talked about was never tested. It was removed a few years ago. While I didn't use APCSA as an intro course, I used GridWorld back in the day for some engaging projects and I most recently started having the students work on longer-term projects to fulfill a social need. One group made a chatbot to answer questions about U.S. history. Another group made an online game to teach math to elementary students. While usi
    • by reiscw ( 2427662 )

      I understand some of your frustration here. I have taught AP CS A for seven years. My students typically perform well on the examination. There are two AP computer science courses (CS A and CS Principles). Computer Science Principles is aimed at replicating the general education course that most computer science departments offer, and has many of the features you want (being able to choose a language, ethical implications of computing). It also includes some room to explore data science.

      Incidentally, I

      • by imidan ( 559239 )
        I'm glad to hear there's more flexibility than I was led to believe at the time. Incidentally, I don't necessarily have any problem with Java as a first language... in fact, it's the language that we used when I've mentored students in the past. But I also think it's important for programmers to be able to recognize that different languages have their places, there are reasons to choose compiled or interpreted languages, things like that.
    • So you failed to understand the difference between computer science and programming, but luckily declined to inflict that failure on others. I think you should still consider that a win.

  • Sustained interest in any topic requires both inspirational teaching and a receptive audience. And programming, like anything else, requires interest on the part of the student. Not everyone wants to do it, no matter how fascinating others may find the activity (me, for instance). I believe that some exposure in school is helpful -- particularly to understand why thinks don't work as often as they do. But not everyone is cut out to be an AI geek or compiler writer.

    • Not everyone wants to do it, no matter how fascinating others may find the activity

      True, but how true is that for everything else that's taught. How many more students do you think would start to understand math concepts if they had a little programming (ie, applied maths) under their belts?

  • by seniorcoder ( 586717 ) on Sunday June 28, 2020 @07:27AM (#60237430)
    I think we should leave this and all other important decisions to politicians. They have an "amazing" track record at taking good, speedy, non-partisan decisions.
  • by niff ( 175639 )

    Why do we need to teach programming to kids anyway? Only a few of them will ever need it in real life.

    We also don’t teach kids how to repair a car, deliver mail, plan military strategies, perform surgery, fly an airplane, or even how to bake a bread.

    • You teach fundamentals of programming so that people have half an idea of how technogly works. Most people are not chemists, biologists, mathematicians, lawyers, etc. yet we teach those subjects for the same reason. A year or two of programming also helps people not get blinded by goofy tech marketing.

    • For a while now the premise of STEM education has been that there is a shortage of qualified people, so that if we teach the kids programming, it will benefit them by enabling them to make a living. From what I have seen there is a lot of truth to that.
    • Re:Why (Score:5, Interesting)

      by west ( 39918 ) on Sunday June 28, 2020 @08:30AM (#60237600)

      One other (and I think underappreciated) reason for teaching programming (at least in a basic level) is to enhance the personal ability to both process and create unambiguous sets of instructions, a skill that is almost a necessity of our current life.

      It's interesting (and instructive) to watch how difficult many, if not most, people find a set of instructions that is more than 3-5 steps, let alone the 10+ steps it might take to simply get one's TV hooked up, understand the fire-safety memo, etc. (Not helped by the fact that often the instructions themselves are bad.) I see a this in quite a variety of people who suffer under what is almost a form of illiteracy, requiring some external help to navigate mutli-step instructions.

      It's a pretty much vital skill that could be taught using a variety of subjects, and (at least to the level required to function in modern society) it's a skill that the vast majority can learn. (There are parallels to literacy here.)

      Programming doesn't have to be the vehicle used to teach this skill, but it's likely to be the only one that practical for high schools. It's why I believe 1/2 - 1 semester of programming should be mandatory, despite the challenges of finding those who can teach the material.

    • Many of them will eventually be asked to prepare spreadsheets. Most of those will do the job badly. EuSpRiG is still a thing, still collecting spreadsheet errors that cost companies hundreds of thousands of dollars.

      Long ago, I was the stuckee to represent the technical side at a major meeting where they were getting ready to approve/disapprove $10M in funding. At some point I asked to see the test plan and results for the 50-page spreadsheet that was "making" the decision. When told there wasn't one,
  • by imidan ( 559239 ) on Sunday June 28, 2020 @07:29AM (#60237436)

    ineffectual in terms of (a) measurable learning for the majority of students; (b) boosting the number of students who take a second CS course, either in high school or college; and (c) adequately preparing students for CS college study.

    So, the only thing the AP computer science courses are good for is preparing students to pass the AP computer science exams. Sadly, I could have predicted this from reviewing the AP-required curriculum.

    FTA:

    For seven years running, though, I have observed that this problem [of spending too much time dealing with syntax errors in unfamiliar programming languages] disappears (1) after students memorize small programs containing newly-introduced syntactic features/patterns, data structures or control structures, and (2) then demonstrate that they have done so sufficiently by writing or typing them out perfectly. What is striking is that this strategy is effective in the absence of any instruction pertaining to the new syntax features.

    So, this instructor claims that his students stop making syntax errors when they rote-memorize algorithms in a specific language and are then asked to regurgitate those memorized algorithms in the language in which they memorized them. That's not learning. He's taught kids to avoid compiler errors by always typing exactly the same characters into the editor. That's not even programming. It's transcription from memory. This is supposed to be useful for teaching young people how to code?

  • by Gabest ( 852807 ) on Sunday June 28, 2020 @07:35AM (#60237452)

    Those who are interested will learn how to code and play with IoT toys on their own. Teach them computer architectures, the history of microcomputers, how they are manufactured, and all those things which are not easily accessible.

    • I would agree with something like this approach. Education is split into two categories. Memorization is for core educational "infrastructure", spelling, and things like history exams where you just have to retrieve information. The more difficult to measure, but more important, part of education is pattern recognition, analysis, forecasting/theorizing, and formulating problem statements.

      The important part of computer science isn't the syntax of a programming language - that's probably the least importan

  • by Opportunist ( 166417 ) on Sunday June 28, 2020 @07:44AM (#60237474)

    As long as we have people coming out of high schools that have trouble with basic arithmetic, trying to teach them anything advanced is useless. How about tackling the basics before we think about teaching advanced matter? What you're asking here is essentially "Why can't my pupils write the next American novel" when they can barely stutter down the ABC.

    • - You will not motivate todays kids at numbers they desire. CS is not interesting stuff except to a small segment and the difficulties and tasks involved must be at least desensitized or automatic so they do not detract from whatever enjoyment can be had.

      - Actual Core Competency is needed and if you know some teachers you'll hear about how bad things have become. Copying many other nations which are superior in this makes the most sense.

      - CS is ultimately PROBLEM SOLVING no matter what way you go with it. Y

  • Kids wont learn CS without a need. I learned it at 12 to get around censors and crawl for images on censored websites.
  • We teach students physics and barley any go to be physicists. I would even go so far as to say that teach CS to HS student will teach them that they dont want to be in CS in college and will not get stuck in the CS program they hate. Teaching CS will teach students more of what they DONT want then what they want.
    • The problem with physics is that in order to teach it you have to teach them maths first because maths is the language of physics. Here in Canada, the maths education is about two years behind what I did in the UK (although the UK itself has significantly degraded by then).

      We did basic calculus and simple complex numbers for O' levels which you took at 16 years old. I entered university at 18 being able to solve second order differential equations which is taught at the 200 and 300-levels at university h
  • If a someone doesn't like it enough to learn in on their own, they wont like being in the field and you'll get a mediocre "its just a job" developer. I hate those developers, I have to keep doing most of their work.
  • CS classes isn't for everyone and it might be a waste for most. They need to bring in Mike Row to help change the education system. It might help kids out more if we had something closer to the following:

    * Teach the basics in high school mixed in with a higher focus on trade/vocational school that already exists in most schools.
    * Make sure that everyone(Teachers and Students) know the jobs in high demand at all times.
    * Work with business on providing better trade schools to start basic training for man
  • CS is, in essence, a branch of advanced mathematics. Which implies that you need a significant mathematical background not offered in high school. CS does not belong in high school any more than functional analysis or Galois theory do.

    What people usually mean when they talk about CS in high school is either familiarity with computing devices, or else code monkeying. The former children pick up naturally these days, since they have to interact with such devices all the time from their early childhood. The la

    • To have the desire to learn to code monkey, you must have the NEED. in 2008 kids had the need to do a thing so they learned. Today, everything useful to a kid is already made so there is no need anymore. For example, the reason I did not invent any types of locomotion, is that it was already very widely available. Kids today have no need to write software because the software that does what they need is already widely available.
  • Hands-on with the machine, memory and compiler taught how machines could be manipulated into turning tricks - albeit algorithms. That direct connect between language and mathematics accelerated proficiency, skill and geek-ness. But it wasn't about the machine and spent decades in private development with SteveJobs and NeXT then Apple proving software runs the world.

    Language like APL that was symbolic spoke to my strengths, intuition and freedom to invent schemes and algorithms. I returned to Columbia U. in

  • You simply need to teach kids in a 101 class that a computer will do EXACTLY what you tell it to do.

    So teach them some BASIC syntax and teach them looping and logic.

    I was a nerd in high school (now 44) and was writing complex programs on my own time.

    If kids want to be software experts, that's fine. Treat it like football or any other sports. Fund after school programs! Then start teaching design patterns and what not.

    Not every kid will become an expert. That comes with desire. just like how every kid

  • I would agree that most students taking CS courses could not care less - it isnâ(TM)t interesting.

    Perhaps, given youths desire to change the world, engage them to design and build something of value.

    Have them come up with an idea, establish requirements, design or, and build it. Their designs need to be evaluated and graded to show they have basic concepts.

    Then, let them code. Hold code reviews with the instructor, other students, or even industry experts (with NDA) participating.

    If they engage local

  • by PPH ( 736903 )

    I always perform at my best in anticipation of receiving treats.

    Belly rubs are nice too.

  • I think that CS should be taught in middle school in place of pre-algebra and algebra, and then condense algebra and algebra 2 into one course.

    And don't try to teach it like the kids are theoretical mathematicians. You are not going to be teaching actual Computer Science, but some programming fundamentals. Yes some freakin' geniuses were able to figure out computation science back in the late 19th century, without computers, but those were freakin' geniuses. Your high school and middle school kids are not t

  • I had a one semester class on programming in high school...more like half a semester really, and it was very elective. It was part of a class on word processors (Word Perfect), spreadsheets (Quatro Pro I think), and databases (don't remember). Half way thru the class the teacher said some of us could switch to learning programming instead (GW Basic -- am I dating myself now?). About 4 of us took him up on it. Of those 4, 3 of us are in the technology field now.

    Other things I'd like to see schools teach

    • I took woodworking in middle school (I'm Generation X). It sucked. They don't let you do anything dangerous, like in the "old days", for the same reason lots of schools don't use pointy compasses in geometry class anymore. Just take the free classes at Home Depot.

      And you know they'll never bring back home economics.

  • Before anyone thinks this was about politics, it isn't.

    The problem with liberal teaching methods is that these are better for teaching teamwork, competition and free-thinking, while one wants young people to first learn discipline, diligence and independence with conservative methods. Liberal teaching methods are of better use for higher education such as universities and engineering schools.

    For those who choose a higher education does it mean they'll get a more rounded education. Not every method works equ

  • It doesn't have to be for a fancy machine. Start with a software emulator of an Intel 8080 or something like that. Actually, start with an emulator for a super simple architecture with an accumulator, memory, and a bare minimum of instructions. (That was my intro to assembly in a college EE course. A course which was an intro to digital logic, we learned about JK flip flops and stuff like that as well.)

    I remember someone talking about an old computer game that taught digital logic. It should be possibl

  • I'm a long-time engineer, and I took a couple years away from being an employee to try to become a contractor/consultant. Meaning I had lots of free time, which allowed me to do lots of volunteering at a local "last chance" high school targeting students who weren't finding success in "regular" high schools. While the school most needed a math tutor, and I covered all their math classes, I still had time to support their one and only CS course.

    The CS course was taught by a former entrepreneur who wanted t

  • I didn't study programming at school. I studied math and physics and I programmed for fun in my free time and have been programming ever since.

    I think that one of the major problems with education these days is the assumption that school needs to prepare kids for the working life. I think that school needs to introduce student to ways of thinking and various topics. And yes, computer science can be one of them. But if you're teaching computer science, then teach computer science, not programming. And if you

  • Teaching pays far less than a decent programmer. Even in socialist Ontario where teachers on average make 87k a year (+ a pension worth 15k) you are not going to get a decent programmer since they would have to go through teachers college, then have a 1/7 chance of actually eventually getting a job and then likely end up having to teach history or geography. My 3 boys all had completely incompetent CS teachers. My youngest had more aptitude for debugging Scratch code at 11 after 2 months than his teacher
  • Is the purpose of math classes to make mathematicians? Of course not. Is Physics taught to make physicists? Or art class to create artists? Or History to make historians? Again, no, no and no.

    These subjects serve to help students gain basic literacy about the world, about knowledge and its many aspects.

    Why should ANYONE think high school CS should be about making programmers?!? What, then, should CS education DO? What should it be FOR? Why teach CS at all?

    Our world is increasingly computerized, and

  • My 10th grade high school computer science class in 1979. We only had two paper Teletype terminals w/punch-tape units using rotary dial-up over acoustic modems. (Not making this up) These photos [iclces.uk] are pretty close to what we had.

  • Isn't the heart of computer science computing/computation? That is, the science of combining elemental instructions into an encapsulated set that (when combined with the appropriate input) achieves the desired outputs/effects. Learning how to do this efficiently comes next, along with being taught all of the conventions for building the encapsulated sets of instructions (operating systems, languages, parsing, compiling, data structures, etc.). And, of course, learning how to think about the limits of com

  • and used it to teach HS math & physics for the next two years. One of my classes was a remedial math class in which the kids didn't know their basic math tables. I wrote a BASIC program to drill them on their math facts and keep track of their progress. By the end of the semester those kids could compute amortization tables on home and auto loans and much more. Things the college-prep students taught by another teach couldn't do. Because I was a former Assoc Prof of Science at a local college befor
  • This issue comes up frequently. What I think I have noticed in these discussions is a sense that "teaching CS" is a monolithic "one pathway" endeavor, one size fits all. Maybe I have misread the subtexts, but I think the subject makes more sense to recognize that there should several tiers of instruction.

    Because of how important computers and digital are in modern life, basic CS should be a foundational skill, like the "3 R's" - reading, writing. 'rithmetic - that are taught in primary school. By the tim

  • Ditch the AP (and IB) courses...
    Set up a CS program for K12 that universities respect as entry requirement for CS. It might take at the point of a gun for universities to get involved, whatever.
    Note that CS schools sit there baffled by their boom/bust enrollment, and fairly dismal graduation figures.
    Note also that CS is the ONLY program at university level where they expect no prior knowledge.

  • I had a high school teacher once who taught math purely my memorization. Majority of students loved it, since all they had to do is memorize all answers from the class examples and homework to give you a guaranteed A on exams. Those were the same students who close to high school graduation were not able to tutor grade 7 math students - when I asked by they could not solve a grade 7 math problem, the answer was "do you realize how long ago grade 7 was, how am I supposed to remember all that?". True story by

  • "for the last seven years he's also been making his students memorize small programs, and then type them out perfectly"

    Somebody get this asshat out of the classroom. He's doing real damage.

E Pluribus Unix

Working...