New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

one day approach to teaching material #104

Open
pschloss opened this Issue May 6, 2016 · 17 comments

Comments

Projects
None yet
7 participants
@pschloss
Contributor

pschloss commented May 6, 2016

I just finished teaching a one day version (~6 hrs including breaks) of these materials. I thought it might be useful to share what I did for others that might be looking for a trimmed down version of these thorough materials. The workshop started with a morning of bash, then an afternoon and morning of R, and then an afternoon of git. That turned out to be a mistake for the person teaching git, but whatever. My motivation was to give people the minimum that they needed to get going with R.

  • Lesson 1: I quickly went over the material without using git
  • Lesson 2: skipped
  • Lesson 4: More or less went up to but not including factors
  • Lesson 5: Combined with the material from Lesson 4
  • Lesson 9: Combined with the material from Lesson 4
  • Lesson 3: Discussed using the help window in RStudio to find help with read.csv
  • Lesson 6: Skipped using which, "Handling special values", "Factor subsetting", "Matrix subsetting", "List subsetting"
  • Lesson 7: Got to the gdp calculator at the end of the first day and picked up there on the second day
  • Lesson 10: Only taught if ... else in the context of the more sophisticated gdp calculator
  • Lesson 11: skipped
  • Lesson 12: skipped
  • Lesson 13: Followed pretty literally
  • Lesson 8: Followed pretty literally
  • Lesson 14: skipped
  • Lesson 15: skipped
  • I also added about 20-30 min on knitr showing how the plots from Lesson 8 could be put into a document.

I realize that I skipped lists and matrices and barely introduced factors to say they are categorical data types. To get through the dplyr and ggplot2 stuff those just aren't needed and you can go a long way in R without needing them.

When teaching the function component I tried to build up the gdp calculator piece by piece. I would show them how to do the year and have them do the country. Towards the end of the first day I could sense that they weren't getting it and they were glazing over. So I had them get in pairs and alternate explaining each line to each other. They really perked up and seemed to have more confidence. We repeated this the following morning to rebuild what we had done and to go forward with the if statements.

Having taught some version of these materials twice now, I fear that a lot of the SWC materials have become bloated beyond what is truly necessary to get someone going and so that kind of effected what and how I approached the materials.

@naupaka

This comment has been minimized.

Member

naupaka commented May 6, 2016

Awesome, thanks for the notes @pschloss!

Any chance you have some of that knitr content written up and would care to share it via PR? Issue #11 is about adding a knitr lesson - @kbroman made a set a while back and we still haven't brought them in although in my experience many people teach knitr at least briefly in R workshops even without a formal lesson.

I personally have for a long time wanted, and I think we have at times discussed on the SWC/R discuss lists and elsewhere, having a way/place to create alternate 'menus' of content drawn from the full set of given lessons available from SWC. For instance, what could you do in 2 hours? In one full day of just R? Of two full days of just R? How do people fit the R, shell, git, etc materials together into a larger narrative?

We haven't quite gotten around to that yet, but perhaps one day soon...

As for the materials being 'bloated,' I agree that they are often way more than may be needed for any given workshop, but I have always thought of them more as a library than a pedagogical script. Maybe that's my own teaching style, and I know others like to use them verbatim, so it may be hard to balance having lots of options and having a streamlined lesson plan that everyone uses in all situations.

Certainly a great issue to think more about and one worth further discussion in the community, in my opinion.

@pschloss

This comment has been minimized.

Contributor

pschloss commented May 6, 2016

Sadly, I don't have a script that I followed for the knitr content. I really built it up and then felt like it fell flat on delivery. I totally forgot that @kbroman had a lesson!

I'm sure there's a way, but it would be kind of nice to have instructions on how we can import lesson materials into a workshop's repo and then remix without goofing up the repo. This seems to be what @kbroman (and @karawoo) did IIRC.

@naupaka

This comment has been minimized.

Member

naupaka commented May 6, 2016

To your second point -- do you mean technically (git-wise), conceptually (keeping lesson names and order etc etc) organized well, or procedurally (in what circumstances should one do such a thing)? As for keeping copies of modified lessons and etc within the main repo, we had a discussion a while back on trying to do this with PRs that never get merged (see #9 ).

@naupaka

This comment has been minimized.

Member

naupaka commented Jun 5, 2016

Related to issue #5

@gvwilson gvwilson added the discussion label Aug 4, 2016

k8hertweck pushed a commit to k8hertweck/r-novice-gapminder that referenced this issue Sep 26, 2016

@naupaka

This comment has been minimized.

Member

naupaka commented Dec 4, 2016

Just adding a thought that this is the type of info that would be great to incorporate into the instructor.md file at some point. I think maintainers have been talking about standardizing and overhauling this type of thing across all the lessons.

@liz-is

This comment has been minimized.

Contributor

liz-is commented Dec 16, 2016

Hi @pschloss, I'm planning to teach a one-day version of these R lessons at a workshop in January, so it's very helpful to see how others have approached it. However, I think the numbering of some of the lessons has changed since this was posted, since Lesson 7 is now Control Flow, and Lesson 10 is Functions including the gdp calculator. I guess these ones have been switched. Could you confirm which topics you taught?

I'm also interested in how you combined different lessons. It'll be my first time teaching and I'm not sure how combining topics would work in practice, e.g. do you use some of the challenges from each lesson?

@liz-is

This comment has been minimized.

Contributor

liz-is commented Jan 31, 2017

I taught a one-day version of these materials last week, following I think a similar approach to @pschloss:

Half-day 1 (~3.5 hrs):
1 - Intro to R and Rstudio - without using git, didn't cover mathematical notation
4 - Data Structures - didn't cover naming vectors, only briefly mentioned matrices, intended to only cover factors briefly but I was asked about them. I used Challenge 3 to introduce different ways of subsetting but didn't spend much time on this.
5 - Exploring Data Frames - started at the point of loading the gapminder data, so skipped rbind/cbind, used ?read.csv to introduce the help pages
8 - Creating Publication Quality Graphics - covered as written, got up to just before the last challenge by the end of this day

Half-day 2 (~3 hrs):
8 - Creating Publication Quality Graphics - started with the last challenge as a refresher
10 - Functions Explained - basically as written, used this to introduce if statements
13 - Dataframe Manipulation with dplyr - as written
15 - Producing Reports With knitr - did a quick demo at the end of the day

The workshop had participants with a range of experience levels, so I wanted to include ggplot and dplyr as topics that would be of interest to people with some existing R experience. I think these are quite motivating for novices, as well. Because I wanted to include these, I had to skip some of the earlier material so I tried to only cover the essentials.

As written, the data types and data structures material seems to me to be covered in more detail than is necessary for the later material. It's also a bit abstract, although I think introducing data types in the context of a data frame does help explain why the learners should care about them. I found teaching this material tricky and it felt repetitive, although this might have been because I was trying to go through it quickly and not doing a great job of condensing it from the written version. If / when I teach this material in a similar way again I will probably write my own shortened version beforehand rather than trying to work from the full lessons on the day. I think it would be helpful to have a shortened version that provides just enough background to get going with the data frame-centric stuff that comes later.

I felt the later lessons (8, 10, 13) went more smoothly, maybe because I was more used to teaching by then (this was my first workshop), or because I was using them as written rather than trying to adapt / shorten them. The style of these lessons is also slightly different from the earlier ones, as they have more regular challenges throughout the lessons, and that helped to keep the learners engaged.

@karawoo

This comment has been minimized.

Contributor

karawoo commented Feb 6, 2017

I recently taught a morning of R and did something similar. I was teaching to mostly novices and I wanted to make sure I got to plotting by the end of the morning, so this is what I did:

  • Covered most of the Intro lesson except the “Vectorization” section
    • Before variables & assignment I did a little of the Project Management section — had them create a new RStudio project and initialize a git repo, but I didn’t talk in a ton of details about projects and didn’t use ProjectTemplate
    • Then I went back to the intro, created a script and explained what that was, and continued with variables and assignment, writing all commands in the script and sending them to the console as I went
  • Skipped the Seeking Help section but covered some of the contents at various other points
  • Skipped most of Data Structures, but did cover creating vectors with c()
  • Skipped most of Exploring Data Frames until the “Realistic example” section, then adlibbed a little about what data frames are
  • Condensed the Subsetting lesson and didn’t cover factor, matrix, or list subsetting.
  • Went through the Creating Publication-Quality Graphics lesson, which took less than the estimated 1:20 so I threw in some additional material on the fly (box plots, facet_grid, how to save plots).

Basically I avoided lists and matrices completely, which seemed reasonable for a novice audience. I checked in midway through with a makeshift poll in the etherpad, and most people said the pace was good. A few thought it was too slow and no one thought it was too fast.

There was a second half-day of R that I wasn't there for, so I'm not sure what they got through in that session.

@karawoo

This comment has been minimized.

Contributor

karawoo commented Apr 2, 2017

Seeing some of the other issues that have been opened recently, I wonder if we ought to think about adopting a guideline of "if you propose adding a topic, you have to propose cutting an existing one" given that there's already much more material than can be taught in a typical workshop.

I'm also interested in finding some consensus around what the "canonical" contents of a one-day workshop ought to be. This wouldn't have to be more than a suggestion, and if instructors want to pick and choose other sections, that's fine. But I've talked with several new instructors lately who are overwhelmed by the amount of material in this lesson and don't know what they should teach. I think it's probably easier for more experienced instructors to treat the lessons as a library to pull from, but it would be a kindness for new instructors if we provided some guidance.

@naupaka

This comment has been minimized.

Member

naupaka commented Apr 2, 2017

I am 100% behind @karawoo on this - currently these lessons represent at least 2-3 full days of material if taught to a novice audience. Where do people think the place to put a 'canonical' or recommended set of episodes should be?

@karawoo

This comment has been minimized.

Contributor

karawoo commented Apr 3, 2017

I can think of a couple options. Probably the simplest would be to add a section to the Instructor Notes that describes the sections we recommend including in a one-day workshop. Another, more involved option would be to rearrange the lessons in the schedule on http://swcarpentry.github.io/r-novice-gapminder/, with the recommended ones first and the rest in a separate section of "optional alternatives" or something.

Anyone else have thoughts?

@bbolker

This comment has been minimized.

Contributor

bbolker commented Jul 2, 2017

Quick thoughts:

  • echoing @karawoo's "it would be a kindness for new instructors if we provided some guidance", the (reasonable) "just use this as a library rather than a pedagogical script" view adds a big burden for those of us fairly new to SC in prep time spent triaging and rearranging material ... especially since the instructor training emphasizes sticking closely to SC's materials the first few times you teach a workshop (mine did, anyway)
  • I definitely support @karawoo's suggestion of a section in the Instructor Notes
  • I'd support such a section mentioning the possibility of different coherent approaches to basic R teaching. For example, I think it would be reasonable to use these lessons for a more programming-oriented approach (more like the r-novice-inflammation lessons), skipping the tidyverse material. (Or do folks here think that's silly, if we want to do that we should go back to r-novice-inflammation instead?)
  • it would be interesting to gather data: after a recent workshop my co-instructor and I recorded which parts of which lessons we actually taught in a CSV (it was r-novice-inflammation, but the principle still applies). If there is general enthusiasm for this I can start a Google-docs spreadsheet (or whatever venue people suggest for information gathering) for this.
@naupaka

This comment has been minimized.

Member

naupaka commented Jul 3, 2017

I am a fan of providing a few thought-out paths through the material. Once could be more focused on programming, one on getting into dplyr/ggplot ASAP, one focusing more heavily on reproducibility and code modularity, etc. Another way to do it instead of a google sheet might be an issue on this repo where people could add lesson sets as comments, and use tallied via +1s.

My personal approach has been episodes 1-6, then 9, and finish on 15, and adding in either 8 (ggplot) or 13 (dplyr) before knitr if the group seems to be tracking quickly. Any more than that seems to be too much to cover in two half-day sessions with mostly novices.

@naupaka

This comment has been minimized.

Member

naupaka commented Jan 17, 2018

Proposal: add a section to the beginning of the instructor notes with these different paths through the material, with descriptions of when each might be appropriate, including novice/intermidate, tidyverse-only, etc. Thoughts @jcoliver @mawds

@mawds

This comment has been minimized.

Collaborator

mawds commented Feb 1, 2018

I agree. As a starting point I've submitted a PR putting some of the paths through the material suggested in this issue in the instructor notes, so they're easily accessible.

(Should we update the front page of the lesson to note that not everything will be taught, and link to the instructor notes?)

If instructors have other good routes through the material (especially if they have a particular focus, e.g. intermediate learners, programming, data-analysis etc.) they could add to this?

@naupaka

This comment has been minimized.

Member

naupaka commented Feb 4, 2018

@mawds I think that's a good idea (a note on the front page/README)

@mawds

This comment has been minimized.

Collaborator

mawds commented Feb 5, 2018

Thanks @naupaka - I've added the front page/README links to the PR and merged.

I'll leave this issue open for now, as we should probably still think about whether there are other routes through the material (e.g. intermediate, tidyverse etc.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment