  Automated generation of feedback on programming assignments holds significant
benefits for programming education, especially when it comes to advanced
assignments. Automated Program Repair techniques, especially Large Language
Model based approaches, have gained notable recognition for their potential to
fix introductory assignments. However, the programs used for evaluation are
relatively simple. It remains unclear how existing approaches perform in
repairing programs from higher-level programming courses. To address these
limitations, we curate a new advanced student assignment dataset named
Defects4DS from a higher-level programming course. Subsequently, we identify
the challenges related to fixing bugs in advanced assignments. Based on the
analysis, we develop a framework called PaR that is powered by the LLM. PaR
works in three phases: Peer Solution Selection, Multi-Source Prompt Generation,
and Program Repair. Peer Solution Selection identifies the closely related peer
programs based on lexical, semantic, and syntactic criteria. Then Multi-Source
Prompt Generation adeptly combines multiple sources of information to create a
comprehensive and informative prompt for the last Program Repair stage. The
evaluation on Defects4DS and another well-investigated ITSP dataset reveals
that PaR achieves a new state-of-the-art performance, demonstrating impressive
improvements of 19.94% and 15.2% in repair rate compared to prior
state-of-the-art LLM- and symbolic-based approaches, respectively
