Hello,

I am thinking about teaching my students JavaScript first so that they can start creating websites and make their career, what are your thoughts?

  • abbadon420@sh.itjust.works
    link
    fedilink
    arrow-up
    75
    ·
    5 days ago

    If you also plan on teaching html and css, than I’d go for js first. Having your code instantly response in a visual way, is super motivating for most students.
    If you just want to tech programming concepts, i’d go for python.
    If you want this to be the start of a complete cs study, than you can start with C

    • ghodawalaaman@programming.devOP
      link
      fedilink
      arrow-up
      12
      arrow-down
      1
      ·
      5 days ago

      That makes sense, I am also teaching html amd css first so I think JavaScript makes sense to teach next.

      I was thinking about C because that’s the first thing I learned in the college and that’s my favorite language till this day.

      • chicken@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        14
        ·
        5 days ago

        The problem with C as a language for learning is that the error messages are not very specific or descriptive and often you need extra context to understand what is happening. Messing up memory management can result in inconsistent gremlin-like behavior from your programs, it can get very tricky. I had a pretty difficult time when I got to classes that taught C compared to other languages, but the main thing was just that I needed someone to look over my work and explain things to me because unlike with other languages, the self-service ways of figuring it out were much more difficult and it’s easier to get stuck with no idea what to look into next. I ended up begging people online for help with understanding what was going wrong with my programs to supplement the limited amount of time the professor and TAs were available, really grateful to those guys as I probably would have failed it otherwise.

        Anyway I would just say that if you do really want to go with C, I think you should be willing to put in more time to explain things to students one on one because many of them may need it.

      • Mirror Giraffe@piefed.social
        link
        fedilink
        English
        arrow-up
        2
        ·
        5 days ago

        Good call. At this point the jankyness of js doesn’t pose a problem and the ones that get enticed will learn about type safety, classes etc down the line.

  • Sivecano@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    17
    arrow-down
    1
    ·
    5 days ago

    I mean, they’ll probably learn more from C. But please. You can do better than javascript. At least teach them python or something.

    • forestbeasts@pawb.social
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      3 days ago

      JS is actually pretty great as a language these days.

      It doesn’t have to imply NPM hell. And it’s got normal syntax and doesn’t do Python’s weird meaningful-indentation thing.

      (It does have the == typecasting weirdness though.)

      – Frost

  • traxex@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    13
    arrow-down
    1
    ·
    5 days ago

    C teaches a whole variety of low level concepts that are helpful in any comp sci field. That’s my vote. Python holds your hand too much and JS would require more to get started. If they aren’t shooting for a comp sci degree and are just looking for helpful scripts then python would be fine.

  • greenashura@sh.itjust.works
    link
    fedilink
    arrow-up
    38
    arrow-down
    5
    ·
    edit-2
    5 days ago

    Why not python? C needs constant memory management and JavaScript is too chaotic. Both seem to me a bit too complicated for someone just starting

    • ghodawalaaman@programming.devOP
      link
      fedilink
      arrow-up
      6
      arrow-down
      2
      ·
      5 days ago

      The main reason to not including python is that students aren’t particularly in the CS field, they are learning it as their “augmented skill” (I don’t know what it’s called bad English). That’s why I don’t want to force them to learn CS concept which they might not even need.

      I was thinking about C so that their fundamentals gets cleared but I think it will be too much for students who aren’t into CS. What do you think ?

      • BillyClark@piefed.social
        link
        fedilink
        English
        arrow-up
        52
        ·
        5 days ago

        If they’re not in the CS field, and you don’t want to teach them CS concepts that they don’t need, then you have eliminated C as an option by your own criteria.

        With C, they’ll have to learn about compilers, build systems, memory management, and pointers at the very least.

      • calcopiritus@lemmy.world
        link
        fedilink
        arrow-up
        9
        ·
        5 days ago

        Idk why you are discarding python for the reason that makes python the best option. If there is a programming language that a non-programmer should know, it’s python.

      • MagicShel@lemmy.zip
        link
        fedilink
        English
        arrow-up
        10
        arrow-down
        1
        ·
        5 days ago

        Python allows you to focus on a single concept in isolation (building on what you’ve already learned, of course). JS has a bunch of other stuff mixed in. Like the DOM. Interacting with the DOM is necessary for any browser code. You can hide it with abstractions and boilerplate, but it’s always going to surface in error messages. Debugging JS can be quite a bit harder than other languages.

        Caveat: beginner JS is many years behind me. It may not be as bad as corporate code full of react and angular and all kinds of requirements.

      • who@feddit.org
        link
        fedilink
        English
        arrow-up
        4
        ·
        5 days ago

        The main reason to not including python is that students aren’t particularly in the CS field,

        In that case, I think Python is a better choice for teaching programming. Just skip the fancy features that have been bolted onto Python over the past 15 years or so.

        I might argue in favour of JavaScript if web application programming is specifically the goal. But for programming in general, I consider it a troublesome language.

      • grue@lemmy.world
        link
        fedilink
        arrow-up
        6
        ·
        5 days ago

        The main reason to not including python is that students aren’t particularly in the CS field, they are learning it as their “augmented skill” (I don’t know what it’s called bad English). That’s why I don’t want to force them to learn CS concept which they might not even need.

        That’s an even better reason to pick Python, then.

      • VeryFrugal@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        ·
        5 days ago

        The main reason to not including python is that students aren’t particularly in the CS field

        If that’s the case C is the very first thing they should avoid spending time on.

  • Kache@lemmy.zip
    link
    fedilink
    arrow-up
    11
    ·
    5 days ago

    What grade sudents is this for? Do you intend for this to be a dedicated class/semester or just a single unit? How good are they at operating a computer? (Typing, clicking, etc)

  • FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    12
    ·
    5 days ago

    I would teach Typescript. Being able to write the types down and hover things to see what types they are will definitely help them.

    I think C would put them off. I also wouldn’t go with Python, in case they want to do things like write games or make websites, which are common tasks you can do with Typescript but not very well with Python.

      • FizzyOrange@programming.dev
        link
        fedilink
        arrow-up
        1
        arrow-down
        1
        ·
        4 days ago

        Python’s performance is too poor to do anything serious. Go and look at the screenshots from Pygame. They look like ZX Spectrum era games.

        Compare that to something like PixiJS.

  • MyNameIsRichard@lemmy.ml
    link
    fedilink
    arrow-up
    17
    arrow-down
    1
    ·
    5 days ago

    I would start with Python. It’s a fun language to learn, and generally recommended for beginners. Towards the end, I would spend a few sessions on c, not to teach them c but to give them an appreciation for what they get for free in higher level languages.

  • Cryxtalix@programming.dev
    link
    fedilink
    arrow-up
    16
    arrow-down
    3
    ·
    edit-2
    5 days ago

    No way it’s C. The average student will go home and find that they can’t do much of anything they like, with the level of C they know. Even printing a string is famously hard in C, they’ll hate it. Nothing drains their interest in programming faster than segfaults.

    The average students wants to build games, websites, discord bots etc. Javascript makes it easy, none are easy in C.

  • brisk@aussie.zone
    link
    fedilink
    arrow-up
    15
    ·
    5 days ago

    What level are your students (primary school, high school, technical college, university)?

    You said it’s not a core skill, so what is their core skill? IT? Machinist? Electronics engineer?

    C is an excellent “fundamentals” language that anyone with a software engineering and maybe computer science should have exposure too, but if their programming is purely practical (e.g. scripting for IT?) C is essentially irrelevant.

    Javascript is very narrow in scope but if they’re web designers then it’s essential.

    I’ll back the other commenters that if they need a language they can do useful things in (e.g. simple automations, calculations), Python is hard to pass over.

  • Daedskin@lemmy.zip
    link
    fedilink
    arrow-up
    10
    arrow-down
    1
    ·
    5 days ago

    Like a lot of people mentioned, there’s a few good things you could start with, but C is probably not one of them. At my old job I ran a course for software engineer 2s to go over C, and even they had some struggles with it. If professional engineers struggle with C, it’s maybe not the best starting point. Even C++ might be better, but still adds a lot of complexity that isn’t necessary to know as immediately as the beginning.

    Whenever people ask me where to start, I say python. It gives you a relatively tame taste of environment setup, and can run code very easily and flexibly. Its type system is flexible enough to make a user aware of it, without it being as rigid as C or as vague as javascript. Because there’s enough libraries that are easy to pull in, even a beginner can start building useful programs without having to know how to build something equivalent to those libraries themselves.

    Obviously if you want them to make websites, javascript will be necessary eventually, and isn’t a bad place to start. If you’re going purely for CS knowledge, I do think python is a little better; going from python to JS is probably easier than JS to python.

  • MagicShel@lemmy.zip
    link
    fedilink
    English
    arrow-up
    11
    ·
    5 days ago

    Probably JS as the fact that every computer has by default everything you need to execute JS. But there is a bunch of browser stuff you have to worry about before you can do anything with it. I’m not sure how you learn JS before html.

    With Python you can do simple command line stuff without having to really know anything else. You can learn one concept at a time.

    That being said, people have a lot of familiarity with browsers and it might feel less abstract. JS might a better choice for demystifying coding. Python is probably a better choice for accomplishing anything useful.

  • Paulemeister@feddit.org
    link
    fedilink
    arrow-up
    2
    ·
    4 days ago

    I’ve studied with (now) engineers and there is large portion of people having a hard time with even the concept of a function. We learned C(++) at the time. I guess being forced to learn about what the hardware does kinda messed with people being able to just think about algorithms. As a first programmig language to just write some basic functions I like Python, but to be honest I don’t understand what’s going really going on behind the scenes either. But C is a really solid choice, as what’s really happening is easy to reason about (at least unoptimized) and every other language will have to abstract these same concepts.