Computer Science I students, although AWESOME, are major procrastinators!!! You give them two weeks for an assignment, and, inevitably, they wait till two or three days before the due date to actually start working on it…and that's for the average CS1 student. But then there are those that just really love punishment and wait until the actual due date to begin coding. Invariably, and as with all programming students (even those that start early), these students run into obstacles in their understanding of the assignment, the requirements, the way to code, the syntax, and they end up having a plethora of questions.
So what happens: the TA lab, where TAs have been sitting idle, checking email and Facebook for a week and a half, finally gets busy. The Monday before due date, a lot of students show up. Tuesday comes, and the number of students wanting help more than doubles. Wednesday? Well, Wednesday is just stupid! Sooo many students come, wanting help, and unfortunately, not all receive the help they require because of the overwhelmingly large number of students.
The Problem: with such a congestion of students, the TAs have no way of knowing who was first, who should come next, etc. And to get help, you basically need to be an extrovert, willing to chase down one of the TAs and drag them to your desk for help. What if you're a shy student? Fagitabotit; good chance you may not receive help.
The solution to this problem is rather trivial: any student who has a question MUST stand in LINE to ask a question of the TAs. To be fair and to prevent one student from monopolizing a TA's time, if a student has several questions, they can only ask one question at a time. After they ask their first question, if they have subsequent questions, they must go to the back of the line and again wait for their turn. For the purposes of this assignment, we assume that each question takes exactly 5 minutes to answer, which we will refer to as one Q/A session between a student and TA.
Additionally, for the purpose of streamlining the lab, facilitating the procurement of help, and eliminating extraneous problems related to different compilers, developers, etc., the TA Lab (aka “the Cave”) comes equipped with a Laptop Dispensing Minion (LDM). The original plan was to have a high-tech, automated system, EECS-LDM (for Laptop Dispensing Machine), that would dispense laptops after scanning a valid Student ID Card. Alas, due to the economic crisis and the University-wide budget cuts, the high-tech, EECS-LDM plan was replaced with a low-tech Laptop Dispensing Minion (lowly, underpaid, undergraduate student). These state-of-the-art (well at least for 1982) laptops are sporting Microsoft Windows 0.0427 and the current version of DEV-C++, so the TAs don't have to deal with computers being set up differently from one student to the next.
Before a student can stand in the TA line and get help from a TA, each student must first stand in the laptop line to check out a laptop from the LDM. When a student has finished asking all of
their questions, or when there are no longer any TAs in the lab (because they have left for the day), the student must then enter the laptop line to return the laptop to the LDM, BEFORE they can exit the lab. We assume that the process of checking out a laptop takes one minute, and the process of returning a laptop also takes one minute. We also assume (and rightly so!) that all CS1 students are honest and would never, ever, ever take one of these rockstar laptops. Therefore, for the purpose of this simulation, all students who take a laptop do indeed return the laptops.