Stories
Slash Boxes
Comments

SoylentNews is people

posted by Fnord666 on Wednesday January 10 2018, @09:10PM   Printer-friendly
from the does-it-count-as-a-foreign-language dept.

Mark Guzdial at ACM (Association of Computing Machinery) writes:

I have three reasons for thinking that learning CS is different than learning other STEM disciplines.

  1. Our infrastructure for teaching CS is younger, smaller, and weaker;
  2. We don't realize how hard learning to program is;
  3. CS is so valuable that it changes the affective components of learning.

The author makes compelling arguments to support the claims, ending with:

We are increasingly finding that the emotional component of learning computing (e.g., motivation, feeling of belonging, self-efficacy) is among the most critical variables. When you put more and more students in a high-pressure, competitive setting, and some of whom feel "like" the teacher and some don't, you get emotional complexity that is unlike any other STEM discipline. Not mathematics, any of the sciences, or any of the engineering disciplines are facing growing numbers of majors and non-majors at the same time. That makes learning CS different and harder.


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 2) by TheRaven on Thursday January 11 2018, @09:33AM (6 children)

    by TheRaven (270) on Thursday January 11 2018, @09:33AM (#620858) Journal
    What is too young an age? I was taught BBC BASIC and Logo at school when I was 7. If anything, it seems that people who started later found it more difficult, just as it's much easier to learn a foreign language if you start very young. The problem is that we've thrown away all of the languages that were good for teaching programming and force people to use really terrible tools. No one wants to learn Smalltalk, because industry uses Java, but I'd much rather hire someone who was taught Smalltalk and then picked up Java than someone who only knows Java.
    --
    sudo mod me up
    Starting Score:    1  point
    Karma-Bonus Modifier   +1  

    Total Score:   2  
  • (Score: 0) by Anonymous Coward on Thursday January 11 2018, @01:02PM (4 children)

    by Anonymous Coward on Thursday January 11 2018, @01:02PM (#620914)

    Python?

    • (Score: 2) by TheRaven on Thursday January 11 2018, @04:55PM (2 children)

      by TheRaven (270) on Thursday January 11 2018, @04:55PM (#620977) Journal
      I'd argue that Python is bad as both a teaching language and as a language for real-world use. As a teaching language it has baroque syntax and far to many syntactic elements and odd semantics. As an implementation language, it has some stupid limitations and is almost impossible to use for software that requires long-term maintenance. About the only thing that Python does well is integrate with C/C++ code, but with C++14 or later it doesn't give you denser code than C++ and so you may as well just write C++ for anything more than about 4 lines long.
      --
      sudo mod me up
      • (Score: 2) by bzipitidoo on Friday January 12 2018, @12:04AM (1 child)

        by bzipitidoo (4388) on Friday January 12 2018, @12:04AM (#621185) Journal

        And I'd argue that we still don't have _any_ programming language suitable for either teaching or serious work. One reason for that is CS is still a relatively new science, and a lot of early work was done in a big hurry and lots of things still need refining and improving.

        C/C++ is okay, one of the best we have, but it still has lots of shortcomings. Of course there are die hard fans of LISP, Python, Ruby, etc. Java? Java doesn't play nice with others. That goes for most languages, but Java was supposed to be exceptionally portable. Also, I have not heard that Java has improved much on resource usage. It was such a pig of a language. Perhaps that gets noticed less now because hardware capacity has continued to grow so much even Java can't easily thrash a phone let alone a desktop computer system any more. I haven't heard that anyone is a big fan of JavaScript, it's main point is that unlike Java, it's native to browsers.

        I really like the idea in Python of using position to indicate programming structure, think that's a winner for maybe making programming teachable to elementary school age students. Lot of people fiercely doubt that idea, think using spaces is crazy, but that's not Python's fault, that's the fault of that legacy encoding, ASCII. ASCII is terrible at positioning text, that's why things like HTML evolved. Consider that there is not any programming language that is just as readable in a nice, flexible, variable width font. All programming is still done with monospace fonts. In the level of maturity attained so far, programming languages today are about the equivalent of Bronze Age written language technology. Sumerian Cuneiform and Egyptian Hieroglyphics were so hard to learn that few could. It took the arrival of Phoenician a millennium later to simplify writing systems. Now we know that nearly universal literacy is possible.

        Programming languages still stink at modularity at scale, though things have improved. Sure, most are great at small scale modularity, but their systems get ugly at larger scales. It's why "namespace" was added to C++. Does the thought of trying to link together functions written in different languages make you cringe and whimper? It shouldn't be like that, but it still is.

        • (Score: 2) by Wootery on Friday January 12 2018, @01:50PM

          by Wootery (2341) on Friday January 12 2018, @01:50PM (#621363)

          Does the thought of trying to link together functions written in different languages make you cringe and whimper? It shouldn't be like that, but it still is.

          What about the way functions work in fundamentally different ways in different languages?

          For instance, in Java, int is defined to be a 32 bit integer. In C, it can be just about anything, as the language is intended to morph to fit the target architecture. You could insist on using int32_t instead, but it's not the ordinary C way of doing things. There are related issues such as that int64_t isn't guaranteed to exist.

          What about different object models? What about garbage collection? Availability of unsigned primitive types? Lazy vs strict evaluation? Dynamic types vs static types vs untyped? Existence of null? Some languages don't even have explicit parameters in the first place (Forth).

          Writing a good binding isn't always trivial busywork; resolving a genuine impedance mismatch is going to take real work. Where there is little impedance mismatch, binding-generator tools have been around for years (SWIG).

    • (Score: 2) by HiThere on Thursday January 11 2018, @06:32PM

      by HiThere (866) Subscriber Badge on Thursday January 11 2018, @06:32PM (#621022) Journal

      Python should not be used for most children before high school. Smalltalk is much better, if still not good. Logo and Scratch (a subset of Squeak Smalltalk) are much better...but you need to pick a good dialect of Logo. And you need to pick an interesting problem.

      The thing is, errors in Python can be obscure. You want a language where the errors are clear. Scratch is superior here, and there are Logo dialects that are also good. Neither of those languages are exactly toy languages, Scratch can be expanded all the way to full Squeak Smalltalk, and Logo has a version that was for awhile used to teach computer science at MIT. It's also true that neither is a really good language for a professional...there's too much overhead, even for the extended versions. But most children learn to ride a tricycle before they ride a bicycle.

      --
      Javascript is what you use to allow unknown third parties to run software you have no idea about on your computer.
  • (Score: 2) by HiThere on Thursday January 11 2018, @06:26PM

    by HiThere (866) Subscriber Badge on Thursday January 11 2018, @06:26PM (#621018) Journal

    My point was you need to use appropriate languages (I mentioned Scratch and Logo) and projects that they find fun (I mentioned building robots out of Legos and animating cartoons). That isn't how programming is usually being taught, and most of the teachers have no idea how to do it (not to mention not being given appropriate resources).

    --
    Javascript is what you use to allow unknown third parties to run software you have no idea about on your computer.