(応答は遅れますが、質問の関連性がなくなることはありません)
私は同様の問題に直面し、Webベースのアプリケーションを作成しました。
https://jefferey-cave.gitlab.io/miss/
私はjavascriptとpythonで教えていたので、それらはそれが扱う言語です。C / C ++(現在)は処理しません。JavascriptインタープリターがCをどのように処理するかを知りたいと思います。
gitlabで利用可能
私が直面した問題は、国境を越えて学生コードを提出することは違法であるため(MOSSは禁止されていました)、ローカルで実行されるものが必要でした。実装は純粋なクライアント側ブラウザです。
興味深いことに、それは独自の方法であなたの「低誤検知」基準を満たすかもしれないと思います。割り当ての間には常にある程度の類似性がありますが、独自の手法を使用して、「疑わしいと思われる」ポイントを特定します。
教室でのグループダイナミクス(誰が誰と一緒に仕事をしているのか、誰と一緒に勉強しているのか)を判断するのに役立つことがわかりました。
楽しいライブグラフィックがいくつかあるので、最初の課題を提出した後、学部生のクラスに見せることは役に立ちました。最初の割り当てには常に高度な類似性があったため、ライブでデモンストレーションしても害はありません(提出名は匿名化されています)。
私はいつも、私が(ひどく露骨に)だましていると思った生徒の話をします。彼らの作品は、他の学生の非常にユニークな答えと驚くべき類似性を示しました。生徒の作業をクラスの他の部分と比較しても、クラスの他の部分と比較して有意な類似性は示されませんでした。それは「興味深い」のしきい値をはるかに下回っていました。これは、提出物のより深い調査につながりました...チュートリアルがあり、スタイルが透けて見えたことがわかりましたが、作業はユニークでした。
何も起こらなかった、そしてそれらの学生は彼らがどれほど近づいたかを決して知らなかった。