Cover photo

Algorithmic thinking🌷🌷

Part 1. Overview

Coding is a small task within programming and software engineering. Coding can be simply understood as "translating" instructions from human language into computer language. Programming includes additional tasks like planning, designing, developing (coding here), testing, deploying, maintaining, etc.

Comparing it to cooking, a skilled chef must understand the essence of ingredients (how ingredients react with each other, with spices, with fire, with water, acid, the fat and marbling in meat...). From this, the chef designs the steps, aka the recipe (which ingredient to use at which step, how to cut, how long to cook... the next step like this...). Not to mention the "soul" of the dish, a regular person can cook like a chef if they follow the recipe 100%. Similarly, a programmer must understand the essence of data, hardware, think to find the 'recipe'. Once there's a detailed recipe, even ChatGPT or a 10-year-old could copy the code accurately.

The steps of Algorithmic thinking involve breaking the main problem into smaller ones. For each problem, determine the input and desired output. Find a solution for the problem. Connect the steps into a system. Apply the system.

One of the interesting aspects of coding is observing your mind imagining, searching memory for similar or related algorithms to the problem. After recognizing how your mind solves the problem, you describe it to the computer to let it "do the dirty boring work".

Unlike human language where a word can have multiple meanings, a phrase can have even more; computer language is very specific, A is A, B is B. Computers do exactly what they're told, unlike humans who might say one thing and do another.

Thus, reading someone's code is easier than reading philosophy. From the code, you can understand how they perceive the problem and how they think to solve it.

AI has many interesting aspects. Of course, the highlight of AI compared to other programs is that it can "learn". When reading about how AI "learns", we understand how programmers perceive "learning" and how they think about "learning".

Current AI "learning" methods mainly include supervised learning, unsupervised learning, and reinforcement learning. This piece focuses on supervised learning, without getting into technical details like linear algebra, calculus... which are the essence of AI for experts. I'll just discuss the "learning" process.

Supervised learning steps are simple:

  • Receive input, produce output

  • Compare output with the target, calculate the "distance" between them

  • Update weights (neurons) to make the output "closer" to the target

  • Repeat

Comparing this to human learning. A teacher shows a technique (a dish, a martial arts move, a way to draw an object...). The target is the teacher's technique. The input is materials and tools (for a dish, art...); or the input is your posture and partner's (for martial arts). You compare your output to the target, adjust details in your technique to make your output closer to the target (the teacher's technique). With a teacher providing the target, calculating the "distance" between your output and the target, and pointing out what to update, learning becomes easier than doing these steps yourself, and you learn faster.

Swinging a sword, punching, kicking... to master a move, repetition is crucial. Repeating 10,000+ times is normal. But more importantly, in each repetition, you reflect, "this is better", "that's not right..." and in the next repetition, you make changes, abandon old details, try new ones.

"The definition of insanity is doing the same thing over and over and expecting different results."

Part 2. Riding the Waves

From the perspective of supervised learning, learning is simply adjusting oneself so that the output gets closer to the target, minimizing the distance between output and target. AI is much simpler than the human brain, but there are some interesting issues AI faces that help us understand our own problems better.

Issue 0. Choosing Targets

The first step to learning is seeing it as worthwhile. You must want to learn, to change yourself, to make your output closer to the target. Without this step, you're just pretending to learn, not truly changing yourself, just repeating actions, running a loop with no change.

But before this first step, you need to look at what your real targets are. What is your purpose, and do your targets align with that purpose?

This step is somewhat "divinely given"/innate, you don't decide your existence's reason, The Creator decides why you're born, and your job is just to follow that purpose (by chasing targets). Over time, as awareness changes, targets change, but they always align with the purpose.

A clear yet hard-to-see point. The general purpose of life is simply to enjoy life, through playing/creating. What you play/create, those are your targets, depending on your heart and capability. I mention this often, but I think everyone knows this subconsciously.

Joseph Campbell's advice on following your bliss: "All the time. It is miraculous. I even have a superstition that has grown on me as a result of invisible hands coming all the time––namely, that if you do follow your bliss you put yourself on a kind of track that has been there all the while, waiting for you, and the life that you ought to be living is the one you are living. When you can see that, you begin to meet people who are in your field of bliss, and they open doors to you. I say, follow your bliss and don't be afraid, and doors will open where you didn't know they were going to be".

Follow your bliss, meaning play the game with heart and at your level, do what is WORTH DOING, here and now. I use "worth doing" because sometimes what's worth doing doesn't bring pleasure or isn't what you want to do. You just know doing it brings your output closer to the target, and this itself brings bliss not dependent on pain and pleasure.

To be continued.

(Art credit unknown)


Loading...
highlight
Collect this post to permanently own it.
vaannguyen logo
Subscribe to vaannguyen and never miss a post.