Completed Programming Languages (Part B) on Coursera

Earlier at the start of this month, I began the second Programming Languages course (Part B), offered by Prof. Dan Grossman of the University of Washington. I had done the first course a few months ago and found it very beneficial when it came to my understanding of some functional programming concepts and idioms, the notion of elegance in programming and good programming practices in general. It also really helped me formalise much of what I had come across in relation to Functional Programming, and approach the adoption of this style of programming more systematically in my own day-to-day programming projects. After nearly two months of having done that very interesting and challenging course, and having felt that a good bit of it had sunk in I decided to take on this second one.

The goals of this course were three-fold:

  1. To allow one to apply some of what was taught in the first course in the context of Standard ML (SML) to a new programming language, namely Racket.
  2. To introduce features of Dynamically Typed programming languages through Racket, and compare these in contrast with those of Statically Typed programming languages, such as SML.
  3. To understand the inner workings of a language interpreter by implementing one for a very simple hypothetical programming language in Racket.

I won’t be going into much details about the learnings of this course yet. I plan to do so in a couple of months when I’ll be done with the third and final course in this module and I will have had the chance to re-visit the contents of the first two courses to gain a better overall perspective.

In the meantime, here’s the certificate I was awarded for completing it.

Completed Programming Languages (Part A) on Coursera

Having been curious about Functional Programming for a while now, and tried incorporating features of the paradigm into my own work with Python, I decided to give the first (Part A) of the three-part Programming Languages course module on Coursera. The module is meant to systematically introduce one to various theoretical concepts of programming languages, while having a special focus on Functional Programming. This first course (Part A), which I recently completed with a score of 98%, illustrated said concepts with the help of Standard ML – a Functional-style language.

It was excellently designed course, and also quite challenging. Apart from spending time on introducing the very basics of SML early on, it covered some very interesting concepts such as Pattern Matching, Function Closures, Partials, Currying and Mutual Recurstion. The programming assignments really made sure you understood what was covered in the course material, and the course-handouts were thorough and clear. There was also a strong focus on the matter of programming style, with the instructor commenting on what he considered good/poor programming style while covering the various concepts. We were marked on the style of our submissions too.

Completed Recommender Systems Specialisation on Coursera

Now that I’m no longer working at Jukedeck, I happen to have plenty of free time on my hands! I’ve been spending this time travelling, catching up on my reading list, helping out with activities of the Music Tech Community – India and making music among other things. In an effort to satisfy a long-standing curiosity, I signed up for the Recommender Systems specialisation being offered on Coursera by University of Minnesota, and recently completed it. It comprised of four courses:

  1. Introduction to Recommender Systems: Non-personalised and Content-based (certificate)
  2. Nearest Neighbour Collaborative Filtering (certificate)
  3. Recommender Systems: Evaluation and Metrics (certificate)
  4. Matrix Factorisation and Advanced Techniques (certificate)

It took me about a month to complete all four courses at a fairly liesurely pace given how much time I had at my disposal while not working. This was a very well-taught specialisation with some of the best-designed Courses I’ve done on Coursera so far. It covered a wide range of topics that offered a comprehensive overview of a vast area of research. Solving the assignments by hand was a new, but very engaging experience that really allowed me to focus on what actually happens at a very basic level under-the-hood in such systems. It was all done by implementing the various formulae for content-based filtering, item-item collaborative filtering, user-user collaborative filtering (including matrix factorisation methods) in spreadsheets. There was an Honours Track in each course that focused on implementing the various types of recommender systems and related concepts that I decided not to pursue, as all the programming was in Java. I decided I would follow the courses up with my own implementation projects in Python as that’s something of greater interest to me. So now I’m looking for little projects to get me going.

I would definitely recommend this specialisation to anyone interested in Recommender Systems. It has left me with a very good understanding of the basics and a fair idea of the various directions in which I can pursue things in more detail. Not to mention, a tonne of references to read up on which I look forward to doing along with implementing some of the algorithms in the coming weeks.

Completed the Course “Machine Learning with Big Data” offered by UCSD on Coursera

I successfully completed this course with a 98.9% mark. This course was relatively more focused than the others so far. The machine learning theory that was covered in it was very basic and good for beginners so I skimmed through it fairly quickly. Nevertheless, it was a good refresher of models such as Naive Bayes, Decision Trees and k-Means Clustering. What I found particularly useful was the introduction to the KNIME and Spark ML frameworks and the exercises where one had to apply these ML models to some example datasets.

I think this course and the last one were more hands-on and what I was looking for when I first started this module with a greater focus on ML in the context of Big Data.

And here’s the certificate that I was awarded on completing the course.

Completed the Course “Big Data Integration and Processing” offered by UCSD on Coursera

I successfully completed this course with a 97.7% mark. This course was once again broad and touched upon some big data technologies through a series of lectures, assignments and hands-on exercises. The focus was mainly on querying JSON data using MongoDB, analysing data using Pandas, and programming in Spark (Spark SQL, Spark Streaming, Spark MLLIB and Spark GraphX). All these were things I was curious about and it was great that they introduced these in the course. There were also an exercise on analysing tweets using both MongoDB and Spark. They had one section on something called Splunk which I thought was a waste of time but I guess they have to keep their sponsors happy.

This specialisation so far (I’m halfway through) has been fairly introductory and lacking depth. It’s been good to the extent that I feel like I’m aware of all these different technologies and would be able to know where to start if I was to use them for some specific application. As I expected, this course was more hands-on which was great!

And here’s the certificate that I was awarded on completing the course.