None-technical takeaways from a technical course

On the Tuesday two weeks ago, I finished my last quiz of the Machine Learning course on Coursera. And that marked the end of my learning journey which in total spanned over twelve months. Many times during this journey, I felt that I couldn’t progress any more. I quit more than once, but eventually I decided to go back at it and complete the entire course.

Why I took such a difficult technical course? For one, I am deeply curious about Artificial Intelligence and Machine Learning. I want to understand the technology that has been shaping my daily life for years. For another, I want to learn the engineer way of thinking. As Elon Musk said, computer science is a way of thinking. It is important to acquire new thought process so that you are able to uncover new solutions that you are not able to see before. So what I have learned?

The power of alternative design
For anyone who has basic exposure to any programming languages, we know the use of loop to perform repetitive calculation/tasks. What it does is that it goes through each item in your dataset and perform the same calculation over and over again. The downside of this approach is that it requires significant computing power and it can even crush if you accidentally get yourself into an infinite loop. I have been there a few times!

What has been repeatedly used in the machine learning course and in the programming assignment, is the replacement of “loop” with vectorization. Instead of using loop function and repeat the same calculation one by one, you can run the same calculation for every data point all at once by turning them into vectors/matrices structure. Boom, suddenly you can produce same results within a fraction of time using a fraction of computing power. The beauty of this approach can only be felt when you apply it yourself. One line of code can replace a whole block and return the same result. It is magic.

It also helps me understand parallel processing in a blockchain context more intuitively. One transaction at a time vs. 10,000 transactions at a time. Now I certainly appreciate Palkadot project more, and the same goes to NEO.

It teaches an important lesson that sometimes, keep doing more work in the same way is less valuable than taking a step back and re-design the process.

Structured thinking
How do you solve a coding project? You first search for framework/library that might be a fit. Next, you break it down into several steps. Finally, one step after another, you reach your end goal. It might sound simple. But the ability to break down complex problems into several simpler components and establish progressive relationships among them does not come naturally for many.

Make or break: the details in the fabric
De-bugging was the most painful part of the entire learning process. When you wrote a whole block of codes, hit run and the codes just broke, ouch. I can’t remember how many times, after hours grabbing my hairs, I found out the error was due to missing a “.”, (un)capitalizing a letter, or incorrect spacing. If you think about it, every good coder will make a perfect banking monkey as he or she has perfect attention to details. It is no coincident that there are so many engineering majors on wall street.

After years of training, I still appreciate the gentle reminder from these Machine Learning assignments – To reach the finishing line, your work has to be 100% error free.

It is actually sad to say goodbye to a good online course. With the knowledge and gratitude, I am ready to move on and explore the AI-driven reality with more confidence and comfort.

Leave a comment