Programming for beginners: choosing the best tools for success