Happy Computer Science Education Week, everyone!
The field of computer science has changed a lot over the past century or so (and even further back than that), and every new generation gets to learn about it in a different way. My dad studied computer science in college back in the 80s, and he loves telling stories about the punchcards they had to use to communicate with the computer – especially the one where his classmate dropped a box containing the ordered cards for a completed project down a flight of stairs. Trial and error was a time investment, and you had to make one entire statement for one machine instruction. The value in computers wasn't that they were smart - they weren't. But they were fast. As long as you told it exactly what to do, it's computational speed made it worth all the fuss.
When I first started learning computer science, I was a freshman in college being introduced to programming through Python, a more streamlined and far less tedious process than dealing with assembly language (my dad made sure I knew that when I asked for help with my homework). I remember writing my first script and being amazed at what was possible. Handling big batches of astronomical data, automating simple tasks, and translating any text to pig latin (my very first project) was just a few lines of code away. Beginning to understand logic and algorithms solved questions I'd had my entire life about the way computers worked.
Now, as educators are learning how important coding ability is to job opportunities after school, they are having students learn it earlier and earlier. The AP program offers multiple computer science classes for high schoolers to take for college credit, setting them up on a fast track once they get to college. Middle schools and elementary schools are teaching students the basics of computer architecture, algorithms, and introductions to hardware and software to give the students a head start on STEM concepts.
However, learning isn’t just for students! If you’re an engineer or a scientist, chances are you’re always learning. And if you’re looking to develop your software skills, look no further; we’ve compiled a list of resources for you so you can keep up to date with everything in the industry, not just the hardware we know you love so much.
While Coursera is a paid platform, many of its courses are able to be audited for free. Universities such as Harvard and Princeton offer computer science courses there, as well as companies such as IBM and Google offering certificate programs. Some universities even offer masters' degrees exclusively held on Coursera for computer science. They’ll provide you with a structured journey through computer science at many different skill levels, and specializations are available in every area from analytics to algorithms.
For those just starting out with the basics of code structure, the micro:bit Education Foundation has created editors for MakeCode, Javascript and Python that enable dragging and dropping of code segments as well as other educational shortcuts.
Work your way up through the ranks with Codewars, a martial-arts themed coding practice website. Pick a language out of a long list and work through various problems of varying complexity, getting hints and talking on a forum as you go. Text manipulation, numerical problems, and complex data handling are all on the table!
This book takes apart computer hardware and software to view them at their most basic level, showing they’re two sides of the same coin and unveiling concepts all of us have wondered about before. Petzold wrote that his goal was for readers to understand how computers work at a concrete level that "just might even rival that of electrical engineers and programmers." It adds a narrative to the technical concepts that keeps your attention, and has been described as "a love letter to computers." And the second edition came out this year with additional chapters!
Have any young ones around that you want to follow in your footsteps? It's never too early to start quizzing them on logic gates. According to its author, this book is perfect for you if you:
What was learning computer science like for you? We want to know! Shoot us a tweet @sparkfun, or let us know how you're celebrating Computer Science Education Week on Instagram, Facebook or LinkedIn.
I like to say that I've been "doing" computers since a few weeks after Neil Armstrong took his "one small step". I started volunteering in my high school's "Data Processing Center", doing things like running attendance reports. I got my first experience programming as a Senior when I had the opportunity to take a class in what was then called "Computer Math". I've been known to say that my first experience "programming" was plugging wires into a wiring board, but that that isn't entirely accurate as my first experience was unplugging wires so I could re-use the wiring board!
You mentioned Python. As someone who's been programming over half a century, I'll say this: although it seems easier to use for the "beginner", based on my experience it is FAR more error-prone than something like C/C++ for large programs. The latter's "protection" is well worth the added "complexity" of having to declare variables and types.
FWIW, I'm currently "taking a break" from working on a small project with an Adafruit QT Py - SAMD21. Hopefully I'll find the time to complete it in the next day or two.