Thursday, August 8, 2013

Startup, SaaS, and The Jack of All Software Trades


I have just now dropped out of a course offered by BerkleyX through the edX platform called CS169.1x Software as a Service. The course is tough to keep up with (given the number of other courses I was also enrolled in), it was fast paced (HW due one a week, where a single HW would require at the very least 3 to 4 days to wrap your head around and complete).



Another yet very similer course I dropped out of was Stanford's Startup Engineering course offered via the Coursera platform. This is the first time the course was being offered so the videos, homeworks and quizzes were not in sync.

What I learned taking both courses (and dropping out after a substantial investment in my time) is that there is a lot of technology that is needed to learn how to set up a web application not to mention the different set of tools that are needed.

I did learn a lot but not in a satisfactory manner; there was a lot of hacking involved and not much developing (and yes, there is a difference). In order to be a developer, you had to know things inside out in a very structured manner. While a hacker puts things or tweaks not knowing how things work as a whole.. I won't go into the whole hacker vs developer debate but this is how I felt taking the two classes and it was pretty frustrating.

Another downside is the shear amount of outside research that was required to be done in order to do the assignments (not in the very least self contained).

i will take the above classes again but this time I will do my pre-studies before taking the above two courses and these are suggestions for anyone planning any of the above courses.
 Startup and CS169.1x
- HTML/CSS  --- codecademy would be the best place to start
-Git and Github --- codeschool have a try git. read a few other resources would help
- Heroku --- try making a simple web app and get comftroble doing so

Startup course
- Javascript --- codecademy and other resources
- Node.js
- Twitter bootstrap
- Amazon web services --- open an account (you will still need a credit card though you wont get charged for first year use of micro instances)

CS169.1x
- Ruby ---  codecademy and codeschool
- Rails ---   codeschool and other resources
- haml
- MVC model


I also suggest learning how to use a few good editors.

This should suffice before one even starts any of the above courses... I failed the first time, but I hope I do not the second time round!

Thursday, January 24, 2013

the wRath of R

If you are not familiar with R; it's a programming language used for statistical computing. In this post I will be talking about my rendezvous with this language via a course called "Computing for data Analysis" (offered by Coursera)

credit: Computing for Data Analysis taught by Johns Hopkins' Roger D. Peng
For the past couple of days now, I have been busy programming in two languages; R (for Computing for Data Analysis) and SML (for Programming Languages course). Needless to say; 80% of the time was in R.

The Course assignment was very stressful to say the very least (the title itself is a mouthful), The course dives in to R too deep too quickly. The course started at the beginning of the year (2nd January to be precise) and we are almost done with the course (Just yesterday I handed in Assignment 3, one more Assignment and we are done!), The course runs for a month. (four quizzes, and four programming assignments, although the first programming assignment we did not  hand in anything but rather, we had to solve the problems via programming).

If anyone wants to have a "lite" meal of R, I would suggest try R or, if you are the kind of person who learns best from Videos (like myself), then I suggest this site. I would also suggest doing any of the two above mentioned before taking the Computing for data analysis class; this isn't something that I did but I wish I had, I heard of the two later on,but it would have made it easier as they are easier to handle and grasp. 

Now, R is not an easy language to grasp at first; if you have prior programming biases, you will have a hard time adapting to the syntax and semantics of the language. Thanks to the assignments and quizzes however, you should eventually get the hang of the proper usage of R.

For assignment 3, we had to use R on a data file (.csv file) that contains information about 30-day mortality and readmission rates for heart attacks, heart failure, and pneumonia for over 4,600 hospitals in the United States. each record has 43 fields, so you can imagine the size of this data. The first 4 parts of the assignment we had to do several types of plots on different type of data; we had to organize, categorize display in xy plots, histograms, boxplots (I never knew of boxplots until today) etc..
The first four parts were not graded but they were good practice for the last three parts; writing a function that takes in the two-letter State (US state) name and the outcome (heart attack, heart failure and pneumonia) and finding the best hospital (lowest 30-mortality) in the specified outcome in the requested State. We then had to write a function that had to find the nth rank (rather then best). Finally, we had to write a function that displays the nth rank for all the States. 

You have to be really good at using all the "tools" that the Instructor has provided; you have to put things together. For example, you have to know how to "Filter-filters" of data (i.e multiple filtering techniques) and know how to work with the data-structures.

Needless to say, the forum (i.e community) is one of the essential parts of learning the material.

I had to use up one of my late-days (we have 5 in total) in-order for me to be able to finish this assignment.

I have thus far, earned 80% for this course and should get a certificate (70% is required). So now I have to think "opportunity cost"; Should I earn the remaining 20% or concentrate on my other MOOCs... since time is the limited resource.. maybe I should do a "data analysis" on that!   


Update: cleaned-up and edited by my dear friend +Ian Belcher . Thanks bro :)

Sunday, January 20, 2013

Calculus... MOOC-nam Style!

In this post, I will be comparing and contrasting my (early) experience of two Calculus Courses I am currently taking (both of which are offered by Coursera)

The most starred at slide while attepting the HWs as well as studying for the first Exam/Quiz
Source: Robert Ghrist's Coursera Course - chapter 1 Lecture 5 

The last time I took a Calculus class was during my Undergrad years at Penn State University, and that was more than 10 years ago. I decided to take the two Coursera offerings of Calculus; Calculus One (taught by The Ohio State University's Jim Fowler) and Calculus: Single variable (taught by The University of Pennsylvania's Robert Ghrist).

This of-course, is not a "VS" post. Rather, it is about what each course offers and how both courses complement one another. OK, off we go!


Calculus One


First off, I want to say one thing about Jim Fowler; The Guy has amazing energy (which does not show in the  youtube intro video), but it shows in every video lecture of the course.

The course assumes that the student has no prior exposure to Calculus (and even if you do it cements your Understanding of calculus as well as explain why things are the way they are). The course takes a very hands on approach (concrete examples rather than abstract explanations).  The videos show the Instructor explaining the concepts as well as the use of paper, animation (uses a knob to change numbers, you have to see it to know what I mean, just amazing) and black board. In addition, the use of the outdoors to show how Calculus concepts are applied. 

the course is structured into weeks; after finishing a week, the student goes to practice what they have learned. The practice problems take place in a platform, that they developed, called mooculus. The practice problems , as they put it, "more like a fun interactive textbook", which is true (the platform is simply amazing). They help understand concepts as well as cover things the lecturer did not cover. The practice problems are not graded so you can make as many mistakes as you possibly can, or until you "get it".

The following is the course week-by-week plan:
Week One: Limits        (1 hour 43 minutes split into 13 video segments, watched at a speed of 1.6x)
Week Two: Infinity and Continuity       (1 hour 10 minutes split into 15 video segments)
Week Three: The Derivative
Week Four: Techniques of Differentiation
Week Five: The Chain Rule
Week Six: Derivatives of Transcendental Functions
Week Seven: Applications of Derivatives
Week Eight: Optimization
Week Nine: Linear Approximation
Week Ten: Antidifferentiation
Week Eleven: Integration
Week Twelve: Fundamental Theorem of Calculus
Week Thirteen: Techniques of Integration
Week Fourteen: The Substitution Rule
Week Fifteen: Volume

Thus far, I have completed week one and week two (which covered functions and Limits - the corner stone of calculus) as well as the the mooculus practice problems for those weeks (which are ungraded) and the "end of week" Quizzes (which are part of the grade). for each Quiz you get unlimited (or rather 100) chances to solve the problems. It seems that the course is more concerned about the student learning rather than assessing (with so many tries, you are bound to get the correct answers). Thus, the approach of the course is more relaxed than Calculus: Single variable (which is coming up next).

Calculus: Single Variable

First off; I have to say that the course material is very "beautiful" (I can't think of another word to describe it). As one student suggested in the forum, the course should have been called "The art of Calculus". The presentation of the subject matter is just amazing (beautiful art, great animation, and the right choice of colors). I especially liked how the definition of a limit was described via animation (Lecture 7 at 1:45).

Here is Robert Ghrist brief explanation of the process (taken from the forum) :

"well...the course is still being drawn (i am done with nearly 70% of the lectures). if you like chapter 1, wait till you see chapter 4 ;-)
this summer, i made a drawing/recording studio in my home office. it has a stand-up desk with audio foam enclosure, a yeti mic, a wacom tablet, sony vaio laptop, and a dell monitor.
it takes about 20 hours (!) per 15-minute lecture... that's 3 hours : design 7 hours : drawing 6 hours : animation 1 hour : video recording 1 hour : audio recording 1 hour : video/audio processing 1 hour : uploading, checking
let's see, we have 60 lectures for the course. that's ~1200 hours. please keep this in mind when you ask me to do multi-variable ;-) no matter how hard you find this course to be, know that i have worked and will work just as hard as you to make sure you get the best lectures i can make...
prof/g"
The course is not easy (I wrote this post AFTER completing the first quiz), it assumes that you have previous exposure to Calculus; you have to already know derivatives and integrals (but that is not the hard part). The hard part is the assessment at the end of the section; You have only one try and, according to the honor code, you are not allowed to use any outside help (not even a calculator), all you can use is writing material and paper. I was stressed about that so after watching the chapter 1 lectures the first time round (at a speed of 1.4x) I re-watched everything for chapter 1 (at 2.0x speed).

the Course is split into chapters (as opposed to weeks). The way I did it was watch one lecture then do the ungraded practice hw (which were very involved  so it was 1 lecture per day then the ungraded homework until the whole chapter was done). After the completion of the chapter, I took the quiz (after a lot of studying and memorizing the Taylor series for the known functions - I ended up deriving one of them since I am really bad at memorizing ). I still don't get the closed-book/closed-note in a MOOC, but since the honor code states it then I wanted a proper assessment (and thus, I did not break it, I would only be cheating myself if I did).

As I stated earlier. The course is split into chapters:
CHAPTER 1: Functions       (2 hours 45 minutes split into 13 video segments)
CHAPTER 2: Differentiation
CHAPTER 3: Integration
CHAPTER 4: Applications
CHAPTER 5: Discretization


In "Calculusion"

Both courses are great; my only concern is with the assessment part (too harsh in Calculus: Single Variable, and too lenient in Calculus one.. but that's just me). Other than that, I have NO preference one over the other, in-fact, each one covers somethings different as well as somethings differently (i.e. from a different angle) and they complement one another. 

So hopefully, I will try to complete both :)

Friday, January 18, 2013

Programming Languages from the Univ of Washington

Programming Languages A Course from Coursera

Course Goals (from the course website)

Successful course participants will:
  • Internalize an accurate understanding of what functional and object-oriented programs mean
  • Develop the skills necessary to learn new programming languages quickly
  • Master specific language concepts such that they can recognize them in strange guises
  • Learn to evaluate the power and elegance of programming languages and their constructs
  • Attain reasonable proficiency in the ML, Racket, and Ruby languages --- and, as a by-product, become more proficient in languages they already know

Today I started watching Section 1 of the Programming Languages course from the University of Washington, Taught by Dan Grossman

As of this writing I have completed half of Section 1 video lectures and have installed gnu emacs on windows and SML/NJ (Standard ML of New Jersey).

The course is not about programming in ML, but rather ... well let them explain it:

"Learning to think about software in this “PL” way will make you a
better programmer even if/when you go back to old ways"

"It will also give you the mental tools and experience you need for a
lifetime of confidently picking up new languages and ideas "

So the course is not about a particular language but rather.. in my words.. the Science of Programming.

I have never been exposed to ML (or any type of functional programming for that matter). As for Emacs, the last time I used it was on a Unix machine back in the day. 

So what things did I learn about ML/Section 1:
1. You do not assign values but bind them to variables...
2. Type checking (Static) and evaluation (dynamic)
3. An if always requires an else
4. Functions in ML (how are they defined and understand their binding)
5. Tuples
6. The use of Recursive functions (instead of using loops)

This is from the top of my head.. There will be a programming assignment that is due on Friday 25th of January AST. I should be able to get the hang of ML once I finish the video lectures for section 1. One of the problems I have (which is minor) are the emacs shortcuts ,so I downloaded a cheatsheet to help me out.

The course will move on to talk about different programming paradigms by using Racket and  Ruby.

Ok... back to finishing the second half of Section 1...

(writing a post takes A LOT time :/  )

Update (19 Jan 2013):
1. Recursion - not easy to implement.. need to learn a way to translate from loops to recursion
2. Options Lecture - Still don't get it... will wait till I start reading and doing the HW


Thursday, January 17, 2013

Hello and Welcome. This...is My MOOC Journal

I have created this blog to keep, or rather Journal, my experience with the new online-education phenomenon that is Massive Open Online Courses, aka MOOCs.


credit: http://karlyku.deviantart.com/


I won't be explaining what an MOOC is. You can find an explanation  here.

Now, lets get down to it; The three major players which I recommend everyone check-out are;

(Before you ask; yes, the courses are absolutely free!)


Coursera

As of this writing they offer more than 213 courses on different subjects from 33 Top-notch universities from the US and abroad. What I like about this platform is the ease with which you can download the material (I recommend using Firefox browser with the DownThemAll extension for batch downloading, if you want to navigate and stream the video lectures, I recommend Google chrome).
The classes that are offered are very well structured, with in video lectures (for most courses not all), Home-works, Midterms (in some cases), finals and projects (in some cases). Once you complete a course you get a certificate of completion (the majority offer it, some don't depending on the instructor and/or policy of the University). The courses offered are courses that the instructors have already taught in their respective universities but have been changed (or rather MOOCified) for the platform.

Courses I have completed (and got a Certificate for) from Coursera:
1. Introduction to Mathematical Thinking (Stanford University, September 17th 2012)
2. Learn to Program: The Fundamentals (Stanford University, September 24th 2012)
3. Introduction to Genetics and Evolution (Duke University, October 10th 2012)

Currently registered  (i.e ongoing, I might not complete all ):
1. Think Again: How to Reason and Argue (If you  want to register you can still do so since the deadline for the assignments is Mid-March.. so hurry up!)
2. Computing for Data Analysis (started January 2nd, first quiz already due, programming assignment due on  the 17th) (completed quiz 1 and 2, Assignment 1 and 2, this course is really fast paced)
3. Game Theory (started January 7th, first second HW due on 27th January)
4.  Calculus: Single Variable (started January 7th, no Quiz due as of yet, first quiz is due on the 21st, honor code requires that the quiz be taken without any notes present... Great Lecture slides with great animation)
5.  Calculus One (started January 7th, second quiz due 21sh January.instructor has great energy and makes concepts so simple)
6.  Principles of Economics for Scientists (started 7th January, learned a lot about optimization thus far, First Quiz due 14th January) dropped out even though I did the quizzes. They had a failure in the lab component which was a live market (the market "crashed"). So the lab component has been taken out (I was looking forward to using it). Will take the second offering once they get that fixed 

I am not going to mention the courses that I have tried and "dropped-out" off (if there is such a thing as dropping out). I sampled so many :)
Nor will I mention the courses that are upcoming and I have registered for.. 

I highly recommend you check the site out!!


Udacity:

 Steered towards IT courses and offers self-paced learning . The good thing about this platform are the very short video segments (not more than 5 minutes ). Rather than a course being taught in a university and later on MOOCified, the courses were designed (or rather constructed)  from scratch for the platform. The technology they use is unified for all their courses and very well used for the platform.

Courses (or rather course) I have completed:
1. Introduction to Computer Science: Building a search Engine (CS101)
 Anyone wanting to learn programming in Python and programming in general should take this course

Currently registered  (i.e ongoing)
2. Algorithms: Crunching Social Networks (CS215)
Seems that this course teaches more of graph theory, I have just now rached Unit 4

I would suggest another course for Algorithms which is offered by Princeton, I have already taken the first offering of the course but did not do all the assignments and did not do the final (there is a second offereng in february so my suggestion is if you are interested in Algos, then this is the class to take) WARNING: no cert for the Princeton Algos class.

Another would be this course that is offered by Stanford. I have no experience with the course. Will see what happens in February.


edX:

Most intense of the three, not for the faint of hearts (in most cases... not all). I would suggest you check them out ASAP since most of their classes have not yet started for this semester. Courses are offered from MIT, Harvard and UC Berkeley (  or rather MITx, HarvardX and BerkeleyX, the X makes it more "hip" and "eXtreme" ;)  )

I have not completed any courses as of yet...

Currently registered  (i.e ongoing):
This is CS50. Wow; the instructors energy is just amazing. There is only one deadline and that is April 15th. The content is just great so even if you don't complete the coursework I'd suggest you watch the video lectures; The instructor covers a wide range of topics, from programming in Scratch, C, and web to concepts in CS and algorithms. So if you are up for it, register.
I have completed only 1 problem set (ps0), check out the game I made :)


Honorable Mentions:

Class2go by Stanford

10gen (developers of MongoDB) powered by edX

OpenHPI by Hasso Plattner Institute, Germany




So there you have it. I'm going to make this year the year of the MOOC; will challenge myself - see how many courses I can complete this year (i.e do the HWs, quizzes and exams). I will post whenever I have time and Journal my adventures.. 

(Taking a deep breath)

Now back to my MOOCs!