I still like to push the idea that my school's CS department uses: grading appointments. 40% of your grade is the code actually working, 60% is you being able to explain it to the TA.
If the TA has a grasp of spoken language, that might work. (In the past I've dropped labs and classes when profs/TAs couldn't communicate clearly.)
Well, in that case I'd get 40% of the full mark just by getting some code from github, and another 20-30% just by quickly going through the comments just before the defence.
The down side is that grading becomes more subjective. I have had one or two TAs could not accurately judge students understanding of the subject. It is a good tool though and did determine part of my grade in undergrad CS. This combined with in house programming quizzes/tests should go a long way to evaluating a student knowledge.
I second that it is a wonderful idea. One on one project code reviews where the student explains their rationale and the professor points out issues would be a great way to judge progress as well as practice for code reviews the student will face in the real world.