basic programs every programmer should know