OP you've already gotten some great tips about finding a tutor or some online programming that may help. I just wanted to chime in on a different aspect of your post, which is that you yourself sounded stuck when your DS was clearly struggling but refusing help. Just wanted to offer that when a hardheaded teen (because aren't they all hardheaded! Ok, most anyway

) insists they don't need help, sometimes it's helpful to point out what may seem obvious but may not be obvious to them. And pointing in it out in a loving, gentle way, maybe even starting by saying something like "You've shown great judgement on so many things and you've clearly been trying to get these assignments written. But sometimes even when we try our best, we have to accept that maybe we're struggling in a way that we haven't figured out how to break out of on our own. The fact that you work so hard [say that even if he hasn't really been trying that hard and instead was surfing the net on his laptop] but the writing doesn't happen has to be accepted and there are some resources out there that exist to help with this exact type of situation. We're going to try a new approach, because I know you want this to not be this hard and I know you've got great things to write, you just have to get unstuck."
That is all obviously in my particular "mom voice"; you can say it or whatever alternate you think is best, but the bottom line is that when our kids are stuck and they insist they've got it under control and don't need any help, overall it's good to do what you did and try to give him that chance to show he's getting the work done, but when it's clearly not improving you gotta name it as gently as possible and let him know there are other resources and you're going to try them. And if he says he doesn't want to try a tutor or writing coach or whatever, tell him he's got to get unstuck and ask him what he's going to do differently now that will get him unstuck? If he's got no ideas, then say ok, part of my job as a parent is to bring other tools to the table, and you really should not dismiss other approaches without even trying them.