this post was submitted on 17 Sep 2024
131 points (99.2% liked)

Asklemmy

43796 readers
731 users here now

A loosely moderated place to ask open-ended questions

Search asklemmy 🔍

If your post meets the following criteria, it's welcome here!

  1. Open-ended question
  2. Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
  3. Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
  4. Not ad nauseam inducing: please make sure it is a question that would be new to most members
  5. An actual topic of discussion

Looking for support?

Looking for a community?

~Icon~ ~by~ ~@Double_A@discuss.tchncs.de~

founded 5 years ago
MODERATORS
 

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…

top 41 comments
sorted by: hot top controversial new old
[–] Kache@lemm.ee 55 points 1 month ago* (last edited 1 month ago) (1 children)

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".

[–] SnotFlickerman@lemmy.blahaj.zone 20 points 1 month ago

Literally half this stuff were first-year college courses for me, even though I was already familiar with a bunch.

I agree it needs to be pared down a bit, but I also agree with OP that actually a lot of this should probably be being taught at the high school (or german equivalent) level. I think we do a disservice to students by not having some of this available to children in lower grade levels.

[–] conciselyverbose@sh.itjust.works 40 points 1 month ago (3 children)

Teach them how to evaluate sources on the internet.

Seriously, all the hardware/OS whatever is cool, but if you want to really make a difference that will affect everyone, teach them how to find information, how to evaluate it, and how to use internet reference material.

[–] minibyte@sh.itjust.works 12 points 1 month ago (2 children)

To build on this: teach them what social engineering is and how it can be predatory.

[–] hoshikarakitaridia@lemmy.world 5 points 1 month ago

This.

In my experience 95% of crimes committed on a digital platform are crimes of social manipulation.

Impersonation, phishing, scams, ... It's all just a social game.

Yup. In a properly secured facility with the best digital security, the weakest link is often the front door. All it takes is a careless front desk attendant, buzzing an “elevator repair tech” into the facility without bothering to check and see if anyone is actually scheduled to be working on an elevator.

[–] Quik@infosec.pub 9 points 1 month ago

Yeah, I will generally do a lot of "how to use the web correctly", from basic privacy stuff (no, you don’t have to have something to hide; why care; no, it’s not too late…), ad blocking, using search engines correctly, evaluating sources etc.

I’d argue that this is also the job of language and history teachers. “How to do research and vet your sources” could be an entire class on its own. Reading comprehension is in the toilet, largely because people have lost the ability to infer a piece of media’s intended audience. That’s a major component of reading literacy; Being able to read a news article, see an insta reel, see a meme, read a comment, etc and infer who it is aimed at. You should be able to see a news article aimed at conservatives, and recognize that it has a conservative bias and is aimed at conservatives. You should be able to notice the different ways they will phrase the same events, to add a particular spin on them.

People have become accustomed to having everything spoon-fed by an algorithm that is tailored specifically to their interests and worldviews. When someone sees something that doesn’t perfectly conform to their interests or worldviews, they used to go “oh this isn’t aimed at me” and they would quickly move on. But now they have a tendency to attack the creator for failing to aim it specifically at them.

You see a comment talking about the proper way to do something physical, then there is an entire swath of “but what about the people who can’t do that physical thing due to illness/disability/inexperience/etc” responses. Because those responders have failed to infer the intended audience. If you’re disabled and can’t do something physical, you’re obviously not the intended audience. But people have forgotten how to recognize that, because they have gotten so used to having everything on their For You page be specifically chosen for them.

[–] teawrecks@sopuli.xyz 29 points 1 month ago* (last edited 1 month ago)

When I was in high school I wanted to learn how to program, how computers work, etc., but when I took the Java course offered the assignments were boring basics that I couldn't use for anything. Everyone in the class thought of it as a blowoff course.

What everyone in the class was intrigued by was the fact that the teacher ran her own local network for the class and didn't properly secure anything. It wasn't long before someone figured out that they could shut down any other computer on the network using a simple shutdown command on the cmdline, passing another host as the target. Which led to an arms race of people finding ways to block themselves from being shut down, while also managing to shut each other down. Turns out a shutdown can't be issued if another shutdown is already in progress, so the first line of defense was to issue a 24h shutdown on your own machine. But then we looked at the params to shutdown.exe and found the ability to abort shutdown options. Soon we all had a library of offensive and defensive .bat files, and the class was an all-out digital warzone!

All that is to say, kids like:

  • to play games
  • they like to compete
  • they like to poke and prod things, make them behave in ways they're not supposed to
  • experiment
  • feel safe breaking things and learning from the pieces that come out
  • "hacking"
  • and they like walking out of the class, seeing a random piece of technology, and having a new found understanding of its strengths, weaknesses, and how to manipulate effectively.

They don't like:

  • assignments
  • being told to do the same thing as the person next to them, print out some expected result, and turn it in
  • leaving the classroom and thinking "finally"
  • not knowing how to tie anything they learned back to their lives outside the class.

I know you have a list of things you'd like them to learn, but most kids will look at how difficult and primitive the computer you're showing them is, and then look at their phone, and say "why am I learning how to use an old style computer? New computers don't work like this, they have touch screens, and voice control, and app stores". You and i know this is a misguided mentality to have, but that's what they will think. It's up to you to relate everything in the class back to the computers they are actually familiar with. If you give them a new way to understand and interact with the computers they use daily, you will have them hooked.

[–] barryamelton@lemmy.ml 17 points 1 month ago (1 children)

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 13 points 1 month ago (1 children)

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 13 points 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!

[–] einkorn 14 points 1 month ago

The Chaos Computer Club Initiative Chaos macht Schule might be able to help you with some materials and guidance.

[–] koncertejo@lemmy.ml 13 points 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.

[–] python@programming.dev 13 points 1 month ago (1 children)

I held a basic digital security course for the 6th-8th graders when I was in 12th. My favorite topic from that was Phishing and Password theft.

I only had the time and resources for some PowerPoint slides of emails, where students could point out what exactly is suspicious but that wasn't very engaging.

If I had the time though, I would have set up some trackable links for the students and told them to try Phishing School staff and their friends/parents. It would have been some free pen-testing for the school, plus students would have been way more willing to internalize information that allows them to do something "naughty". The main point is that most digital risks don't come from some high-concept hacking, but from social engineering and a moment of inattention. Everyone can fall for it, no matter how smart they think they are. I think that's an important lesson to learn.

[–] hoshikarakitaridia@lemmy.world 5 points 1 month ago

I made course for 11th and 12th graders together with a friend when I at university. It was only one week long and the topic was neural networks (we hit the timing right, it was 3 years before the AI hype started).

I did that experiment where you give the students 5 random places and amount of time out of a week. You say that is the movement profile of a fictional person and the students have to find out why those places matter.

Makes them learn the importance of information and how linking data can be an insane tool for understanding as something. But it also teaches how easy it is to gather information from small data points and self aware you should be about your digital footprint.

[–] wuphysics87@lemmy.ml 11 points 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.

[–] SnotFlickerman@lemmy.blahaj.zone 11 points 1 month ago* (last edited 1 month ago) (3 children)

hand out USB drives/cheap SSDs

learning some “real” programming

  1. Handing out drives has to go hand-in-hand with education about how "you shouldn't just plug in any drive that someone hands you or you find on the street." That's basic security consciousness at this point. You might point them towards the Open Source schematics for this USB Firewall: https://globotron.nz/products/usg-v1-0-hardware-usb-firewall

  2. Don't start with "real" programming. Start with scripting. A place where you can get the feel of the ideas of programming while starting somewhere more basic. Linux scripting and Powershell scripting are both good places to start. You still get programming fundamentals (what is a loop, what's an if-else statement, etc) without jumping into confusing versioning or where to get updates (should I let Windows update Python, or do I want to update it with pip? You have to choose one or things get fucky with them overwriting each other).

  3. When I mean more basic I mean literally things like SYNTAX and PATH are way more important for students to be understanding before they start programming. Syntax and path (relative and absolute), in my opinion, are easier to learn when you're learning them on the OS you're using. That means "real programming" is obfuscating things like syntax and path, and students need to understand these core concepts before they move on to "real programming.* EDIT: Like seriously, students need to understand what the fuck a delimiter is and why it is!

[–] Quik@infosec.pub 3 points 1 month ago

Yeah, I will definitely start with scripting first, although I think Python scripting or similar is better for getting used to actual programming/loops and variables are just better and more intuitive than in scripting languages.

I actually only have programming on the list because I felt like I somehow needed to teach it, which is definitely true, but not at the very beginning.

[–] Quik@infosec.pub 3 points 1 month ago

You’re absolutely correct about the PATH thing, I think I should teach about how filesystems work in general (like, most people use devices that only have "apps" and have never used a file system/directory structure)

[–] Quik@infosec.pub 2 points 1 month ago (1 children)

I will have to teach some explicit security consciousness as well, basic and maybe not so basic stuff, maybe even spice it up a notch and do an intro to opsec to interest people (probably not gonna fit for time reasons, but will do basic security in any case)?

[–] teawrecks@sopuli.xyz 3 points 1 month ago* (last edited 1 month ago)

The best way to do this is to show them the exploit in action. Nothing perks a kid's ears up like holding up a USB drive and saying "there is a virus on this".

Run a demo in class of how easy it is to plug a random drive into one computer, and suddenly have full access from another computer (remote viewer and webcam access to really drive the point home. They're not going to be amazed when you type whoami and the console says root.)

Doing this is like saying "I know black magic and if you listen to me, I can teach you how it works, and how to defend yourself against it". What you have is no longer hypothetical to them, they will be invested.

[–] scrubbles@poptalk.scrubbles.tech 11 points 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?

[–] Fondots@lemmy.world 7 points 1 month ago (1 children)

I consider myself to be a fairly tech literate person. Not a professional, but better than average. The guy my family comes to to troubleshoot computer problems, basic working understanding of programming and networking but not nearly enough to do it professionally.

I think you're shooting too high on some of these.

Basic hardware is good, but don't spend too much time on it or go into too much detail, just kind of basic overviews. Boot chain is probably pushing it, but basic overview of operating systems is good.

I probably wouldn't go so far as having them install their own Linux distro, that feels like you want to take a week of your class time to troubleshoot all the potential issues that come up, if you do it on school computers you're probably looking at a nightmare getting that cleared by your IT department, and if it's their personal devices you're probably going to catch an earful from some parents for messing up their/their kids computer.

I do think it's a good idea to have some computers running Linux for them to use so they can see what it's like, and probably some macs too, I'm not an apple guy but there's a lot of them out there and people should be at least a little familiar with both.

I don't know what the current state of things in schools is, but you can certainly hand out some flash drives, but there's a decent chance they already have some. I know over a decade ago when I was in high school pretty much all of us were already carrying around flash drives.

Programming is good to introduce them to, python is a solid choice, but unless these are kids who are pretty sure they want to go into computer science I wouldn't go too deep. It's not a particularly useful language for actual usage but I think that BASIC still has a useful role as a way to teach the fundamentals of programming to people in an accessible way to see if they may want to pursue it further. I know programmers hate it, but visual basic is also kind of satisfying because it makes it pretty easy to crank out something that looks like an actual finished product.

I'd keep networking pretty straightforward. Network stack and OSI are probably a little too high level to go into, but basics about WiFi, Bluetooth, Ethernet, routers, switches, firewalls, etc. are good to know.

Basic typing and general computer use are probably something a lot of kids could use some work on. A lot of kids these days have a lot less experience with keyboard and mouse computer use thanks to smartphones and tablets. Don't shun the touchscreen devices though, they're more powerful than a lot of people give them credit for, and since that's the way technology is trending figure out how to push the borders on what you can do with them.

[–] SnotFlickerman@lemmy.blahaj.zone 6 points 1 month ago* (last edited 1 month ago) (1 children)

So much yes on the typing, The number of young people who don't even own a laptop and do all homework/correspondence on their phone is too damn high. (Which coincidentally, is tied to how they don't understand file systems/path)

That's not to shun the use of phones or that form factor, and maybe this is just the old fogey in me, but phone interfaces are so limited and you have to jump through so many hoops to do what amount to keyboard shortcuts on a PC. (Yes I know some young people can be quite quick and accurate with them... thus old fogey)

It's rather more about how long it ends up taking them because they're shunning a device that is aimed at streamlining such processes, instead of a device that is aimed at being a phone, with a computer slapped on for funsies.

[–] Quik@infosec.pub 3 points 1 month ago

I’m absolutely with you on the typing, the problem is (as far as I’m concerned) that learning typing takes a ton of time that I don’t want to spend just on that, so I’ll instead provide them with resources on how to improve typing skills if they want to.

[–] SirDerpy@lemmy.world 5 points 1 month ago (1 children)

education about CS/responsible use of technology

The vast majority of what's been suggested in the OP and comments focuses on the technical: CS and IT. But, no one's focused on "responsible use of technology". I'd like to see a course that focused on the morality and ethics of usage.

Examples of possible classroom topics:

  1. Is it moral and ethical to spread disinformation as a means to "good" end? Is it acceptable to spread truth if the consequences are likely "bad"?

  2. Is it moral and ethical to use generative AI to effectively libel/slander a political opponent? Does it the analysis change if used for advertising?

  3. Is it moral and ethical to pirate media? Does it depend on what's being pirated? Does it depend on why it's being pirated?

The "problems with such a course:

  1. It'd require prerequisite of basic philosophy/logic and basic CS/IT. It could be a lot of material to cover. Course construction and presentation needs to be focused, rooted in experience, likely a passion project.

  2. The audience may be too young to think in these terms. A little experience goes a long way towards understanding these topics well enough to have a good faith classroom discussion. I don't intend ageism, in fact the opposite. I think today's youth are more capable than when I was such an age: Make it known that the course is "hard". Those that choose it will excel.

[–] isyasad@lemmy.world 5 points 1 month ago (1 children)

Is it moral and ethical to pirate media?

This is a good one. I had a high school computer class and we had a quiz question that was something like:

Digital piracy is:
a. Moral and legal
b. Moral and illegal
c. Immoral and legal
d. Immoral and illegal

Of course, the only correct answer was "d". I thought it was such a one-dimensional and purposely ignorant question. I'm not even a piracy advocate or anything, but that was kinda ridiculous.

[–] TonyTonyChopper@mander.xyz 1 points 1 month ago

Big Media must have lobbied your high school

[–] j4k3@lemmy.world 4 points 1 month ago

I wouldn't start with python. Just do bash scripting. Python is inaccessible still if you do not use it regularly and it still has the ridiculous complexity problems of all languages.

I think the scope of all computing is hard for anyone to take in effectively. It really takes something like Ben Eater's 8-bit breadboard computer project (YT) for a person to really start understanding fundamental computing.

My favorite microcontroller experience is Flash Forth. You can put it on an Arduino with an ATMega 328 too. The simplicity of FORTH can teach a ton in a short amount of time because it gets a person straight into access to bits, registers, and assembly, along with the hardware documentation. Once FF is on the microcontroller, it is running the FF interpreter natively. At that point, you only need serial access through USB. It is quite easy to flash an LED, read the ADC and setup basic I/O. Branching and loops are a bit more difficult. This eliminates the need for a language that uses a lot of arbitrary syntax. It does not require a lot of documentation, and you do not need to fuss with an Integrated Development Environment.

I would focus on the ideas, that anyone can count to 1 and anyone can break down logic into if statements. It might be bad code, but bad code is better than no code when it comes to someone getting started.

[–] cygnus@lemmy.ca 4 points 1 month ago* (last edited 1 month ago)

Social engineer a way to hack into their Snapchat

[–] tiny_electron@sh.itjust.works 2 points 1 month ago

Make a fast typing competition so they learn how to type and hopefully competition makes it fun

[–] half_built_pyramids@lemmy.world 2 points 1 month ago

A simple ctf, demonstrate how to use strings or something in class then give them an elf to run strings on themselves

[–] Willem@kutsuya.dev 2 points 1 month ago

I love all the ideas you have! Explaining how computers work, on a basic technical level, is something everyone should know nowadays.

I would suggest to focus the programming on something small, fun and instantly rewarding. Something like Snake in Pygame is not overly complex and you can take it step by step, so that every student will have something to show at the end, with varying levels of complexity. I would advise against using templates for projects, a lot of courses do but in my opinion it makes it harder for the student to replicate the work on its own later on.

In terms of networking, setting up a small test network with a WEP access point, a WPS access point and a WPA2 access point and letting the students (in groups, probably) try to figure out how to access/crack the passwords for them. (WEP and WPS should be easy, but WPA2 would require the deauthing exploit, which is a tad more complex).

Also the idea of cheap usb drives, which they can put on a live distro (or make it come with one) is a great way to start the lesson. This way they can have a setup that's detached from the usual limitations school pc's give. (if that's still a thing).

Do make sure to teach them the ethics around hacking, cracking and downloading. From what I remember, Germany used to be decently lax on all three, but started to crack down on it in the past 10 years. Teaching responsibility and what the consequences are is very important.

[–] BombOmOm@lemmy.world 2 points 1 month ago* (last edited 1 month ago) (1 children)

I'm not sure how much time you are given and how much 'hands on' is desired, but you could buy a bunch of cheap, old, used desktops (that all use the same parts) and teach the kids what the various parts do (CPU, GPU, motherboard, PSU, SSD, RAM). Then have them build the computers and install linux on them.

Maybe pre-wire the PSU to most of the parts to save time during the build day(s). You may also want to have the CPUs pre-installed so you don't get bent pins galore.

This entire idea would be massively benefited by a TA that could assist working with groups.

[–] Quik@infosec.pub 4 points 1 month ago

I planned on letting them build cheap, old desktops in groups so they are not as afraid of opening their devices (I find this to teach a different relationship to your devices in general) and so they don’t inherently see computers as a black box.

Thank you for your recommendations!

Write several different versions of the assignment each containing pieces of what the students need to do to pass. Give the different versions out randomly to the students and break them up into small groups to discuss what they're supposed to be doing.

Instruct the students to compare their handouts and look for commonalities that might suggest what the assignment actually is then have each group present their findings to the class with a small Q&A and point out where students were lead astray.

You could also find a real news story about a highly polarized topic and pull articles on it with differing takes (nothing current). Have the students write a short essay about what actually happened and what opinions the author shared but presented as facts.

[–] Eiri@lemmy.ca 1 points 1 month ago* (last edited 1 month ago)

Maybe do robotics (likely in a simplified way; surely "robots for dummies" is a thing?) and have them make their robots compete in some sort of competition at the end of the year.

I'm not even a competitive person at all, but when our school had us compete on Popsicle stick bridges, I had a ton of fun. Creative projects with a clear, real-world benchmark at the end are really fun.

[–] fractal_flowers@lemmy.ml 1 points 1 month ago* (last edited 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

[–] oktux@lemm.ee 1 points 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.

[–] multifariace@lemmy.world -2 points 1 month ago

I would start by asking AI.