[TUHS] really Pottering vs UNIX
david at kdbarto.org
Tue Sep 19 00:23:35 AEST 2017
> On Sep 18, 2017, at 7:17 AM, Clem Cole <clemc at ccc.com> wrote:
> On Sat, Sep 16, 2017 at 4:09 PM, David <david at 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.
I learned a lot myself by teaching the class in this way. One was that
some students didn’t need to be concerned about anything; they could
take almost any code and make it right. And at the other end were students
who, given any pre-existing code would never be able to make heads or
tails of it, regardless of the original quality of the code.
Still, I think that at the end everyone in the class came out ahead because
they understood that programming was never going to be a go it alone
proposition, you either started something you never finished or got to finish
something you didn’t start.
More information about the TUHS