__Login__or

__Take a Tour__!

I don't think the subjects should even be separated. Programming *is* math, essentially, just a bit more abstract. It's fun, it's relevant, and it can even give kids a creative outlet as they become more proficient. Assign a kid the task of creating a simple video game from scratch and you can teach a huge array of skills: logical thinking, math, computer literacy, etc. Or maybe if a kid runs into a math problem they don't understand, encourage them to write a program to help solve it. As they're starting calculus, walk them through writing a program that estimates the area under a curve by calculating the areas of a bunch of different rectangles, than show them how if they increase the variable denoting the number of rectangles to use, they can get a more accurate answer.

Maybe I'm just projecting myself onto these kids. I loved making dumb little games growing up, and that allowed me to understand subjects like trigonometry (how do I get this character to look at my mouse pointer?) in a much more intimate way than had I only learned from the homework problems in my textbooks.

If you learn a particular language, you can only express yourself (and therefore, think) in that one language. When it comes to languages such as C, the only way you can approach a problem is through the lens of paradigm of portable assembly. When your language is not expressive enough to encapsulate the abstractions you intend to use, it gets harder to overcome the limits of the current paradigm. Some areas of mathematics (particularly category theory) have been applied to programming languages to create abstractions that are capture ideas without contradictions through a type system.

I guess when we talk of mathematics, we tend to think of the curricula that shows up in public schools (the progression of algebra->geometry->trig->calculus), the stuff that you calculate and come up with an answer with little concept of what it means or how it's applied, we might not be aware of areas of advanced algebra or formal logic which provide the means to create abstractions and reason about them.