# All Complex Things…

I always promised myself I’d never be one of those people that starts a blog post with “Here’s why I haven’t posted in a while” but in this case, it matters.

I signed up the the Stanford Machine Learning course on Coursera, and it’s the most challenging course I’ve ever taken.

In most ways, that’s a good thing. The course forces you to learn the low-level under-the-hood mechanisms that power ML tool kits. I’ve built my own gradient descent algorithms, calculated loss, and manually plotted complex data. I’ve learned about contour graphs, minimization functions and matrix multiplication. And it’s been HARD.

The course materials say you can take it without a math background, but **I would not recommend that**. If I’d taken a few weeks/months to catch up on Calculus and Linear Algebra before beginning, I’d be having a much easier time.

Historically, with formal learning, I’ve always been able to review the material, take the test, and move on. Not so here. The application of ML techniques takes a level of fluency with mathematics that my background hasn’t prepared me for.

But I’ll keep going!

The motto I live by, the motto I’ve used when practicing and teaching technology of all kids, is this:

All complex things are just a series of simple things.

Not once have I encountered something to disprove this notion. I can’t claim to have solved every difficult problem I’ve ever faced, but the notion has still applied.

The challenge for me seems to be in what I see as the *fluidity* of mathematics. I had expected that a lifetime of coding would assist me in understanding the math, and to some extent it has, but it’s also caused some challenges.

In software (well, *good* software) everything is readily broken down into chunks. Named variables and functions, small blocks of code, chained together in a modular way.

So when I encounter something like…

I can, eventually, make it through - but without that math background, every single one is a major uphill battle.

If these were, say, Python functions, everything would be scoped, namespaced, clearly defined and clearly passed as arguments. “Magic numbers” would be explicitly imported from a library. The idea of one big environment of numbers - where a new symbol can appear and I have no idea what it means or where it came from - it’s been frustrating for someone used to thinking as I am.

To be clear, I’m not suggesting the “blame” lies in mathematics or such representations, I’m simply providing an example of the ways in which it’s requiring me to bend my brain in new ways.

My solution has been to bridge the gap by *making* it code. Every time. I step through the formula, turn each operation into code (usually Python) and throw example inputs at it until I’m satisfied I’ve got it.

This is my application of “All Complex Things…” for this class.

Can’t imagine how I’d get by without it.