I am a student in Germany myself and got the rare chance to influence the education about CS/responsible use of technology people get in a special course I will give for the interested in my school this year.

The students will be eight grade and up, and it is a reasonable assumption that I will not have to deal with uninterested students (that and the probably small course size gives me an edge over normal courses beyond my actual planned lessons).

My motivation for investing substantial amounts of time and effort into this is my deeply hold belief that digital literacy is gonna be extremely important in the future, both societally and personally. I have the very unique chance to do something about this, even if only on a local level, and I’m gonna use that. I fail to see the current CS classes in German "high schools" (Gymnasien), and schools with our specialization (humanism) especially, provide needed education. We only had CS classes from grade eleven—where you learn Scratch or something similar and Java basics (most don’t really understand that either, or why you should learn it (a circumstance I very much understand)).
This state of affairs, and the increasing prevalence of smartphones instead of PCs means most students lack any fundamental understanding of the technology they’re using everyday.
My reason to believe that I’d be better at giving CS lessons than trained teachers is that these have to stick to very bad specific guidelines on what to teach, and a lack of CS graduates wanting to become teachers means our school has not a single one who studied any CS (I did).

Some of my personal ideas:

  • how do (basically all) computers work hardware-wise (overview over parts)
  • what is a computer/boot chain/operating system/program
  • hand out USB drives/cheap SSDs to students that they can keep (alternative: a ton of VMs and Proxmox users of one of my hosts) and have everyone pick and install their Linux distro of choice (yes, this is gonna be painful for all involved, but is also—as I suspect many of you already know—extremely rewarding and can be quite fun)
  • learning some "real" programming (would probably teach Python), my approach would be to learn basics and then pick projects and work alone or together (which is useful for learning Git/coding in a remotely readable way)
  • some discussion of open/closed source, corporate tech, enshittification, digital minimalism and philosophy of technology (which would be okay because, you know, humanistic school…)
  • maybe some networking (network stack, OSI, hacking Wifi networks…)

What are your thoughts and suggestions? Took me some time to get to an agreement with the school over this, so I’d like to do my absolute best.

Possibly relevant questions: what fundamental knowledge about tech do you suspect to be still relevant 15 years from now, what would you like to have learnt, what would you find interesting as a student this age…

  • Kache@lemm.ee
    ·
    edit-2
    1 month ago

    I think your ideas are too non-practical/specialized/advanced/low-level for your stated goal of 'digital literacy". They read more like college intro/followup course material and are too esoteric to be readily absorbed, esp by generic teenagers, even if they've self-selected to be "lightly interested".

  • barryamelton@lemmy.ml
    ·
    1 month ago

    I would go with tasks where they get to "hack" or learn about each other. Give them usb sticks, make them put a silly trivia on an encrypted 7z with passwords that are somewhat crackable. Then, take their usbs from them, and distribute them randomly, and let them use jack the ripper or so. Twist, you would have added a virus or something into the USB stick, so they get infected with a "silly pop up" once they start jack the ripper. They get to play, and the exercise will stick with them.

    Teach them about 10 minute mails pages, to open a silly account t somewhere.

    Make them use a VPN like mullvad or some that you have set up to access a specific page or make web searches. They can notice the difference in content depending on the country they are exiting with. Twist: you control the VPN, provide them at the end with a list of accessed pages so they understand how the vpns do not ensure privacy. Explain simply what a VPN is (tunnel,etc).

    • barryamelton@lemmy.ml
      ·
      1 month ago

      Follow-up: teach them to learn to troubleshoot and search. Take the fear of breaking something from them by providing them with a VM with windows where they need to fix something or install a driver. Provide them with a Linux VM just for them to try too.

      Teach them mistrust. Make them upload things to a copy of Google docs or something, and then show how you have access to everything.

      Teach them about open source as a precondition for being able to trust software.

      • Quik@infosec.pub
        hexagon
        ·
        1 month ago

        Especially the "don’t be afraid to break and how to troubleshoot" part seem very important to me, I will definitely do that. Thank you!

  • Riley@lemmy.ml
    ·
    1 month ago

    I think about this all the time, I really could see myself getting into computer education ten years down the line.

    What I would do is this:

    • Focus on recreating styles of computing that produced our most digitally literate generation: Gen X (for context, I was born in 2000).
    • Give everyone in the class a Raspberry Pi and a MicroSD card. Guide them through the setup process. This recreates larger, more complicated computers in microcosm.
    • Start out with the Lite version of the Raspi OS, allow students to discover the different components of an operating system: Bash, window management, sound, the desktop, office applications. Take them through some common Raspberry Pi tasks.
    • Do not allow the class to become the Adobe/Microsoft power hour. This is the number one way we are failing our students today.
    • Have a unit focused around free software and the open source movement. Focus on social media literacy as well. Ensure that students understand how social media algorithms work, how these companies make money, understand that users are the product.

    There's probably more I could come up with if I sat down to really plan out a week by week lesson plan, but this is off the cuff where I'd put the focus. So many of these topics have Connections-style related points. "Why is my computer at home different from a Raspberry Pi?" gives you a great opportunity to expand on CPU architecture, which leads to how computers actually "think". I remember when I was a child one of the things that I was most confused by was how a computer was able to turn Python into something it actually understands, that can be a fascinating lesson in the right hands. How does a computer know where to look on the disc when it boots up? It's great!

    Kids already know how to use phones and tablets. Take concepts from those, concepts they are already familiar with, and then explain the deeper process behind it. Computers are engineered by people, you can understand them, it's not magic.

  • Scrubbles@poptalk.scrubbles.tech
    ·
    1 month ago

    One thing I've been reading is how the younger generations haven't grown up with what we call traditional technology. There are people entering the workforce who have used iPads for most of their lives and don't know what a directory structure is, or a file share, or basic word/excel/pp skills. Think about it, iPads made it so easy by showing most recent items that they don't even really know ehat folders are.

    Those are all things I took in my first few computer classes. How to make a word doc. Basic formulas in excel. How to make a PowerPoint do a star wipe. Those are real tangible skills that everyone should know entering the workforce. Then, if people show a talent for it, I would encourage them to pursue something like programming.

    People here are suggesting low level things like bash scripting because it's what we know and think is important, but for most people it's things like how are files stored, and how do I sum a column in excel?

  • wuphysics87@lemmy.ml
    ·
    1 month ago

    Do something that will make them laugh and enjoy themselves.

    I gave a seminar once that ended with a demonstration of the terminal, ssh, and nginx. I had everyone go to the url where I was hosting a hello world. I killed the server over ssh and told them to refresh the page. Nothing there. I swapped the page, turned it back on, and told them to refresh the page again. I Rick Rolled them. They all laughed. It may not have been the most informative talk, I didn't really 'teach' them anything, but I got some good questions afterwards.

    Be creative and make it fun and they will come to you.

  • oktux@lemm.ee
    ·
    1 month ago

    I think self-hosting a simple, static web site on a Raspberry Pi would be a good project.

    • There's something satisfying and motivating about creating a website from scratch and publishing it for everyone to see.
    • It's a good starting point for interested students to dive in even further, by updating the website, self hosting other things, or learning to program.
    • Learning to host a website touches on many fundamental technology areas:
      • Basic linux commands, which introduces concepts like directories, executable files, and the root user that are applicable to all OSes.
      • Basic networking, answering questions like: How does the internet work? What really is "the cloud"?
      • Basic security, covering things like defense in depth and social engineering. I think for this one I would ask the question, "What would we need to do if this website accepted personal info?" as a way of talking about the enormous technical and legal complexity of securing data.

    Overall, I think a practical, interesting project is a great way to make lessons concrete and engaging, and this particular project would an excellent springboard into a variety of topics that are fundamental to the invisible technology that underpins everything we do day to day.

  • fractal_flowers@lemmy.ml
    ·
    edit-2
    1 month ago

    Honestly, probably the most important thing is to move away from any tools that hide what is going on. "Magic" is bad for learning, though it can be useful once you already know what is going on.

    If I were to teach a class like this, it would be something along the lines of:

    • start in a terminal, perhaps using the Ubuntu server distro
    • begin with basic commands like help, ls, and cd.
    • show how to write shell scripts
    • show how to install new programs using a package manager like apt

    After they are comfortable with the terminal, I would walk through installing the Ubuntu desktop distro so they now have a GUI. Then, I would teach them a "real" programming language, probably Python:

    • at first, I would require them to write their program in a plain text editor and compile/run it from the command line
    • after they are comfortable with that, I would let them use a code editor
    • as part of the programming unit, I would introduce the network stack and have them create a server
    • at some time during this unit I would also teach them git

    After that, I'm not sure where I would go--there's a lot of different directions! Some ideas:

    • how computers work on a more low level (transistors to assembly)
    • how to build a desktop computer (or even just take one apart and put it back together)
    • how operating systems work (syscalls, time sharing, memory management, basics of C)
    • bootstrap their own programming language (assembly -> Forth -> Lisp -> ???)
    • web development (requests, databases, basics of HTML+CSS+JS)

    I also think a capture the flag event would be fun (like /u/half_built_pyramids@lemmy.world suggested), but maybe wait till closer to the end of the year/semester for that