What's new?19 Feb 2017
It’s already two months into the new year. I guess that no longer makes it a new year. Nonetheless, there are some new things going on that I thought I should update. You might have read about the goals I had set for myself.
The first challenge, is going really well. I am still yet to miss a day of committing code. Hopefully, I’ll be able to continue to do the same throughout the year. This was mainly possible because this tied in with my second challenge.
The second challenge was solving 100 problems on Project Euler. I have now solved the first 50 problems using C++ with each program running less than 500 ms. You can look at the code on my GitHub. Review it, star it, fork it, and share your views on it.
I am really a long way from completing the third goal.
For starters, I decided to work through the classic machine learning course taught by Andrew Ng.
It is available on Coursera.
If you haven’t heard of it, you should totally check it out.
In my opinion, the course is taught really well, though it might have a learning curve if you are unfamiliar with calculus and linear algebra.
I have finished 8 weeks, as of now, out of the total 11.
I’ve been uploading my solutions to the assignments on GitHub.
DO NOT CHEAT!
But what is new?
True, all of this has just been updates on what I’ve been doing the past month. There are two new things that I plan to work on in the coming days (or weeks, depending on my school work).
#1 - A New Library
While solving through the first 50 problems on Project Euler, I realized that I was reusing most of my code. And the code I had written earlier was just not fast enough to complete the problem in under a second. So I had to look at alternatives and optimize the code. And there were many times, when I found a really fast algorithm for some problem I had encountered. So, I thought to myself, “What if I could just put together a simple library that encompasses all of these functions?”. Thus, I decided to work on putting together this library in C++ with all of these functions in their most efficient form. The list of all these functions isn’t very big. So hopefully, this will not take more than a few days to finish writing.
And I’ll write a detailed post explaining the routines I used and compare their runtimes with other possible routines once I complete it.
I’ve found that using a boolean array to be much faster than using a vector of same size. In fact, with a vector, the code took more than a minute to run (I didn’t time it and terminated the program. Perhaps I should provide stats next time…). But with a boolean array, it ran in under 300ms. I’ve also concluded that the memset function, introduced in C, is faster than using a loop to initialize values in an array.
#2 - Course Planner
Those are the two new things I’ve proposed to work on. And as usual, since this goes public, I need to keep my word and work on them.
Because you’ve been really nice and read the entire post, here is a bonus. I joined the HackCU team last September. What we do is mainly organize hackathons. There are two, Local Hack Day and HackCU III. Local Hack Day is already over. HackCU III is coming up and you should totally register for it. Apart from those, we organize Startups2Students. This event is aimed at bridging the gap between startups in Colorado and the students. Once again, you should register for it because it’s free, we provide pizza, and it’s a great opportunity to meet new people! Feel free to hit me up if you have any questions!