Monthly Archives: January 2012

First Days In OOP

The first weeks of my last semester here at the University of Texas have gotten off to a running pace. During this time in my Object Oriented Programming(OOP) course I have begun to  learn about the differences in C++ and Java, how to become a great programmer by being a better communicator, and how to approach the Collatz conjecture in the hopes that a fast/optimal solution is reached.

In learning about the usefulness of effective communication from the post Advice for Computer Science [for] College Students by Joel Spolsky, I  noted that he attributed the success of Linux, Extreme Programming(XP), and great programmers in general to there expressive ability; and not due to there ability to master all programming languages known to man. Prompted by this, and the potential that my attempt to better myself might have some benefit to my career and more immediately a small impact on my class grade, I evoked on the adventure of writing my first blog. With respect to this please pardon my style as I learn how to best express myself within the time constraints.

The aforementioned Collatz conjecture is a theory that says for any natural number you can find a path from that number to 1 given you apply the following conditional transformations to the original number(n): if n is odd then take 3n+1, else divide n by 2. The steps it takes to get from the original number to 1 are referred to as cycles, and as of today there is no proof that this algorithm will terminate in a finite amount of cycles although it is widely believed that this algorithm does in fact terminate. The optimizations to the Collatz conjecture that we have looked at involve simple caches and bit shifting (vs. arithmetic operations on the values). In the coming days I hope to produce an optimal solution and have sphere verify my solution.