The task of automatically writing code based on natural-language descriptions of what the code should do.