A course by Princeton University-Introduction to Programming in Java-A course by Robert Sedgewick