Synthesizing High-Quality Programming Tasks with LLM-based Expert and Student Agents