Thanks for the heads up. Even when opened in a text editor the code is sufficiently obscure that it wouldn't pose too much of a risk with my first-year students. But of course that is meaningless if just one savvy student does what you describe. I am going to tie the answer array to a variable with the absolute time (somewhat obscure) so that the array contains null in all its elements before the deadline and proper answers afterwards. Still far from foolproof, but perhaps enough to buy time to think of something better. Ultimately, I don't that CDF will work for critical coursework and large classes. I will probably just set up a workflow to generate PDFs instead. Disappointing but a good learning experience.
Thanks again for responding,
On Thu, Oct 25, 2012, at 1:17 PM, "Miranda, Juan" <firstname.lastname@example.org> wrote:
> You can open any cdf file in Mathematica and use the ImputForm function to get its definition. You can do the same for any Mathematica palette. You can even right-click in the file ubication and select open with NotePad and all the definition of the CDF will be available, you can just paste the code in Mathematica and use it. > > Best, > > Juan > > -----Original Message----- > From: Gregory Lypny [mailto:email@example.com] > Sent: Wednesday, October 24, 2012 10:42 PM > To: firstname.lastname@example.org > Subject: CDF Security > > Hello everyone, > > I create CDF assignments for my students. They are pretty basic. A student selects their ID using a pull-down menu in a Manipulate, and the notebook is populated with randomized questions. The answers are buried in the document and are inaccessible until the deadline passes a week later, at which time I upload the same CDF but with a checkbox in the Manipulate that displays the answer under each question. So, at any given time, students have old CDF assignments for which the answers are accessible and new assignments in which they are not. I received a disturbing email today from a student who claims that he was able to see the answers for the new assignment by doing the following on his PC. > > - Open new quiz (where answers are blocked) in Mathematica (not the CDF player), enable dynamics when prompted, select ID in the Manipulate pulldown menu > - Open old quiz (where answers are not blocked), enable dynamics, select ID > - Minimize both documents and Mathematica > - Reopen old quiz and then close it > - Reopen new quiz, and sadly, the answers are revealed > > He sent me a screenshot showing the answers, but I was not able to reproduce this on my Mac. I'm trying to convince him to demonstrate this to me on my laptop. The only thing I can think of is that because the assignments use variables with the same name, Mathematica is loading answer variables from the old as globals and these are "unlocking" the same variables in the new. Any thoughts? > > Gregory >