For my computer science programming-based course, I'd like to:
1) host my course and assignments (without solutions) open and free to all (e.g., as public GitHub repos)
but this seems at odds with also wanting to
2) not have to deal with rampant cheating.
Any open source assignments seem to suffer from the problem that a random stranger could do the assignment in her spare time and then post the solution online. So in theory, publicly hosting the assignments has created an avenue for my students to find a free solution.
Hosting my assignments on GitHub lubricates this process because the programming community knows how to click "fork" and any forks are listed right there for future students to browse.
What are recommendations or best practices to find the right balance?
The extremes have clear tradeoffs:
A) go full public. this is easy for me to implement using GitHub, but even students in our classes will have easy access to other students in the same section. I can run/threaten to run MOSS, but students may still try to beat it and that will create a hassle.
versus
B) go full private. I lose all the niceties of the GitHub interfaces, lose my open source freely available and advertised assignments to the larger community and world.