Solutions to Stanford's CS106A course (Java)