Saturday, February 27, 2010

Proofs and Algorithms

After the assignment, which was decently difficult, I feel much more confident about epsilon-delta proofs. I feel like I understand the whole limit definition concept much better. At least now, it is much more clear how you can pick your variables and on which variables you can make them dependent. Hopefully, I'll be prepared for whatever epsilon-delta proof that may (probably) come up on the test. I really feel like this assignment has greatly increased my understanding of proofs, particularly epsilon-delta ones.

The unit on proofs is pretty interesting, but still not as interesting as the one on logic. Too bad it is coming to an end.

According to the syllabus, the next topic should be on complexity and program running time, which I suppose is related to algorithms. I didn't know what algorithms are until I took a psychology class in high school, where I learned that algorithms are a series of finite steps that always generate a consistent and desired result. Compare that to heuristics, which generate a desired result most of the time. This is obviously all related to problem solving. For instance, an algorithm for unlocking a four-digit lock would be to try every possible four-digit combination out there. If you know the person whom the lock belongs to, a heuristic would be to try the year s/he was born, favorite number, graduating year, etc.

Obviously, algorithms are helpful in programming and for this reason, they are probably of great interest to computer science. Algorithms are all about computation after all, and computers just follow algorithms. Since computer science is about the theoretical aspects of computation, algorithms are probably one the most important aspects of computer science. I have more to say about algorithms next time.

(On a slightly random note, I feel that many first-year students in the computer science program don't realize how theoretical computer science is. I remember walking with two friends the other day. Person A is a first year computer science student and person B is a first year software engineering student. We were talking about programming and person B told us how he knows C, Java, Ruby, Scheme, etc, which is great. Then, person A said, "It's so stupid how computer science here is really theoretical." WTF? That's what computer science is all about. Computer is theoretical and mathematical, and that's why I love it. For those of you who are in the CS program to learn lots of programming so that you can make lots of money working for some company in the software industry, please drop out and transfer to Waterloo or some other school and study software engineering instead.)

No comments:

Post a Comment