How do you teach when your students have wildly different backgrounds?
I don't know what options are open to you, so I'll hope you have a free hand. I certainly did as I got farther along in my career, but a newcomer might think this is risky. In fact it is well proven:

I'd suggest that you base much of the grading on the work of groups rather than individuals and I would flip the classroom. This gives you the advantage of observing the groups in almost all of their activities. The "material" and "content" of the course is obtained through readings and video, not through lectures. What happens when the students are face to face is that they work in groups to produce something, perhaps ultimately a web site in such a course as you have. 

But this might not work if you scale is huge. 

I think you should also create the teams yourself and assure a variety of levels and types of experience in each team. A simple questionnaire for each student on the first day can help you decide how to divide up the teams. The teams should be small, to enable simple communication, but probably at least four per team. 

In such a course you also need to have the students do "peer evaluations", perhaps periodically. If you manage this well you can also achieve a fairly high degree of the better, more experienced students aiding the others. But to do peer evaluations successfully, it has to feel safe. It should be entirely positive based. In a group of five, I would ask students "Who were the two most helpful members of your group? Why? What was their contribution?" 

You can modify the above to suit your course, and you can also tell the students that being seen by team mates as helpful will give a grading bonus. Don't ask students to evaluate everyone, but just to give positive comments when appropriate. 

But you also need to employ "self evaluation" in any such scheme. "What was your own chief contribution to the team's work?" 

The goal is to get a spirit of cooperation going, rather than competition. This means, of course, that you need to make it possible for everyone to get full marks. Therefore "grading on the curve" will ruin it, since it is a fundamentally competitive zero-sum situation. 

In team based work, I also required teams to present their work to the class at the end of the course. I also required each teammate to participate in some way in the presentation. This was a bit hard on introverts, but it was a skill that they need to develop in any case if they are to have a career. Even if the career is outside CS. 



Note that Peer Assessment is a wider topic than what I suggest here. I don't necessarily suggest all of that, but do suggest that peers focus on positive aspects only. This makes it "safer" and, I think, more honest. I once had to upgrade a student who I thought was slacking based on the fact that his teammates (who I knew were working hard) praised his contributions.