I saw a post from last year where a MN user, a father, did something called "agile development".
Agile development is a web development term meaning to develop a one baby step at a time, then test, get feedback, and adjust as per the feedback for the next step. Its thought to be a better way of building a web platform as it avoids the risk of several months of development only for the end-users to not accept it.
Anyway, the father successfully used it to do his son's revision timetable where he'd have the next few days tasks on post-its stuck to a pin board. When each task was done, his son would move the task to the other side of the pin board, and the father would take the ticked off tasks away and enter them into the master spreadsheet.
The advantage was that the boy was not overwhelmed with the mountain of 12 week's work at once, and because he felt it manageable, he'd do it, one task at a time.
Maybe that's the answer? Instead of going on about 4 months of hard work, just set small tasks with a short due by date?
Me? I am going to refuse the first 10 mins of a football match for the time wasting if DS keeps making his (and my) life so difficult.