Practicing harder programming problems - a drop at a time