Enables more effective communication with Artificial Intelligence systems.
Enables more efficient and precise input formulation.
Accelerates problem-solving and algorithmic thinking when designing automated workflows.
Increasing productivity
With a Computer Science base, very efficient and precise inputs can be formulated.
For instance, learning what a loop is enables more efficient input creation. As you can reference a set, and have repetitive transformations happen to each element in the set by using a for loop.
For instance, imagine a website, with a page that has 10,000 images on it and you want to update 100 images that belong to the same group, and the update involves adding the same border style around each image. To do so, a contextualised word set based on this template can be used:
For each [element] in [encapsulating set] do this: [action set]
And the contextualised word set is something like:
For each [image] in [the 100 image group on the page] do this: [add a 3px red border around each image]
And that, is much more efficient, than manually referencing 100 images.
Studying computer science
I started learning Computer Science with intensity in January 2022.
I didn't study computer science at university.
I learnt it all online via Google Search, YouTube, X.com, and AI.
When I started I was already comfortable creating Excel functions like INDEX/MATCH, VLOOKUPS, COUNTIFS, etc.
I gradually learnt various concepts and did exercises. I'd read, watch video tutorials, and do coding exercises on Codewars and LeetCode. Started with easy ones and then scaled.
As I was learning, I used things like concept compression, active recall, and spaced repetition.
I tried using ANKI but found it just didn't click. I found the interface a little bit clunky. I just extracted insights into Notion. With every topic getting a single page or so. And did recall almost every day.
I concentrated on getting good at describing what needs to get done, keeping things simple, and getting good at debugging.
If you learn the things in the next section, you are going to have a decent base that is going to be very helpful when engaging with Artificial Intelligence systems.
Useful things to learn
Classes
Classes: A blueprint/template for an object
Objects: An instance from a class. Objects can store data and do actions
Construction: Creating an object from a class blueprint and initialising its starting data
Data
Data types: Categories for primitive data pieces such as booleans [true or false], integers [whole numbers], floats [numbers with decimal points], and strings [character based text sequences]
Data structures: Structures for storing and organising data, the 3 main types being linear data structures [arrays, lists, stacks, queues], graphs [linked lists, trees, DAGS, etc], and hash maps [key value pairs like a dictionary]
Variable: A sticky note with a name written on it and then linked to a box
Control Flow
Conditions: Statements that are true or false
If Statements: Condition based action sequences
For Loops: Repeat code for every element within a structure
While Loops: Repeat code while a condition is true
Algorithms
Algorithms: Step-by-step recipes to create something
Functions: A reusable code machine that houses step-by-step recipes to create something
Time complexity: Measures how an algorithm's execution time scales as the input size increases
Space complexity: Measures how an algorithm's memory space usage scales as the input size increases
Big O Notation [Worst case] and Big Omega Notation [Best case]
Recursion
Recursion: Where a function calls itself
Base case: Condition that stops infinite recursion
Recursive case: Call to itself with a varying input
Call stack: Each recursive call adds a new layer to the stack until the base case is reached, which then resolves them in reverse order (LIFO)
Search
Binary Search: An efficient algorithm for searching ordered sequences for a specific value by running a loop, that: Computes the search range, computes the middle element, compares the middle element to the target, checks if the middle element matches the target, and if there is a match the search is done, and if there isn't a match, the algorithm recomputes the search range by splitting it in half and repeats the process on the remaining half
Depth-First Search: A graph based search algorithm that involves traversing a graph pathway by pathway, and when a pathway is fully explored, there is reversal in direction to explore the nearest unexplored pathway [a pathway is just a node set sequence]
Breadth-First Search: Graph based search that explores the nearest encapsulating node set before expanding
Dynamic Programming
State & Transition: Identify overlapping subproblems and optimal substructure via recurrence relations
For example, Fibonacci uses F(n) = F(n − 1) + F(n − 2), with F(0) = 0 and F(1) = 1. Start with the number you want, break it into smaller calls, and save each result. Dashed boxes reuse a saved result instead of expanding the same branch again.
Bottom-up: Tabulation based matrix chain multiplication
Start with the smallest subproblems and build up. Here, A1 to A4 are matrices. Each box names a chain segment and stores its minimum multiplication cost. A single matrix costs 0; longer segments reuse previously stored costs. The links show the two parts created by the current best split.
Execution
Async: Temporal execution varies
Debugging: Fixing problems
Verification: Verifying that everything works
Context
Prior to learning Computer Science online, I did have a decent quantitative base. And a decent qualitative base.
Math is something I've been decent at since I was a kid. I got a gold medal for an International Competitions and Assessments for Schools [ICAS] mathematics test when I was in grade 6. I was competing in the Southeast Asia region, which involved being in the same grading pool as kids from Singapore, etc.
When I was at university, I did a law/finance double degree. For the finance degree, I started as a quantitative finance major, and I'm pretty sure I did all the math needed, yet the records say I have a corporate finance major.