Hi,

I'm aware that you may have read the subject line and thought "use git!" - but 
I think there's a bit more to this question than that...

As part of some small-group programming teaching, I'm trying to show some 
examples of development of code over time, as the code is gradually refactored, 
made more generically-applicable and generally improved in quality. I'm trying 
to work out the best tool or approach to use to show these changes with 
annotations about why each change was performed. Obviously when teaching 
face-to-face I can go through this interactively with the students - but some 
changes to real-world code are too large to do live - and students often seem 
to find these sorts of discussions a bit overwhelming, and want to refer back 
to the changes and reasoning later (or they may want to look at other examples 
I've given them).

For context, I'm sometimes doing this with little demonstration scripts that 
I've written, sometimes with real-world code from other projects, and sometimes 
with code that some of the students themselves have written.

Approaches that I've tried:

1. Making all of the changes to the code and providing a separate document with 
an ordered list of what I've changed and why.
        (Simple and low-tech, but often difficult for the students to visualise 
each change)

2. The same as above but committing between each entry in the list.
        (Allows them to step through git commits if they want, and to get back 
to how the code was after each individual change - but many of the students 
struggle to do this effectively in git)

3. The same as above, but using Github's line comments feature to put comments 
at specific locations in the code.
        (Allows annotations at specific locations in the code, but rather 
clunky to step through the full diff view of commits in order using Github's UI)

I suspect any solution will involve some sort of version control system used in 
some way (although I'm not sure that standard diffs are quite the best way to 
represent changes for this particular use-case), but possibly with a different 
interface on it.

Is this a problem anyone else has faced in their teaching? Can you suggest any 
tools or approaches that might make this easier - for both the teacher and 
students?

Thanks,

Robin

_______________________________________________
Discuss mailing list
Discuss@lists.software-carpentry.org
http://lists.software-carpentry.org/listinfo/discuss

Reply via email to