Designing a 'Git 101' class

Events happening in the community are now at Drupal community events on www.drupal.org.
chachasikes's picture

Hello Git Migration Team.
I am interested in sharing plans to teach Git.

In the beginning of July, I will be teaching a Git class to students participating in a summer Drupal learning project.

This is my plan for preparing the class:
1. Personally get more up to speed with Git. I use Git already, but want to read both Git books (the O'reilly one & also the Apress book) Both are mentioned on the Drupal Git resources handbook page.

* http://drupal.org/node/783086

* http://groups.drupal.org/node/64083 (learning Git discussion)

2. Review Git tutorials that would be good for students in a class (share reviews back with Drupal.) Esp. http://learn.github.com
3. Create curriculum

* Think about what students need in order to get Git running on their computers. Prepare a list of things students will need on their computers.

* Think about how mentors might be able help students during the class 'lab hours.' (What resources would mentors need in order to help students - ex. troubleshooting Windows, Git on weird servers, helping students with command line?*)

* Think of what sort of introduction to Git would work:
* What is Git? What is version control? Why use Git? What will Git enable you to accomplish? What does it mean that Drupal will move to Git?
4. Create little learning assignments**, things to try with Git. Figure out how to do these assignments individually, remotely, remotely with mentors, & in person.
5. Make class schedule. Break the activities and exercises up into the available time.
6. Make webpage showing the curriculum of the class & 'advertise' to students.
7. When class is over, report back to Drupal how our class went. (I guess this means doing some sort of evaluations.)

So, that's my plan.

Note: my git class will take place after a 'Command Line Bootcamp.' I am planning to have students in my project use the Git command line since we are teaching 'development skills.' Git GUIs are another option, but I decided to focus on using the command line for my class.

Examples of assignments
Beginner activities
Task 1: 'Make a commit': initialize a repository, add files, run git commit command.
Task 2: 'Clone a repository'
Task 3: 'Push to a remote host'
Task 4: 'Pull from a remote host'
Task 5: (Partner activity) 'Pass a file from your computer to a partner's computer.' The partner will modify the file. Get their file back to your git
repository using git.

Advanced activities
Task 6: (Groups of 3 or more people) 'Merging': Clone X repository. Everyone makes a remote branch. Everyone shares their changes at the same time. Make sure the files fit together properly & have everyone's additions.

Task 7: (Groups of 2 or more) 'Sharing Patches': Share a patch. Apply a patch. Share a patch on an issue ticket. Drupal patch etiquette. Testing Bots.

Try fancy Git tricks
Tricks that show why some people are so in love with Git! :)
* git stash

* Checking out a specific commit with that 6 digit hash thing

* Others suggestions? I don't know the advanced features of Git that well yet!

Comments

some ideas: user tracks and toolset choice

stephen.moz's picture

User tracks

A poll on user-experience levels might be interesting, it could help focus the content of a course to know where the audience is coming from:

  • Revision control beginner (never used git/cvs/svn nor anything else like it)
  • Git beginner with CVS background
  • Git beginner with other revision control background (SVN/ BZR)
  • Git user
  • Git power-user (mostly people involved with non-Drupal projects already?)
  • Git professional (mostly people involved with non-Drupal projects already?)

People involved with non-Drupal projects would obviously benefit from Drupal-specific tutorials, which probably will not be plentiful until the whole CVS migration thing is actually complete.

Toolset choice

If at all possible, it would be nice to have a poll to see what OS/Editor/Toolset people are using in their Drupal development festivities. Git is complex enough even if you assume there is a uniform toolset and experience level among all relevant users. One might be tempted to setup a virtual machine image using Drubuntu or Bitnami and require all users in a course to be familiar with Drupal development in a LAMP environment. Another thing that would be nice is if more users on Drupal.org could post on their user space somewhere a description of the tools they use as part of their on-line profile, even if it is something simple like:

  • I am a Developer: (MAMP plus TextMate)
  • I am a Designer: (Dreamweaver plus Photoshop plus WAMP)
  • I am a Developer: (WAMP plus NetBeans and Komodo IDE)
  • I am a SysAdmin/DBA: (LAMP plus NetBeans and Navicat-MYSQL)

good feedback

chachasikes's picture

thx stepmoz!

in the context of this git class, all the learners have profiles - and since the git class is a remote class, i added some participant-only fields for 'computer situation | software situation' -- which so far has been extremely helpful -- when someone says they are using Dreamweaver, it gives me a clearer sense of what kinds of 'tech support' we need to provide the students.

In general, we have reached out mainly to folks who want to become more of a developer, so most students have some familiarity with basic web development at least.

I also asked the learners questions about what skills they have, and what they want to learn. this has also helped a great deal - because what the students say/don't say helps me get a sense of where they are all at. All of the students vary so widely in their experiences, time availability, and technical challenges. We definitely have all of the roles you outlined above.

Anyhow, I've just started prepping materials as the first assignments will come out in a few days... the first one is 'install git' - we shall see how that goes!

Interested in open sourcing the final course notes?

winston's picture

I've recently started a drupal open curriculum project here...

http://gitorious.org/drupal-open-curriculum

git would definitely be on my list of to-do courses after I finish some intro courses first.

Even raw notes in plain text would be welcome. I'm happy to put the structure around it. It them becomes a resource for anyone to use/improve upon.

Anyway, I think your course is a great idea.

Yep - Definitely

chachasikes's picture

I'm finally starting to work on it - and it sounds like there are others who care about this subject too. Fun!

Definitely looking for interested parties (who want to get better at git) to help make 'micro-lessons' -- working on it NOW (july 17 - july 30) - and then 'spot' lessons as students work on projects actually using git.

This is the start page/outline:
http://garden.localbiology.org/git

For our project, we will probably focus on using available online resources, but make 'git learning activities' and short screencast videos - some of which might make sense out of context.

Most of the screencasts I've been making are hosted on Jing, though I might run into my 'free' limits for hosting soon. (I think they give me 200MB free.)

Resources

@BrianGilbert_

Help make Drupal Melbourne meetups more awesome:
http://groups.drupal.org/node/204518

The best way to grow your local commununity is by participating in it!

d.o list

Drupal.org Git Team

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: