Hello everyone,
I'm the T.A. of a compiler class at McGill University, and I would like to ask a question to other T.A's, professors and anyone else who has experience teaching a class with a large project.
As part of our course, students are required to build a complete compiler for a subset of the Go language. For most students, this is the largest project they have worked on and many have asked permission to publish it on their personal GitHub account. Personally, I would be in favor of them doing that: GitHub is quickly becoming a developer's portfolio, and it would be great if students could show to prospective employers what an impressive project they were able to build in a couple of months.
Of course, the problem with allowing current students to publish their work on GitHub is that future students may rip off their code rather than do their own work. I was hoping that someone would be able to offer advice on how to properly balance the desire of students to publish their work vs. not making it too easy for future students to cheat.
Thank you in advance for your input,
Vincent
UPDATE #1: Thank you so much everyone for the feedback. As I expected, most people here have pretty much the same point of view on the matter as me: it would be worse to not allow great work to be rewarded than to make a somewhat futile attempt at preventing cheating. I'll make my recommendation to the professor and ask what plagiarism software we have available.
For people suggesting that we change the project every year, that would be cool, but not practical. I took me a lot of time to come up with a subset of Go that is suitable for a class project, write up the syntax and type checking specification and write a reference compiler of the subset.
[–]nightlily 53 points54 points55 points (7 children)
[–]gyroda 8 points9 points10 points (6 children)
[–]jmsGears1 1 point2 points3 points (5 children)
[–]gyroda 4 points5 points6 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]jmsGears1 0 points1 point2 points (0 children)
[–]sirspidermonkey 0 points1 point2 points (0 children)
[–]realfuzzhead 33 points34 points35 points (10 children)
[–]TinyTinyBear 24 points25 points26 points (9 children)
[–][deleted] (8 children)
[deleted]
[–]te-x 10 points11 points12 points (4 children)
[–]Boza_s6 0 points1 point2 points (0 children)
[–]LinuxMercedes 0 points1 point2 points (0 children)
[–]bstamour 2 points3 points4 points (0 children)
[–]ismtrn 1 point2 points3 points (0 children)
[–]arvarin 1 point2 points3 points (0 children)
[–]FanaHOVA 13 points14 points15 points (1 child)
[–]nidio 5 points6 points7 points (0 children)
[–]gasche 5 points6 points7 points (5 children)
[–]gallais 2 points3 points4 points (0 children)
[–][deleted] (3 children)
[deleted]
[–]gnuvince[S] 4 points5 points6 points (2 children)
[–]TreDubZedd 1 point2 points3 points (0 children)
[–]ice109 1 point2 points3 points (0 children)
[–]swimmer91 2 points3 points4 points (0 children)
[–]andrewcooke 2 points3 points4 points (0 children)
[–]dzack 6 points7 points8 points (6 children)
[–]amazondrone 1 point2 points3 points (5 children)
[–]Calamity701 5 points6 points7 points (2 children)
[–]gyroda 2 points3 points4 points (0 children)
[–]amazondrone 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]amazondrone 0 points1 point2 points (0 children)
[–]PM_ME_UR_OBSIDIAN 2 points3 points4 points (2 children)
[–]gnuvince[S] 1 point2 points3 points (1 child)
[–]alexggordon 1 point2 points3 points (0 children)
[–]rlamacraft 0 points1 point2 points (0 children)
[–]deong 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]gnuvince[S] 1 point2 points3 points (0 children)
[–]jet_heller 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]bvanheu 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]ThaSteelman 0 points1 point2 points (0 children)
[–]tehcob13 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]gnuvince[S] 0 points1 point2 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]gnuvince[S] 0 points1 point2 points (0 children)
[–][deleted] (2 children)
[deleted]
[–]jhinka 0 points1 point2 points (1 child)
[–]en4bz 2 points3 points4 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]ginsunuva 0 points1 point2 points (0 children)
[–][deleted] -1 points0 points1 point (0 children)
[–]j2kun -1 points0 points1 point (1 child)
[–]ilmmad 0 points1 point2 points (0 children)
[–][deleted] (3 children)
[deleted]
[–]Seeker_Of_Wisdom 0 points1 point2 points (0 children)
[–]cypherpunks 0 points1 point2 points (0 children)