Search Unity

Why do 30-90% of students fail to learn coding?

Discussion in 'General Discussion' started by splattenburgers, May 28, 2019.

  1. BIGTIMEMASTER

    BIGTIMEMASTER

    Joined:
    Jun 1, 2017
    Posts:
    5,181
    I feel like the coding 101 courses I took would have gone a lot easier if there was first some high-level discussion about how computers work, period. Like having a tutorial in a game. Way easier than just throwing player into dark souls and saying, "eh, just keep at it you'll get there eventually."

    For instance, have student solve basic logic problems that mimic common coding solutions, just without the code. Then slowly go into explaining the structure of code, what its actually do inside the computer, how the different pieces of hardware are working together.... its way easier to learn when you first get the why's without added complexity. As much as possible 101 courses should be totally free from jargon and specifics.

    There was someone here who post in the getting started section sometimes who wrote some of the best instruction I've seen anywhere. Don't got time to search it now, but whoever that person is really ought to put that skill to (further) use. I'd take courses from them.


    Some people are gonna succeed no matter what and all, but whoop-dee-doo.
     
  2. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,620
    That's more or less how my formal programming education went. The classes were in parallel, but we were learning each of how computers work, and how to use logic to solve problems, and how to write code. So we got the concept of computers as logic machines, and separately we got taught the application of using logic machines to solve problems.

    Before going into that, I'd taught my self bits and pieces of each of those things. The value I see in formal education is filling the gaps in the fundamentals, mostly because it makes further self-teaching far more efficient.
     
    Kiwasi likes this.
  3. alexzzzz

    alexzzzz

    Joined:
    Nov 20, 2010
    Posts:
    1,447
    Oh man, I hate reading papers with lots of math because they use single letters everywhere. The math itself is fine but its traditional naming conventions are just awful.
     
    neoshaman, IcyPeak, dadude123 and 3 others like this.
  4. Vryken

    Vryken

    Joined:
    Jan 23, 2018
    Posts:
    2,106
    Maybe that's why I tend to dislike math - poor variable names. :p
     
  5. Arowx

    Arowx

    Joined:
    Nov 12, 2009
    Posts:
    8,194
    I think "80s era style computers/OS" would be way better as teaching platforms as the only way you could get them to do anything was to run console commands and then they would launch you into game worlds after making some screechy noises and you plug in a tape cassette.

    Code (CSharp):
    1. 10 PRINT "HI WORLD"
    2. 20 GOTO 10
    A friend showed me their ZX81 computer and the programming manual, I borrowed it and wrote my first game in a school text book.
     
  6. VIC20

    VIC20

    Joined:
    Jan 19, 2008
    Posts:
    2,688
    Am I the only one who never had a programming course? I’ve started to learn it in the 80s by reading books. I think the hardest part are often the examples (which were much better in the 80s) in some books. Usually (outside the Unity world) the goal they are trying to achieve is so far from my own tasks that I have no idea WHY they want to achieve something or even WHAT they want to achieve. The real information is often hidden below unnecessary confusing bullsh*t about bananas, apples or whatever.

    So I guess the teacher is an extremely important factor.

    You still can communicate with bad english. But your code won’t run if it throws out errors. That makes frustration less common when learning languages (unless it is about the french number system) so I guess the results will be better.
     
    IcyPeak, SparrowGS and MD_Reptile like this.
  7. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,139
    As with both, it depends on how bad. I write bad code all day. It compiles, but it's still garbage awful. The only thing that can understand my code most of the time are machines tailor made to do just that.
     
    Ryiah and MD_Reptile like this.
  8. Deleted User

    Deleted User

    Guest



    Is that what you were talking about? I got a real kick out of that video
     
    neoshaman, IcyPeak and VIC20 like this.
  9. TheGaul

    TheGaul

    Joined:
    Apr 15, 2019
    Posts:
    199
    If you believe that intelligence is partly genetic, which would stand to reason as humans have evolved their brains and not all brains are the same.

    Then I would say that probably maybe less than 50% of brains are capable of the abstract thought at a fast enough speed that is required to complete a moderately complex programming task with a level of stress that is comfortable.

    On the other end of the scale, approximately 10% of the population is categorised as having a learning disability. And then there are people who don't specifically have learning difficulties but their brains are not quite suited for higher abstract thought.

    Another reason can be cultural. For example, if a child lives in a culture in which abstract thought is not encouraged they may not form the necessary neural pathways in childhood needed for abstract thought in the future. (Adult human's are less able to pick up new tasks quickly e.g. learning a language.)

    But yeah - long story short - programming is hard and some people are smarter than others.

    Edit: Oh you want to know why it is hard? Well it does involve holding a lot of information in your brain, planning, logic, pattern recognition, generalisation, simulation, etc. Of course it's hard. If you find it easy, it just means you're intelligent. There are some people who can't even work a dishwasher even with instructions.
     
    Last edited: May 31, 2019
    IcyPeak likes this.
  10. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Nope. To this day I've never taken an actual programming class. I have a solid engineering degree, which focuses a lot on problem solving and basic science. But my programming education has never extended beyond reading the documentation, watching YouTube, and talking to others.

    As an engineer, I disagree. Once you throw 17 variables into an equation, naming them all with anything other then a single letter or Greek symbol makes it more difficult to follow. Especially given anyone skilled enough to read and understand advanced math is likely already familiar with the various domain conventions for single letter variables.

    If you are programming or writing out logic, long variable names make sense. But for pure math, shorter is better.
     
  11. alexzzzz

    alexzzzz

    Joined:
    Nov 20, 2010
    Posts:
    1,447
    Why is this not true for programming? Any skilled programmer should also be familiar with the various domain conventions for single letter variables ― this doesn't sound much different.

    We shouldn't have to type the word 'distance', we could use d or l or x or r or h or something else instead, maybe even use caps. The programs would become shorter and therefore definitely easier to read and understand. Less typing + reading is easier = win-win.

    That's because in pure math letters don't mean anything real. When math is used to describe the real world, the letters are no longer just letters.
     
  12. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,769
    Pure math become meaningless, if start mixing with other disciplines, like electrical / electronic / physics / chemistry / materials / statistics. Each uses single letters to describe properties and often use already reserved by other discipline letters. So as long methods are encapsulated, commented, etc., we are fine. But there is potential issues by mixing these, in trying to be clever.
     
  13. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,139
    Making code less readable for people who aren't intermediate-to-advanced programmers is not making things "easier to read and understand" but actually the opposite.
     
  14. AndersMalmgren

    AndersMalmgren

    Joined:
    Aug 31, 2014
    Posts:
    5,358
    Math algorithms are often kept inside some sort of scope block, like a method or property. As long as the name is clear and well defined. It's not that important what the local variables are named.

    It could even be better if you keep the names directly from the formal definition of the algorithm. We did this for example for our ballistics coefficient.

    The general design and architecture is far more important than local variables and algorithms
     
    IcyPeak and Ryiah like this.
  15. alexzzzz

    alexzzzz

    Joined:
    Nov 20, 2010
    Posts:
    1,447
    Intermediate and advanced programmers are people too, so it's the opposite for all the programmers. However, in math meaningless one-letter names are considered normal even for public papers that describe solutions to real world problems where variables are not abstract anymore. I'm just wondering why.
     
  16. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,139
    No, because intermediate and advanced programmers will not see any meaningful difference. Also, this is a problem that a lot of people have with math.
     
    neoshaman and taptpci like this.
  17. alexzzzz

    alexzzzz

    Joined:
    Nov 20, 2010
    Posts:
    1,447
    I believe, intermediate and advanced programmers would disagree about no meaningful difference.
     
  18. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,139
    I am one. I've worked with plenty. There's a reason hardly anyone does this in the first place.
     
    taptpci likes this.
  19. SparrowGS

    SparrowGS

    Joined:
    Apr 6, 2017
    Posts:
    2,536
    I didn't read any posts besides the OP, but in my experience -

    I first started coding when I was about 13 and had known flash animation, I tried making games and learn by myself - failed horribly, but what else could you expect from a 13 year old with nothing but google (i'm 25 now incase you're wondering how long ago this was).

    when I got to highschool at 15 I had a C# class, I took it for 2 years until the teacher quit, safe to say - I didn't know S***, heck I didn't even know why you have to put "void" before the function (in 2 years I didn't learn about the return value - seriously???).


    when I was 21 and was released from the army I heard unity is free to use and I hopped on that train without a second thought, it took my 2 weeks to know how to start coding basic stuff and after 2-3 months I was already calling tutorials out on stuff they do wrong.

    You just gotta find what works for you - I learn best by myself or 1 on 1 with a good teacher.
    some people can get it in class, but if you do - make sure your teacher is good.
     
    IcyPeak likes this.
  20. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Typically because a given program is normally working with far more variables then a given math paper is. D for distance works in math because you are typically only working with one distance. In Unity, as soon as you have three GameObjects you have six distances that you are playing with. And it exponentially increases as you add GameObjects.
     
    DauntlessVerbosity likes this.
  21. JohnnyA

    JohnnyA

    Joined:
    Apr 9, 2010
    Posts:
    5,041
    https://retractionwatch.com/2014/07...itude-test-canned-for-overzealous-conclusion/

    "Though the paper was never formally published, it made the rounds pretty extensively. Now, Bornat has published a retraction, stating that he wrote the article during an antidepressant-driven mania that also earned him a suspension from his university."

    There may be some grain of truth to the paper, but its so obviously not valid research, I mean it says in the footnote on the first page that their criteria for failing is not a student failing.
     
    Last edited: Jun 2, 2019
  22. Arowx

    Arowx

    Joined:
    Nov 12, 2009
    Posts:
    8,194
    Code.org is dedicated to raising the number of schools that provide CS courses apparently on 35% of schools have CS in the STEM curriculum in the US https://code.org/promote

    So even if the OPs stats are right 65% of students are not even getting the chance to learn programming at school in the US.
     
    IcyPeak likes this.
  23. alexzzzz

    alexzzzz

    Joined:
    Nov 20, 2010
    Posts:
    1,447
    The problem with D is you never know it's a distance or something else until you find some random place in the paper where it is described (if it is described).

    I see 'p' in a paper about fluid simulation with particles:
    p - is it a pressure, an impulse, a position, or something else?
    dp/dt - is it a change in pressure over time, a force, a velocity, or something else?

    When the math people need to work with multiple distances (and they often do), they start adding one-letter or one-digit subscripts to their one-letter variables or use different one-letter variables to denote different distances. When they run out of Latin letters they start using Greek ones. These people are hopeless. :D
     
    Last edited: Jun 2, 2019
  24. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Its could also be ρ, which typically means density. :p

    I get what you are saying. I suppose its just normal to me because that's the environment I grew up in.
     
  25. MD_Reptile

    MD_Reptile

    Joined:
    Jan 19, 2012
    Posts:
    2,664
    Haha - that is accurate.
     
  26. devotid

    devotid

    Joined:
    Nov 14, 2011
    Posts:
    445
    I taught myself to code with playmaker 10 years ago because I was sick of working real jobs in the real world. (Skateboard Manufacturer, Woodworker, Autobody painter/fabricator, greenskeeper etc) You name it I have done it....haha

    I bet if those people went and worked in the real world for a couple years that failure rate would go way down. lol
     
    I_Am_DreReid and MD_Reptile like this.
  27. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,769
    @devotid did you went to Uni / College, as topic suggests?
     
    MD_Reptile likes this.
  28. devotid

    devotid

    Joined:
    Nov 14, 2011
    Posts:
    445
    Yes, I went to Ferris State University in 1998 for Manufacturing Engineering and only made it 1 year. I never took a actual coding course. I didnt even know what a game engine was until 10 years ago and Im 40 now. Well, I guess I did take a coding course as I did G and M Code for CNC machining.... But that wasnt really the same thing.

    I think I am kind of the "new version" of coder.... as I really still dont know how to take a blank sheet and just write code from scratch. I have kind of snuck in a side door.... as without playmaker I would not be a game dev. Period. I have been able to make a great living simply because I understand logic and playmaker lets me see it in visual interface. Nowadays I really dont even need to know how to code if all the tools are in place for me with things like playmaker.

    In my opinion.... The reason people are scared of code is they simply dont understand what is even happening... if that makes any sense? Once I seen it "moving and working" in a visual sense with Playmaker..... it all just clicked for me.
     
    neoshaman, MD_Reptile and Ryiah like this.
  29. MD_Reptile

    MD_Reptile

    Joined:
    Jan 19, 2012
    Posts:
    2,664
    I messed with Playmaker and similar products a bit a while back just to see how they worked - but in school I even used this visual scripting tool thing I can't even remember the name of. I remember thinking "this is wack, I could write this in C# way faster" haha.

    Truth is though - that stuff is a gateway coding platform, and it gets people who are wired for this kind of stuff interested, then they just keep on learning :)
     
    neoshaman and devotid like this.
  30. devotid

    devotid

    Joined:
    Nov 14, 2011
    Posts:
    445
    Ive actually heard many veteran coders say that playmaker is a great way to quickly layout ideas and prototypes for clients......and then others claim it isnt real coding and say that it cant/shouldn't be used in production games. Its a weird topic and I have received many different takes on it.

    But in the end.... if people enjoy what you create and pay you fairly for making and maintaining it... who cares what it was made with. :)
     
  31. tsibiski

    tsibiski

    Joined:
    Jul 11, 2016
    Posts:
    599
    Seems like the essay that came up with 30-90% should have been a little more cautious and flexible with the range they presented.

    I might have said, "Why does 0-100% of students fail to learn coding?"
     
    Deleted User, Kiwasi and Antypodish like this.
  32. snacktime

    snacktime

    Joined:
    Apr 15, 2013
    Posts:
    3,356
    I'm guessing the results are likely more due to things like interest and desire. We are talking about people who don't know enough to know if they even have an interest until they try it. So who knows what percentage actually applied themselves that much. Or maybe they have some other mental barrier with programming that's not related to ability.

    My wife is a translator, fluent in 5 languages and in her domain very capable of abstract thought.. But she has zero interest in programming and her brain just switches off if I start talking about what I do.

    My gut feeling is most people choose careers not really based on what they are best at, but what they were exposed to and through circumstances stuck with long enough to get good at. I think most of the population given a good reason, could learn to code.

    Like if they did this same test but put some strong reason for doing well on it, I think you would see very different results.
     
    MD_Reptile likes this.
  33. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,769
    Way of explaining, is another skill, which also applies to teacher. If trying to talk purely technical for example, to person from different domain, then has receipt for boredom. I think best way is, to tune, into listener domain. So in your case, explaining based on different languages. Or, as I use often examples, of making food in kitchen. That works treat. ;)

    Gas hob is good example of matrix and arrays :p
    And this is my container, or 0/1, or variable.
     
    Last edited: Jun 3, 2019
  34. Deleted User

    Deleted User

    Guest

    You could always just go back to the eight-bit assembly era if that's what you want.

    I feel dumber just reading the first paragraph of that paper...
     
  35. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,145
    I miss the easy days of game development on my C64. For everything that modern game development has brought us it has never felt as easy to me as coding for that computer.
     
    Socrates and Deleted User like this.
  36. Me too!

    processor 6502
    org $1000

    lda #$00
    sta $d020
    sta $d021
    tax
    lda #$20
    loop:
    sta $0400,x
    sta $0500,x
    sta $0600,x
    sta $0700,x
    dex
    bne loop
     
    MD_Reptile likes this.
  37. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,139
    I would rather eat my own feet than go back to coding like that. I'm here for results, not to poke a CPU instruction set with a series of sticks.
     
  38. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,145
    Just think of how much time you would save not having to compile or wait for assets to import. :p
     
  39. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,139
    That's good because I'm gonna need all that extra time to write and test code like that :v
     
    neoshaman likes this.
  40. TheGaul

    TheGaul

    Joined:
    Apr 15, 2019
    Posts:
    199
    Yes, I did like programming the Spectrum. I think the limitations made it more simple and fun.

    That's what makes games fun; the constraints. Without constraints, it's not a game it's just... life. :(
     
  41. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,139
    ...sure, if you decide that game design doesn't exist.
     
    neoshaman and Billy4184 like this.
  42. Deleted User

    Deleted User

    Guest

    Okay Smark Alek, I'll have you know my GRANDPARENTS designed better games than today's tomfools! Games like kick the can, capture the cloth, "war", screw your neighbor (the card game!), and the climbing of 100 foot tall trees WITHOUT health insurance!

    Disclaimer: This post is not an endorsement of any of said activities, though it should be noted that the author of this post once partook in all of these things (*ahem* going full send before full send was even a thing) at some point (some might call this a "child-hood") on a regular basis.
     
    IcyPeak and Socrates like this.
  43. MadeFromPolygons

    MadeFromPolygons

    Joined:
    Oct 5, 2013
    Posts:
    3,977
    This burns my eyes.
     
  44. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,620
    Wait... why do constraints mean that game design doesn't exist?
     
  45. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,139
    I'm stating the opposite of that. Specifically, I mean this part:

     
    angrypenguin likes this.
  46. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,145
    IcyPeak, Deleted User and Socrates like this.
  47. bearnavy4

    bearnavy4

    Joined:
    Jun 16, 2020
    Posts:
    2
    Coding requires not only a lot of background knowledge but practical skills as well. It is a completely different domain, which isn't taught in schools or colleges. That's sort of a new domain and many don't expect to be so tough. It's easier to give up, than to move further. But I'm not one to give up, so I took the best programming courses in our city. Now I am preparing for exams to get a certificate, which is required to work in a reliable company. To do this, I use the help of professionals (https://cciedump.spoto.net/) who help students pass exams for the best grades. And I know that I will succeed!
     
    Last edited: Jul 8, 2020
  48. Vryken

    Vryken

    Joined:
    Jan 23, 2018
    Posts:
    2,106
    I'm guessing this is the case in the US?
    Programming was taught in both the high school and college I attended, but surely they do in US schools as well, don't they?
     
    Martin_H likes this.
  49. kburkhart84

    kburkhart84

    Joined:
    Apr 28, 2012
    Posts:
    910
    My kids actually did a sort of programming class using some kind of drag and drop thingy in middle school, 7th grade I think. It isn't a lower level language, but at the least I know they picked up the basic concepts of storing things in variables, branching statements, loops, and similar.

    I wasn't exposed to formal programming class until high school, though I had dabbled in stuff before that. I'm only 36 though, so I guess I'm kinda in the middle between people who learned Assembly and people who skipped anything lower level than C# type stuff(not fully accurate but my point stands on the age group).

    I really wanted to comment here.....that's just crazy someone mentioned failing a class because the teacher wanted them to use x/y/z over i/j/k for looping variables?!?!?! If I were teaching, I'd say it doesn't matter what you use. I would maybe dock some points if you weren't consistent within your own code, just to force how important consistency is, but you could pick a/b/c for all I would care. I never liked x/y/z simply because those are typically used in Vectors, positions, etc... while i/j/k is similarly common without being confused point other things.

    In my own code, if I'm looping through an array or similar and the value is just an index basically, I will use i/j/k personally. If I'm doing something more complex with those values besides just indexing something, I very well could use a different descriptive name for them.

    About single letter names for things....I understand the reason they are done in Math sometimes is to keep things single digit. It makes sense in math, but not so much in programming IMO. And as someone said, even with math, there are only 26 letters in the English Alphabet, plus the symbols that get used(minus the symbols that are just strange looking letters), so you are bound to run into issues with different disciplines and not knowing what is what. That's why, at the least for programming, the only single letter variables I use are the looping index variables discussed above, and x/y/z for Vector/Position data.
     
  50. Yeah, this was my exact reasoning. But you know how it works when you are the student and the other one is the teacher/"prof.". :D

    Since then, I think I got my "revenge". This guy is still there, after more than twenty years, "teaching" the same thing.
    I came to Silicon-Valley and working for one of the biggest company in the world. So, whatever. I still use i,j,k for integer loop variables when naming is not important. So screw him.
    Although some of the later students say he became a little bit more lenient after he repeatedly "lost" his driver-side mirror in the college parking lot.
     
    Last edited by a moderator: Jun 16, 2020
    Martin_H, neoshaman and MD_Reptile like this.