An evaluation of LLM code generation capabilities through graded exercises