Week One
Today marked my first week in Glenn Downing’s class, Object Oriented Programming. For extra credit, he offered us the opportunity to write a blog detailing our experiences in 371P.
What did I do this past week? This past week of class has been surprisingly busy. Where most teachers spend their first couple days of class dawdling around with the syllabus, covering cursory introductory material and waiting to see who will drop, our class has dived right in to the task at hand. This week, we have already started going over the surface differences between C++ and Java. It appears that our class will be organized around C++, so it’s interesting to start seeing some differences already. Besides the obvious things, such as compile-time vs. runtime optimizations and the absence of a Virtual Machine in C++, I’m actually rather ignorant of the differences between C++ and Java. I know enough to be excited about the prospect of exploring the power of the Standard Template Library in C++ though!
What’s in your way? I’m sure I will encounter difficulties, but so far nothing is in my way, and I feel rather confident. I’ve had a few (three to be exact) internships so far during my time at UT, and I relish the opportunity to do something similar to what I’ve done at those and at my research and volunteer positions: Learn a new set of tools and put it to work! Fortunately, I’m already familiar with Docker, git, makefiles (though I think there are superior ways to build outside of small projects), and the concepts of Continuous Integration and Unit Testing, so I expect a smooth learning curve on the supporting tools and concepts to the libraries and language that we are learning.
What will I do next week? Next week, it looks like we’ll be getting into the meat of the course, so I look forward to that. I may try to get a jumpstart on learning C++. I’ve been getting more and more exposure to Machine Learning via jobs, a summer course offered online by a Stanford Professor, and my research involvement, and I have a few ideas for creating fun side-projects involving machine learning with my Raspberry Pi. Unfortunately, I only confidently know C, Java, and Python. I think Java and Python might be too heavy for the Pi, and C might not have great characteristics and libraries for Machine Learning. So if C++ fits the bill and the above languages don’t, it’s in my interest to learn faster. On an unrelated note, I may try to move this blog to a sub-url of my github pages. This blog has inspired me to finally throw together a portfolio for interested employers. I have projects I’d love to show off. Maybe I could link to this blog as well, and have entries unrelated to class as well. It’s been a while since I’ve written just for the sake of writing, and writing this blog is reminding me how much I miss it.
So far, my experience of the class has been OK. I noticed that Professor Downing calls students off a list, so we have to stay on our toes! Unfortunately, I missed our first quiz and half of class because I trusted the bus-schedule near my new apartment, so my class experience has been a bit more limited than I would have liked. I’m hoping that, while we cover C++ code in class, we don’t always go through it line by line like we have so far. So far we’ve gone over differences between C++ and Java relating to import/include, and we’ve also covered the concept of unit testing with a C++ framework written by Google, walking through the related code line-by-line. If we can go over the general concepts I feel that we will cover more ground and I’ll find it easier to stay engaged in class. But overall, Professor Downing has had a clear commitment to teaching a class that is worthwhile and helpful for undergraduates.
Tip of the Week After getting into machine learning and discovering that non-geniuses can get it too, my tip is to explore it yourself as well! I’ve been having a blast lately using my new-found knowledge, and hope to end my dry-spell for public projects and contributions on Github with some of my newly attained knowledge! If you have basic stats and linear algebra chops, a great place to start is with Andrew Ng.’s Machine Learning course on Coursera. I worked my way all through it. I’m sure there are also courses on campus, but I’m dubious that any of them are available at the time I’m writing this. After that, there is a high quality course on Udacity by Vincent Vanhoucke, a Principal Scientist at Google. Vincent’s course assumes prior knowledge, but Andrew Ng’s course, together with UT’s principal requirements, should be sufficient. I’m going to keep throwing up good resources for those interested in Machine Learning as I go down my own path with the subject.