• 1 Post
  • 4 Comments
Joined 4 months ago
cake
Cake day: September 8th, 2024

help-circle
  • 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/[email protected] suggested), but maybe wait till closer to the end of the year/semester for that