On Sat, Sep 16, 2017 at 4:09 PM, David <david(a)kdbarto.org> wrote:
The other thing I did was to have students give their programs half
way through the project to a randomly chosen (by me) other student.
They were not allowed to assist the recipient and grades were based
on how well the final program met the requirements given at the beginning
of the project. Code quality went way up on the second project compared
to the first.
CMU used to have a required SW engineering course that did that. It was
the 3rd course required after Data Structures and before Compilers, OS or
anything 'large.' It was a Mary Shaw innovation. I always thought it
was brilliant. The CMU course assumed you worked in 3-4 person teams and
at least two transfers were done over the course of the semester. Your
team was not allowed to replace whole sections of code. If you thought
your team got screwed somehow, you could appeal to the TA, who could chose
to give you a different group's code yet; but could not use you own last
version.
CMU stopped teaching the course a few years ago - I gather it was really
tough to admin - students always b*tched about, but they did learn a lot of
practical stuff. But when I took it, I thought it was one of the best
courses I had as an undergrad in ~75 (we build an airline reservation
system in Algol). It was my first exposer to source control, peer review,
excellence in commenting, full documentation, etc.. -- so many ideas that I
so take for granted.
Clem