After giving this some careful thought, I've realized it's pretty difficult to open the quizzes to other users. I will explain in detail below, so only read if you're interested, but if I find a solution I will update this page...

Here's my process for giving the quizzes:

1. I send the students the link to the quiz when class starts (here's an example)

2. they all are on monitors around the edge of the room so I can see what they are doing (there are color themes in CheckIt, but quizzes are automatically all the same color to make it easier to see everything is doing the same thing)

3. once it starts, I change the name of the quiz and redeploy to the server - that way, the link no longer works if they try to go back to it (if there are students absent, I won't release until everyone has taken it)

4. when they submit, the page will automatically close down

5. I have a teacher interface that allows me to grade the quizzes.  I can see work they put in the work boxes for partial credit and I can include comments on why they may have lost points on any question

6. when the whole grading process is done, I just change the name back again and students can go back and see my feedback


Problems with teachers other than myself doing all this (or even just having students log in at all):

1. the whole system only works for me or anyone in my school because it is partly dependent on the domain name for the school - I'd have to change that

2. if many people are using the quizzes, then the links can end up being "out there" and security would disappear

3. to have your students log in at all (rather than just log in as guest), I have to edit a JSON file - I can do that for a small number of people but eventually it would become too much - and that has to be maintained as students add and drop (I have a teacher interface that one could use if students login - here's a look at it).  But also, there's a very complex process to get GoogleSignIn to happen that has to be done by any teacher using this - it's many steps and not that easy to follow, but it's possible

4. if I have many teachers using this with student logins, all the data gets saved to AWS - which costs a tiny tiny amount for me for this amount of data, but could eventually become more significant


When I retire, one of the things I want to do is solve all these problems, because I think the pages are really good teaching tools and it took me years to build them up (you can click the ? on any page to see what some of the features are, but I need to update that a bit more, too)

The last big hurdle is security - I've had a few brilliant kids find ways to hack in and find the answers.  I've added several levels of security since then, but they always find a way around it.  Ultimately, it's a lot of work at this point for them to get at the answers for a HW and they couldn't get away with it during a quiz in class, though.  The real problem is that the answers are bundled with the page when the page is requested - it's encrypted and things are obfuscated, but the answers are there in the browser.  

I have thought through how I could hash the answers and then just hash the students answers and compare the two, but...

a. some questions have multiple possible versions of the answer

b. for many questions, the code takes my answer and the student answer and removes spaces and makes lowercase and compares the two

c. some answers have multiple parts to answer and order doesn't matter, so my code works through all the permutations

These and other issues make the hashing solution not practical - also, one of the key ideas of this is that students see the right answers when they are done - and you can't do that if only the hash is available (oh, this is also a problem for logging in as Guest - I need to make some decisions about that - it currently doesn't allow you to Submit and then see the answers when you log in as guest - although students would know which ones they got right)

The other obvious solution is to save all the answers on the server side - this would mean every time a student tries an answer, there would be a request to AWS, meaning it would increase the server requests probably a hundred-fold, but this is probably the best long-term solution.

To summarize: it's complicated!  The best situation would be to have other teachers have their students login so they can see the answers and the teacher can see the student work and even use it as valid homework assignments and give and grade quizzes.  I just think it's going to take at least a year before I can get to that point, and even then, I'm not so sure I can make it all happen