Automatic Assessment of the Design Quality of Python Programs with Personalized Feedback