Подобная система использовалась в Google CodeJam.
Вопрос в следующем: как запретить пользовательским программам делать ненужные вещи? Они должны иметь возможность только считать, но не исследовать файловую систему, что-то удалять, что-то записывать, открывать порты и т.д. При этом, используемые языки могут быть совершенно разными: кроме уже упомянутого С, допустим, - Java, Ruby и Lisp.
