Automated Program generation