Beth Academy
Lesson 01

The Duality of Computer Science, an Introduction

A practical introduction to the topic of Computer Science.

What is Computer Science?

I could go into a long, dry, explanation about how computer science is the study of computers, and algorithmic processes, and computational systems, and throw a lot of technical terms around to make myself look smart, and make everyone who doesn't already know those terms feel dumb.

But the better, simpler explanation is that it's magic, plain and simple.

I don't mean that in an abstract way, or a metaphorical way. Thinking of it as magic should not invoke the imagination part of your brain at all.

It is stereotypical, incantation + spell focus, proper wizardry. It just doesn't feel like that, because we understand how it works, so we apply a different label to it.

But think about it: What does a wizard do? Picture an old bearded man with a pointed hat, holding a staff aloft as his dress billows in the wind.

He speaks an incantation, which uses a strange encoded language, that follows a particular syntax that he learned, which gets interpreted by his spell focus (wand, staff, orb), and the focus manipulates natural forces to make something occur that would not have occurred on its own, by the spellcaster's will.

What does a programmer do?

She describes her will using a strange encoded language, that follows a particular syntax that she learned, which gets interpreted by the CPU, which manipulates an electrical field across a sequence of transistors (I'll go into that more in another lesson), which causes something to occur, that would not have occurred on its own, by the programmer's will.

We have a fireball spell, people use computers to set off fireworks all the time.

We have spells to check the quality of our drinking water, spells to send messages to each other across impossible distances, spells to dispense money if people have enough in their account, spells to automatically type commands in Twitch streams, spells to do literally anything that anyone could possibly imagine, that can somehow be done by manipulating the electrical field across a sequence of transistors.

...Who doesn't want to become a wizard?

What is Computer Science?

Computer science is being the parent of an insolent toddler who always purposefully twists the meaning of your words so that he can avoid following your instructions at all costs.

Computer science is trying to craft the perfect untwistable wish to the most indifferent genie that ever existed.

Computer science is spending hours and hours pulling your hair out, reviewing your work a hundred times, feeling absolutely certain that you crafted the perfect wish but it's ignoring you anyway, only to wake up the next morning and spot instantly that you forgot to explicitly tell it NOT to do something important.

I'm going to do my best to teach you how to manage that with minimal stress, and I will always be happy to help you figure out why something isn't working, when it feels like it should be.

Not all of the lessons will be specifically about software development. Early on, especially, there'll be some theory that I think will help make it easier to understand why the computer interprets things the way it does.

Troubleshooting is an important skillset to learn for anything related to computers, so I always recommend googling any errors you run into first, because 99% of the time, someone else ran into that exact problem 10 years ago and the solution will be right there at the top of the Google results.

The number one obstacle I've seen people have, is thinking that they're not smart enough for this, or that they can't do it. Anyone can become a wizard.

I was a dumb kid. I mean, an unintelligent kid. I failed to apply basic logic in my daily life, I was never curious to understand why anything ever happened the way it happened, I was never the type of person who could just glance at something and instantly understand it.

I got better in that regard eventually, but when I first started down this path, I was completely on my own. I didn't go to college, so all I had was the information available online, and there was only a tiny fraction of the resources available back then compared to what we have now. And even with what little there was, I always felt like the explanations they gave could only be understood by someone who already knew the subject matter, to the point where I often didn't even know what terms to Google to try to learn more about things. Definitions of terms would contain other terms I didn't know the definitions of, things like that.

I struggled really hard, for a long time, but I was always able to figure out the things I was stuck on in the end, because I didn't tell myself that I couldn't do it.

It's understandable to see a giant block of code, where you have no clue what 99% of it is supposed to mean, and feel overwhelmed by it at first.

But right now, you're not meant to be able to look at a mountain of code, written by someone else, and automatically know what everything does. Developing muscle memory takes time, learning to play an instrument takes practice.

Right now, your only goal is to learn concepts that will help you look at the mountain of code, recognize the general shape of its different parts, and recognize which parts are likely to be relevant to you. Those parts will be a very small piece of the mountain. You can handle a small piece, I promise.

Writing code will come with that, fairly quickly, but any code I put in front of you early on will be extremely bare bones and easy to comprehend.

The purpose of these lessons is to teach you how to be a wizard as quickly as possible, without wasting your time.

Hi, I'm Beth. Wanna be a wizard?