Is it reasonable to require students to bring a laptop to every lecture?
I would go with the computer room option. There are several issues with getting everyone to bring a laptop:
- As you mention, a few students may not have one, and this could cause embarrassment.
- People are using different operating systems, and may have different versions of the software installed. This increases the chance of code working on some computers but not others, which is always tricky to deal with as the lecturer.
- High chance that at least a few students will forget their laptops, or their power supplies.
To deal with the issue of the computer room being poorly laid out for lecturing purposes, I would suggest providing all the materials (powerpoint, code scripts, etc) to the students electronically. This way they can have everything displayed on their screens and can follow along even if they don't have a good view of the projector screen.
I actually think you've got an XY problem here. From my experience of learning software languages, this doesn't feel like the most practical way of running it.
In general for learning a programming language, there should be a lot of practical time and a relatively small amount of lecture time. More than that, the practical time needs to be rather free-form and allow scope for better students to complete exercises quickly and slower students to take much longer over it. Simply dividing your class into two halves cannot ever cope with this - either it wastes time or holds back quicker students, or it prevents slower students completing exercises.
When I was at uni, the better solution was one lecture in a classroom, followed (same day, different day, doesn't matter) with an entire afternoon in a computer lab. For the computer lab session, the lecturer often wasn't there, but one or more teaching assistants were always on hand to answer questions, review code, and generally point people in the right direction. After that fixed time, the lecturer and teaching assistants left, but students who hadn't finished could naturally keep working on their own. Most students didn't have laptops at the time (this was the mid 90s!) but there was nothing in principle to stop people bringing in their own machines.
Edit based on your changes to the question: With your new information, it makes it even clearer that your original proposal simply won't work, and two separate exercises is the way to solve it. Getting information to 90 people is a lecture theatre job. Even dividing this into 4 sessions, you cannot make that work in a computer lab, and the lecturing component will take four times as much of your time. Anything other than a lecture theatre will fail, waste your time, and waste your students' time. Conversely, on the practical side there's no other option than dividing the group up so that they all get a guaranteed seat in the computer lab at some point.
This is not a direct answer, but I'd suggest an alternative.
I've found that if all students work on their computers I have problems judging their progress and can also only help one student at a time. Thus, when I teach R, I typically don't require computers for the students. Instead, I connect a laptop to a projector and ask one or two students per lecture to solve some practical problems on it and explain their approach. If they get stuck (they usually do), I ask for suggestions from the other students or explain how to find a solution (e.g., by explaining documentation). That way I don't only teach the solution but also ways of deriving the solution.
It's important with this approach to create an environment, where nobody gets embarrassed (it helps that everyone can be in front next time), but I believe it is more conductive to learning. Of course, the students also get homework.
I typically teach smaller classes of graduate students.