Last week I taught an introduction to version control with Git to the UCD computer science capstone design course. There were about 100 students and I took them through the Software Carpentry Git lesson in just over 1.5 hours. From the feedback, I think it went really well. But there were some interesting tidbits that I learned teaching this to undergraduates instead of the typical group of graduate students.
We used the SWC Git novice lesson. I only went through sections 1 through 9 as sections 10-12 weren't really relevant to the students in the class and there wasn't enough time. The class was setup just as normal; I gave the installation instructions out one week in advance. Surprisingly, there wasn't a single installation issue at the beginning of class! I had two TA helpers (maybe three) and at least on undergraduate helper who reviewed the materials and were given some prompts on how to use the Etherpad, the sticky notes, and their roles. I live coded through the lesson with the students following along. I closed with collecting feedback and answering final questions. The following lists some of the things that I noted during and after the class:
- It was hard to get any kind of verbal reaction from the students or get them to volunteer to speak. I generally sensed an emotionless crowd, but the feedback I collected at the end told otherwise. Many claimed the lesson was good or great. I think most were shy and this style of teaching isn't something they are used to.
- The Etherpad wasn't used well, in fact, the chat room became a place for bad jokes and goofing off. So much so that the professor asked some students to see her after class (they didn't have enough foresight to create a false name). We should have monitored this and encouraged proper use. After reading the feedback, they would have definitely appreciated having the commands I was typing in that document. I'll need to make sure the helpers work at this and even start the note taking to initiate good behavior there.
- It was hard to get them to use the sticky notes. This may have been partly because I didn't explain them well. So it wasn't until the last sections when more people needed help that I was able to get visual feedback with them. And still only 60% or so seemed to use the notes at all as a signal.
- Many of the students had used Git before, but after reading the feedback I collected at the end, I think the novice lesson was the right choice. There were more "too fast" statements than "too slow".
- Many would like to have seen some information on branching and more examples on merging and conflicts. The one merge we did didn't seem to provide enough to really get it. And we didn't talk about branching at all.
- I covered the material in 1.5 hours, which is faster than a normal SWC workshop (~2.5 hrs). As I said above, there were a fair number of "too fast' complaints, but I think if they had taken notes in the Etherpad or noticed the cheatsheet I had linked in the Etherpad I would have had fewer. I'll need to point to the cheatsheet explicitly next time.
- Not many students were familiar with the UNIX command line, so I gave a few sentence explanation of commands, sub-commands, flags, and arguments. I think since they've done a fair amount of programming that this was easy to pick up. This isn't always the case with non-cs students.
- Github happened to go down an hour before I taught this and didn't come back online to just at the end of class. This at least gave me a chance to talk about why it is really bad to have a SaaS that so many people use go down like this. I wish I had an estimate of the money that the downtime cost all the users of Gitub. I improvised and used Bitbucket instead. That went pretty well except for one hiccup, I didn't know how to properly use the Bitbucket https URL in the partner portion of the lesson. You have to specify it as git clone https://firstname.lastname@example.org/partnerusername/reponame.git. Some students helped me figure that the username before the @ needs to be your own username for proper authentication.
- It wasn't until we got to using Bitbucket that I started getting more questions from the students and the helpers had to scramble around the room to help people out. This let the helpers be a little complacent for the first hour or so and they suddenly had to do a bunch.
Overall, I think the lesson was the right scope and level for the class even though most had some experience with Git in some fashion. Although, we could think about breaking the section into two: novice and intermediate and teach two simultaneous lessons in two rooms.
The student feedback is below:
|good pace, waiting for everyone to be caught up||I would only recommend slowing down while entering commands.|
|structured clear and concise tutorial||not all students participated so grouping was harder|
|easy to follow step-by-step introduction to git||some parts of lecture can be more smooth (bitbucket)|
|great refresher, well put together especially with the interactivity||go slower, more info|
|very clear tutorial, clear instructions and easy to follow||would have liked some overview of branching|
|good basics||a little fast sometimes but nothing else|
|good beginner's material||don't let github be down, maybe a little fast sometimes|
|clear and easy to follow, all commands explained well||don't let github die! we had technical difficulties. T_T|
|liked how you went step-by-step and typed along with us||need to go a bit slower, need more advanced topic, eg branching, merging, etc|
|you were great!, learned a lot, interactive||it was a little slow|
|wish there were more tricks, was very interactive and good||sometimes you went too fast and itw as hard to keep up|
|very informative and a good refresher||a little fast on some inputs > slow typer|
|Thank you! it was very informative and helpful!||too fast! :) sometimes I got lost as you moved fast|
|Tutorial was very comprehensive. I thought it was a good review of what I already knew. :)||too fast. would be great if you had a list of all your commands somewhere instead of us following you|
|great quick overview of big points||too fast for me|
|very informative and comprehensive||cloning into bitbucket not very well explained and rushed|
|good overview for a first time git user||hard to control class|
|enthusiastic!||some command lines were not visible and/or were cleared too quickly|
|very fun and helpful||consider teaching branching/merging, git mergetool is super cool! try it!|
|good review of the basics||github was down|
|very concise and clear||only covered bare basics, which are already familiar. perhaps more advanced features?|
|good review||would have liked more "merging" tutorials|
|helpful for a beginner||didn't go over revert|
|the checkout thing was really cool||the steps could have been sped up so more could be covered|
|good patience and articulation||need better organization (time intervals of doing nothing took too long to prep repos)|
|I understood everything||too fast!, should handle more of merge conflict|
|Great review of Git. went over .gitignore and --config options I forgot about||didn't go over tag|
|very easy to follow, very hands on||most of the stuff was very basic|
|very informative an dmade the material clear and easy to understand||because each step depended so much on previous steps it was tough to catch up if you fell behind|
|clear!||github is better than bitbucket|
|great excitement and passion||sometimes too fast w/ the commands|
|want all of this written down||didn't cover branches|
|very patient and instructions were clear||too easy, more advanced lecture|
|i like your questions!||github didn't work|
|I liked the sticky notes as a clear signal of "ok"/"need help"||need detail on branch|
|Good intro to Git! The quiz like MC questions helped us understanding. Include more of them next time. :) Thanks!||nothing ...|
|Informative, good review for someone q/ knowledge of Github, spoke clearly||sometimes went too fast :(|
|sticky notes were good idea! very clear instructions, awesome!||uncertainty at points and no gui info|
|more options with command line coming from someone using gui||a crazy looking smiley face|
|I thought you worked through a lot of very complicated subjects in a very easy to follow way, very, very, very good. The time activities are great!||github?|
|rather than just a presentation on Git, you made us learn by actually doing it on our computers||no negative for me, about tutorial, just wish git was more user friendly|
|great tutorial on git!||maybe show off some gui tools|
|great job going over many different git scenarios! learned a lot||diagrams might be helpful|
|well organized, very informative and a good refresher||should make more info on merge|
|clear instructions||lots of people know about git already, should've just advanced to the more cool stuff|
|instructions were easy to follow||could'be gotten into more depth about git features since most people in the class have used git|
|great content||did not address windows commands such as dir instead of ls and cl instead of clear, also went fairly fast|
|easy to understand||some examples took too long|
|the activities w/ partners were really helpful and interactive||a bit slow paced|
|the presentation was clear and easy to follow||too bad github was down :(|
|good tutorial, especially for new people||went very fast over the commands. passing out a list of git commands would have helped.|
|examples were helpful||too slow and only covered the very basics. I wanted to see tags and ssh keys. :(|
|very thorough||I already knew everything.|
|Easy to understand, thorough and good for people new to Git||course is too large (# students) to effectively track students progress|
|learning about staging was new||moved rather fast, making it hard to catch some commands, having a list of the commands on the board would be helpful|
|very informative, goes over the most used git commands||It would be great if you provided a cheatsheet of what is going to be covered. If i get behind then I get really behind.|
|you explained things well and went step by step||want all of this written down|
|really liked the setup of the tutorial which was also really helpful, thank you!||I think we just need one sticky note.|
|very positive/patient||you went a bit fast, someone posting the commands on etherpad would be helpful as you go|
|good for a beginner||NaN|
|very well organized||NaN|
|you were enthusiastic and helpful||NaN|