This post is the first report of my current project. It will not exactly be a fun post but I want to write something anyway, simply because it’s better to jot down my thoughts once in a while. I plan to write more interesting articles in near future. I will write book reviews to summarize things I learned while reading. Maybe I will also write about the cool things about the courses I’m taking.
Since initiated the project last month, I have finished two courses on Coursera, MATLAB Programming by Vanderbilt University and Algorithms, Part I by Princeton University and one mini-course on Codecademy, Introduction to Python.
Algorithms, Part I was a challenging yet enjoyable course. It taught me about the beauty as well as the importance of algorithms that I never realized before. I did take one data structures and algorithms course during college but I insisted on solving every assignment by brute force. I guess because my professor did not have a sophisticated grader like the one used by Dr. Sedgewick from Princeton, I managed to escape with perfect scores despite never applying the algorithms I was supposed to learn. At least it’s a different story now. Thanks to the machine grader on Coursera, I was forced to write clean, maintainable, efficient and sometimes even elegant Java code.
Still one thing Algorithms, Part 1 did not do is teaching the theory behind the algorithms since it only focuses on implementation. I have never been interested in theory, and math in particular. I used to avoid rigorous proofs like a plague. This is a good time to change. Fortunately, Dr. Sedgewick will offer the Analysis of Algorithms course next week. Let the math journey begin.
My goal is to be (surprise, surprise,) a math whiz
Speaking of math, I would like to discuss why I decide to change my attitude towards math. In the last few weeks, I have been thinking about all the gaps in my background, and why I have struggled immensely although I have spent a lot of time studying. It turns out my lack of mathematical maturity is the culprit.
I have two big issues relating to math. First, I do not have good strategies of attacking a problem methodically. In other words, I have always found it difficult to think clearly and make progress while working on a problem. I think this ability comes from working on the proofs in all the math courses: discrete math, calculus, linear algebra to name a few. It’s a shame that I never, ever cared about proofs.
Secondly, I simply do not have the math background to understand intermediate to advanced engineering materials. Stuffs like linear algebra, Fourier series, Laplace transform are the basic tools for any professional scientist or engineer. Because I never acknowledged the applications of these math subjects, I avoided learning them. My professors in college also did not help the cause by giving easy As. Now I have to re-learn all over again. Is it painful? Hell yes. But it must be a hell lot of fun too.
Here is my plan for September. I will discuss some of them in more details in later posts.
Linear Algebra: Foundations to Frontiers, UT Austin.
Effective Thinking Through Mathematics, UT Austin
Algorithimic Thinking (Part 1) and Principles of Computing (Part 1), Rice University.
Game Theory, Stanford.
Analysis of Algorithms, Princeton.
Calculus I, Ohio State University