In computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level. Program synthesis is one type of automatic programming where a procedure is created from scratch, based on mathematical requirements.