17

I don't have real answers, and I suspect there are none. I also reuse prompts, if only because good ones are almost absurdly hard to come up with, write-ups and supporting code take time, etc, etc, etc. I've taken a series of steps to mitigate the cheating. Some of these are peculiar to my own situation, and may not translate directly to another context, ...


15

I don't think there are any published tools to generate programming assignments, though there are articles that describe such tools (such as this one from a CUNY, or this one from Croatia, so one option is to try to contact those authors and find out whether they would share their results with you.) I will state categorically that there is no way of ...


13

I can only speak from a high school perspective as that is what I teach (14-18 years olds), and I truly feel your concern on this question. Biggest issues I have in my CS class are distracting websites (YouTube, games, etc) and copying code. I have certainly not fully conquered the problem but here are a few things that I do that seem to help: Don't ...


13

For me, labs are worth very little. The district sets them to be only 10% of the student's average. So I don't worry about them working together. In fact, I encourage it. What I tell students is that as long as they understand the lab when they're finished, it's a successful lab. Yes, I'm sure there are students that straight copy from their friends. At 10%...


8

At Denison, our intro class has labs designed around real world problems, and involves lab reports. This makes it a lot harder to cheat. We're not saying "implement quicksort", we're saying "write a simulation to check Tom Schelling's Nobel prize winning work, then write a 2-3 page paper explaining what you found." Of course, students will still try to get ...


7

I agree with Ben I. and Buffy. I'm planning to cancel the remaining exams in the semester (assuming my university ends up moving to online instruction) and replace them with projects. Many studies have shown that project-based learning is more effective for most learners, and especially for learners from underrepresented groups. That said, if I needed to ...


7

My main tool to prevent plagiarism on short beginner labs is to have a discussion with my students and to under-count them in grading. I explain to my students that cheating is a huge problem on CS labs specifically. I use a news item of a huge number of university freshmen expelled for cheating in a CS class. (Search as I might, I cannot find the example ...


7

I'm not interested in answers that tell me to never reuse problems in a future semester. Well in that case the answer is simple: you can't stop people from sharing these example solutions. Obfuscation or any kind of self destructing documents are trivially circumvented by just taking a screenshot. If you could block taking screenshots in the OS you couldn't ...


7

Jack Applin (a two time winner of the Obfuscated C contest) at Colorado State University has created a Perl script called shadow. It takes any text file and spits out an HTML file as output that is readable in a browser, but not much else. Essentially it creates an HTML table, but does it in a way that is is not printable, nor copy-able. The file can have an ...


6

What about a barium meal test? Let's say you have 8 questions that can be ordered in any way, that's 8! = 40,320 different combinations. Or let's say you have a line like the following: char* res = fun(a, (void*) b); Rewrite it to something like this: char *res=fun ( a,(void *)b ) ; You now have 6 places which you can vary, for 2^6 = 64 combinations. Then ...


6

Are you aware of the “Mountweazel” concept? https://en.wikipedia.org/wiki/Fictitious_entry Since it is impossible to prevent things being available a lateral approach is to include details that make it possible to quickly identify copying. Not a cure but might be a treatment to what ails you.


4

One option is to have a short closed-book in-class quiz after each lab assignment to test each student's understanding (which is a good thing to do even in the absence of cheating). For your sample problem, you might ask them to fill in the blanks to complete code to solve a comparable problem or to answer multiple choice questions about a short program ...


4

At my University, we had the chance to modify the syllabus, if needed, to remove or decrease the weight of "traditional" written tests. While in most programming courses eliminating tests is not a problem, as most of us were already relying mostly on assignments, group works, oral presentations, and so on, there are some courses, were more traditional ...


4

First, the obvious disclaimer: it is not possible to completely avoid that they share your solutions. You need to provide something* to the students, and that something they will be able to share. Second, try to produce a bit of variation between your assignments. For example, I may resolve a problem with a given file, and then change the order of the ...


3

Take a look at MOSS from Stanford (https://theory.stanford.edu/~aiken/moss). It is an easy to use free web service that compares files and reports similarities. You set up a free account and submit a request and what is returned is a URL to a report showing the similarities of various files. I have found that the easiest way to do this is to submit a .tar ...


3

This isn't really an answer and requires long term thinking, but perhaps this is an opportunity to start to rethink how we evaluate students. I'm not a big fan of testing. Especially high stakes testing and testing dependent on memorization. Perhaps there is just a better way to determine whether students have mastered the material. I depended much more on ...


3

Growth You say they copy the intelligent students, so first watch https://www.ted.com/talks/carol_dweck_the_power_of_believing_that_you_can_improve?language=en Feedback Then stop with the sumative assessment (Stop grading them). Encourage mistakes: I just heard of a company that has a mistakes wall. They seed it with a few famous quotes about mistakes. Then ...


3

All the work we've done on in-flow peer review (see, for instance, our working group report) is aimed in part at this question. Overall, I believe we should rethink our curricula, pedagogy, and assessments so that we stop viewing plagiarism as a huge problem, but instead creatively think about alternate educational practices.


2

I just got a chance to read the article you linked to. As a teacher of CS50 AP, I can attest to the numerous solutions that are available online for all things CS50. It's almost unfair for a student trying to remain ethical when Google suggests appending "solution" to a query like "cs50 mario." Even a search without "solution" will often return a link to ...


2

In addition to all of the great answers here, one further tool to consider is MOSS (Measure of Software Similarity), which has been released for free to educators by Stanford: https://theory.stanford.edu/~aiken/moss/ It can currently analyze code in C, C++, Java, C#, Python, Visual Basic, Javascript, FORTRAN, ML, Haskell, Lisp, Scheme, Pascal, Modula2, Ada, ...


2

I have been fighting this for 30 years without a true solution. I think it is human nature to take the shortest way and if that involves copying code the students will do it. I teach at a high school and my classes are small enough to actually see the kids code so I have less issue with this than those teachers with large classes or classes where the ...


2

If I were to try some online sleuthing, the first question I would ask is for the course's website, if there is one, or for links to recent assignments. This has the double benefit that your primary goal in doing this is to make sure that your instruction is as helpful as it can be. If students cannot provide this, then my next question would be about how ...


2

Maybe a better idea could be a quiz with automatically generated questions, like a code snippet and the request to determine the output for a given input, with different input values and variable names for each student. I actually have successfully implemented this (in part) for my first-semester programming tests this year. For example: Using the ...


1

I rather agree with Buffy, put simply, my argument is that a more collaborative approach does bear more fruit. Especially if the goal is to show understanding of concepts and a how to put them into practice to solve a common problem. Rather than focusing on an individual’s response, see how they interact and problem-solve in a team utilising all the ...


1

I teach at the community college level, in Ontario's Colleges of Applied Arts and Technology system. My students generally study electronics and don't have any burning desire to become programmers. I teach hardware interfacing and realtime responses to hardware or external events with Python, CircuitPython and Arduino, on Windows or Raspberry Pi. For ...


Only top voted, non community-wiki answers of a minimum length are eligible