Thursday, January 31, 2013

Sequence Alignment problem: Recursive solution without memoization


Thanks to Tim RougGarden's Alogrithms course -II, I worked on the sequence alignment problem. To the uninitiated, the sequence alignment program is to quantify the difference between two given sequences. Also, I have used help from here to post code for the first time(Yay!*2) on my blog
public class sqq {

String X,Y;
int blankfine=10,matchfine = 100;
int fine(char a, char b){
if(a==b)
return 0;
if(a=='-'||b=='-')
return blankfine;
return matchfine;
}

int seqAlign(int i, int j){

if(i==0&&j==0)
return fine(X.charAt(0),Y.charAt(0));
if(i<0&&j>=0)
return j*blankfine;
if(j<0&&i>=0)
return i*blankfine;
int t1 = seqAlign(i-1,j-1)+fine(X.charAt(i),Y.charAt(j));
int t2 = seqAlign(i-1,j)+fine(X.charAt(i),'-');
int t3 = seqAlign(i,j-1)+fine(Y.charAt(j),'-');
int temp = min(t1 , t2 , t3);
System.out.println("i= "+i+" j= "+j+" Ans: " + temp);
System.out.println(t1+" "+t2+" "+t3);
System.out.println("char i: "+X.charAt(i)+" char j: "+Y.charAt(j));

return temp;
}

int min(int a,int b, int c){
if(a<b&& a<c)
return a;
if(b<a&& b<c)
return b;
if(c<b&& c<a)
return c;
if(a<b)
return a;
else
return b;
}
public static void main(String farts[]){
sqq sq = new sqq();
sq.X = "ce";
sq.Y = "cd";
System.out.println(sq.seqAlign(sq.X.length()-1,sq.Y.length()-1));
}
}

Tuesday, January 29, 2013

MOOCs and me

MOOC is an acronym for Massive Open Online Course and these have spread open knowledge in the last one year in an amazing way. Every person has his own view on courses and would like to take his own time, references and relate to the subject in a way most convenient for him. MOOCs make a platform where this is feasible.

  To me MOOCs have been the biggest gamechanger since 2011. I like learning new things, but I am not the fastest of learners. I take my time, I read and I re-read. And MOOCs let me take my time, giving me a chance to change, a change to improve and a change to achieve.

For the uninitiated, I believe the first set of popular online MOOCs were ai-class.com, db-class.com and ml-class.com. After doing two of the three(Could not do DB), I realized how much they actually helped me widen my thinking. I wanted to do more courses, learn more. But seeing the lectures was hardly the main part. It was all about the assignments and the quizzes. They are the main ingredient specially for students who understand mainly by doing.

This was followed by a plethora of online courses which are now so many that it is barely possible to keep a count. I will however mention the two primary sites that keep me on my toes:
coursera.org
udacity.com

Also, please visit http://www.class-central.com/ which provides an updated list to all the courses from (perhaps) all the sites.

Thanks you all Professors, courses, and other people involved in making online education a success and kudos for keeping it free and helping me in life.
Got this graphic from OnlineCollegeCourses
The Minds Behind The MOOCs