-
-
Notifications
You must be signed in to change notification settings - Fork 381
What structure and metadata should lessons have? #120
Comments
A plug for long-form lecture notes for our core lesson material
|
On Sat, Nov 02, 2013 at 03:39:21PM -0700, Ethan White wrote:
I'm not personally insterested in long form note, but I'm not against
We obviously want to start with what we've already got, but I think |
On Sat, Nov 02, 2013 at 04:00:47PM -0700, W. Trevor King wrote:
But this doesn't really matter. We've got maintainers now, and lots |
For a little context, the development we're talking about here is focused solely on in-classroom, boot camp lessons. Self-guided content for the SWC website is going to take remain on the back burner for now. With that in mind it's clear that instructors are as much the audience for this material as students. In fact, I think instructors are the primary audience of this material. It's here to tell instructors, "if you have the goal of teaching X, these talking points cover the necessary concepts and these exercises provide students the necessary practice". We, the lesson writers, are a step removed from the students. We only speak directly to other instructors. Let's keep that in mind as we organize and create the lesson material. |
In response to @ethanwhite, I think "long-form notes" is a good idea, but we can be more specific. When I think of my ideal material I think it should have notes for instructors that are sufficiently detailed as to contain a brief description of every step of the lesson. Not the actual words to say, but a reminder of what's being covered at every point. The instructor notes for ipythonblocks are a good example of what I like to have. These are really useful for getting back on track after answering student questions and making sure you don't accidentally skip over important points. |
We also need to think about improving discoverability and browsability of the lessons, possibly in conjunction with #119. For example, do we want lesson directories to contain a special metadata file or header that some tool can use to generate an index? We should also have a file or header for humans that describes the lessons content. What is the goal of the lesson? What prior knowledge does it require? The starting point and end point and relation to any other lessons. How long does it take and what extra things (e.g. ipythonblocks) does it use? |
Actually, I'm totally open to any of the possible approaches here.
I'm not personally comfortable with the "maintainer" label that you've
Here are a couple of examples of the kind of notes I use when https://github.com/ethanwhite/swc-bootcamp-material/blob/master/Lectures/sql.md I like having the actual language I'm going to use fleshed out because |
On Sat, Nov 02, 2013 at 08:01:31PM -0700, Ethan White wrote:
I think the starting point is just selecting from the myriad of
If we want to use a different label, I'm open to that. Development in
This looks good to me. It's much more narrowly scoped than the I'd rather not have binary ODT files in the repository, though.
That makes sense, I'm just not sure how well your language translates
And let us know what they'd like to see out of this centralized |
I'm copying over my response to @gvwilson's question in #119 because I think it is more relevant here. Apologies for the noise if this isn't on-topic.
The technology for managing this is relatively simple, since the notebooks are highly formatted JSON with fields for additional metadata cells. The biggest hurdles come in implementing the Javascript widgets that simplify editing from the web browser. I think you're asking two questions here. 1] Is an IPython Notebook solution sufficient for maintaining many different proto-forms of material under version control that is still easy to manage, split into subcomponent notebooks, and present? 2] Are there equivalent tools in other formats that would allow us to do the same? @wking brings up |
PR #118 now includes some beginner Python lessons in notebook form, along with some questions to help focus discussion. Please keep the discussion going here rather than there: those notebooks are intended primarily as a straw man. |
@gvwilson - I don't have any substantial feedback on the notebooks aside from the fact that they are absolutely beautiful. I really wish there was material around like this when I was learning Python. I notice that you're not using any metadata and the format is basically longform, without instructor's notes or exercises. Additionally, the notebooks are "heavy", that is, the sometimes-binary output is being stored in addition to the notebooks. This is more commentary than criticism. |
@gvwilson 's lessons are good lessons, but they are really written for students. In fact, an instructor doesn't even need to be involved for these, they'd make great reference material for the web. I especially like the 4th one. 😸 In a boot camp there's not much point to giving students reading material, they're going to be listening to the instructor. These notebooks are really too dense to be used as lecture notes and where are the exercises for students? I personally like to work in a blank notebook and have students do the same. If we do start using the cell metadata tool mentioned in #119 then notebooks like this might be a good way to design lessons. Some cells could go to instructor notes, some cells could go to exercises, some to exercise solutions, and others to a narrative notebook that can be posted online. But there are still potential conflicts between the goals of narrative notebooks and classroom lessons. Pacing and time come first to mind. In a narrative we are targeting someone reading, and people can read much faster than they can speak. |
@gvwilson : This is a side note, but the first challenge set in 01-numpy.ipynb seems utterly unrelated to the preceding material. |
On 2013-11-03 11:30 PM, Matt Davis wrote:
|
Not surprisingly given my earlier comments I like the general style of @gvwilson's examples. I do think there are some things in them that could be improved if we decided to go this route. Specifically I agree with @jiffyclub that in some places
However, I think of this as being an issue specific to these particular notes (and only in a few spots), whereas it is my impression that Matt views it as a more general issue with the format. Specifically I don't agree that
Pacing and time are simply a question of thinking about what goes into long-form notes properly. It may be tempting to include more information than can fit into a n hour block, and we would need to be careful to avoid this, but it certainly doesn't have to be the case. For example, the notes I linked to earlier in the discussion are all presented live in 2-3 hour blocks. In fact, I think that proper pacing and time are one of the strengths of long-form notes because these can be worked out and formally recorded in the form of the content of the notes such that different instructors (or the same instructor 2 months later) can deliver the same material in the same period of time. In contrast, different people with the same set of short-form notes of the key topics to cover can end up going very different lengths of time through different levels of detail and different asides. In my experience watching both university professors and SWC instructors this tends to lead to getting less far in the material than desired due to taking too long in early material.
I agree completely with this and in fact I think providing anything other than cheat sheets during the bootcamp is counterproductive, but I think this is separate from long-form vs. short-form notes. They seem related because in concept we could provide the long-form notes directly to the students, but it's really a separate decision of whether or not to provide notes to them.
While this isn't a goal of the current discussion I do think that if the note format has the added benefit of also working online it's actually a good thing. Finally, I'd like to note something really interesting about these notes, which is the use of a underlying example that can easily be translated to different disciplines. By focusing on a simple time-series (a type of data common to most disciplines) it makes swapping in a different discipline specific example really easy. It would be a good exercise to think up general types of data that are common across disciplines so that instructors can basically change the labels to customize the notes to the discipline of the bootcamp. |
On 2013-11-03 11:29 PM, Matt Davis wrote:
|
I just like to have material that is actually directed at me. The notebooks @gvwilson has put together are like a script for a play without the stage directions. When students attempt a certain exercise, what issues are likely to be their stumbling blocks? What holes are they likely to have dug for themselves (this happens in Git all the time)? When should I introduce concept X or circle back to concept Y? Those are the kind of notes I put into my printed lecture materials. Warnings like "this next thing introduces comparison operators, be sure to say something about that so no one is surprised". Or a note like "looping over a file is like looping over a BlockGrid, be sure to draw that comparison". |
On 2013-11-06 1:41 PM, Matt Davis wrote:
|
See my suggestion here. I'm voting that we use IPython Notebooks to organize our content, and tag the corresponding notebook cell with our metadata in the form of a simple dictionary: swc_content_tags = We could then expose a series of little checkboxes for each key in swc_content_tags, and select/unselect where cells go by clicking them. |
I favor tags in notebooks (provided there's a UI for adding them: -1000 to anything that requires hand-editing .ipynb files). But are we going to use notebooks for Git lessons? For the shell? For R? |
@gvwilson - We wouldn't use the notebooks to teach, but that's how we'd write and organize all of our content. The notebooks can handle anything that a Markdown-formatted lesson can, and it can easily be split out into instructor notes, longform notes, and blank notebooks with nbconvert. I'm going to shamelessly ping @fperez and @ellisonbg on this as a sanity-check. |
On 2013-11-06 2:01 PM, Aron Ahmadia wrote:
|
@gvwilson - Could you elaborate on what you're asking for with regards to colorized cells? Also cc-ing @wltrimbl, @jdblischak, @karthik and @wking because we're getting a bit closer to a decision here. @jdblischak / @karthik - Can you comment on whether similar functionality exists in knitr, or whether it would be reasonable to consider IPython Notebook as the proto-format for R lessons as well. My inclination would be to continue to write R lessons in its own proto-languages like .RMd as long as it can provide similar functionality to what we're trying to get here. |
On Wed, Nov 06, 2013 at 11:01:30AM -0800, Aron Ahmadia wrote:
While we could use tagged notebook cells to group different forms of |
|
Ok, I just finished reading this thread, its a long one. Here are my thoughts (in no particular order): +1 for long form notes (I don't think there is much disagreement here). My only concern is that an inexperienced instructor will put the long form notes up and basically read them to the class. I call this lesson planning. As to @wking comment about it being a novel. I've never seen an over-prepared instructor, but I've definitely seen under prepared instructors. We should be encouraging our instructors to carefully look over the material they are teaching in detail before they get in front of a class. I know from experience, that my lessons are always smoother when I've really gone over my material, not just the highlights. +1 for including stage directions. Many of the notes you direct at an instructor, you also want to direct at students who are trying to follow the material on their own. I see these notes as notes to the instructor which double as reference material for the students. For teaching python and testing, I think the notebook is really useful to both contain notes and teach out of. Will the final ipynb rendered notes look like a notebook? We should be sure that inexperience instructors don't teach shell in a notebook. I've confused myself this way by lesson planning a testing unit in a notebook when I planned to teach in a text editor and then starting to teach the material in a notebook. I know student's have left SWC boot camps thinking that everything happens in an ipython notebook and not knowing how to use the shell outside of it. I'd be cautious of making our chosen lesson language too specialized. If contributors start having to learn a lot of special syntax and formatting to contribute, they may not contribute. I'm much more likely to contribute the lessons I developed if I don't have to modify them to contribute them. I'm not sure where this falls in the discussion, but I like teaching git using a presentation + command line. How do presentations fit into this discussion? The thw notes are pretty good, but I think putting up a page of text for students to read and scrolling through it can be overwhelming and hard to follow. Likewise, command go so quickly that student can get behind really easily. The discussion of maintainers is really interesting. In my ideal SWC world, there would be a few people employed by SWC who would go through the repositories created for each boot camp and incorporate any improvements to the materials made in that book camp. I'm still working on how to do this effectively with student interaction, but my dream is to hand students a notebook with comments but empty cells for them to type into. Then they don't have to write notes, its all there, but they are still participating in class. The issue I always run into is that a student asks a question or I forget to move to a new cell and suddenly where I am in the notebook and the notes don't match up. For those who use a blank notebook, where do you anticipate student's taking notes or getting notes from? +1 to common examples from a variety of disciplines so our examples don't seem like they were written for a boot camp in a different subject. I think timing is a big issue but in no way a show stopper on long form notes. Part of defining core material for SWC should be defining a set of core material that is either taught at every boot camp or the audience already knows the material so it can be skipped. There may then be a few lessons which can be switched in and out based on audience (e.g. SQL). Lessons should be the length needed to cover the material we think should be covered. If we define this material correctly then any effort to go faster or cut material will likely end up losing students. It would be extremely helpful to instructors to have how long a given lesson should take. I think with git in particular, people often don't allow enough time to cover what needs to be covered. |
@abostroem - thanks for your thoughts on this :)
My idea is to write/develop in IPython Notebook, and to then export to whatever formats are needed from there, including longform notes, instructor notes, outlines, blank notebooks, shell scripts, web pages, and slideshows. An alternative suggestion several of the other instructors are suggestion is to use Markdown as the same proto-tool. Nobody is proposing that we force the R folks to write in our tools, since they have their own stacks :)
IPython Notebook has a slideshow mode that we haven't been using very heavily. @williamstein's SageMathCloud has also demonstrated synchronized IPython Notebooks over a cloud patform on the web, but I don't know if it has the features we need right now (50 students simultaneously following along, read-only access, works only over common ports) for teaching. |
@ahmadia You can share notebooks in real time in a rudimentary way, see http://penandpants.com/2013/05/08/broadcasting-ipython-notebooks/. Unfortunately I've had limited success with that. It'll either have problems with too many simultaneous requests or the local network just won't allow it. |
@jiffyclub - these are real-time edits, like a Google Doc or Etherpad. We're still evaluating its readiness, and we'll probably have to do a few serious dry runs before using it in a bootcamp. Sorry, not trying to start an off-topic discussion, just describing some of the interesting things happening with the IPython Notebook. |
I think the idea of tagging notebook cells for different purposes and then having a UI that can hide/show cells with different tags is a nice idea and is very consistent with how we are thinking about the notebook. |
On Wed, Nov 06, 2013 at 07:26:04PM -0800, abostroem wrote:
I think our traditional problems with this have been discoverability |
numbers = [3, 5, 7, 9]
|
On 2013-11-06 11:27 PM, Matt Davis wrote:
|
numbers = [3, 5, 7, 9]
|
On Thu, Nov 07, 2013 at 09:14:50AM -0800, Greg Wilson wrote:
While a few people handling all of SWC's lesson content would probably |
First, I would prefer to use Markdown instead of IPython notebooks for notes, whether they're intended for instructors or students. I like working with IPython notebooks during a bootcamp but not preparing from them, because I can read the Markdown right here on github but I have to clone the repo and fire up the notebook to use it locally. Also, I usually conclude bootcamps by showing the SWC github repositories to the students as a self-learning resource and suggesting that anyone interested could become an instructor or contributor as well. I'd like the material on here to be as accessible to them as possible, and if they haven't seen them before (either it's an R-focused bootcamp, we taught without notebooks, they weren't paying attention during the Python portions, etc.) then notebooks are another barrier between it and them. I agree with @karthik and @emhart on this. Second, it's not like we're running out of space on github - does there need to be a canonical version of lesson plans and their notes? Can we provide notes with different narratives, examples, problems, orderings, skill levels, etc. and let people use what they find helpful? When I'm preparing to teach, I almost never print off a single resource and use it as a script - instead, I'll spend a few hours going through several different versions and selecting out parts I like and think are relevant to the group, and forming my own narrative. I produce something like @ethanwhite's notes whenever I first teach something, and I iteratively change them based on my experiences with them and the audience. People tend to have different styles and do things in different but equally valid ways when covering the same topic. I recently taught with @karthik, and he taught Git differently from how I teach it, but his presentation was very effective. At the same time, I probably won't be changing how I teach it because it has also been effective. Neither is really an "improvement" of the other. Someone might read my lesson plan and Karthik's and come up with their own that's a cross between the two, or they might decide that his is more suitable for their audience and go with that one. Providing multiple takes can be helpful. |
On Thu, Nov 07, 2013 at 09:27:33AM -0800, Ben Morris wrote:
+1, and another reason for good per-lesson discoverability and |
@bendmorris - Thanks for joining the discussion and raising several important points. I like your points about teaching from notebooks but reading from Markdown. I agree that any solution we use needs reasonable integration with tools like GitHub. I'm not sure I'm willing to make the trade of versioning our lesson content in formatted files for raw Markdown, though. The Notebook JSON is not as pretty as Markdown, but it's still readable in a text diff, and it is easier to be parsed and used by our own tools.
We're definitely trying to build and maintain high-quality core content. The current focus is on that. Having many copies of lesson content has made it difficult for instructors to pick a curriculum. I'm happy to host a repository of all content people have taught with in the past, but the additional tightening on "Software Carpentry" the brand means that we can no longer host unreviewed content under the swcarpentry organization. @wking - Sorry, but I think we need to table discussion on per-lesson branches/swappability in this thread. It's a great idea for the long term, but we're dealing with enough other issues in this thread at this point that it's distracting from the discussion. |
Given comments to date, I'd like to propose the following:
If everyone agrees to this, we can start constructing the new novice and intermediate Python lessons, and continue this discussion to decide:
Please vote +1, -1, or 0 so we can see where we are. |
+1 to @gvwilson's proposal. I'd also propose a white-ballot on letting tools like R have their own preferred format, since I think we're unanimous on that as well. Also, @gvwilson, as a small addendum to 3], there are Javascript tools that allow you to live-fold IPython Notebook cells while editing as well, and we should be able to add some tools that simplify that sort of editing as well. |
I'm +1 on @gvwilson points, was about to posit the same stuff. I was going to go so far as to say that we should go ahead and agree on an analogous system using Markdown for shell and Git. I'd also expand the guidelines to say explicitly that the base format of lessons should be tutorials and solved exercises directed at the students such that they could be used for learning outside of boot camps. On top of that we'll include things like instructor notes to the degree possible by our metadata hooks. |
@jiffyclub - @gvwilson has correctly summarized the discussion. I'm against versioning lessons using Git and Shell with raw Markdown, so we're not in agreement on that yet (though I think I may be outnumbered). Everybody agrees that we should be using IPython Notebook and that we'd like to have multiple forms (instructor notes, longform, exercises) available within one lesson. |
@ahmadia Did I say Greg incorrectly summarized the discussion? I'm confused. |
Sorry for the noise @jiffyclub - I was trying to say that we're unanimous on Python format, but not on Shell/Git, so it's better to move forward on Python and table the discussion on Shell and Git for now. |
On Thu, Nov 7, 2013 at 11:16 AM, Greg Wilson notifications@github.comwrote:
Edmund M. Hart, PhD |
+1 on @gvwilson's proposal. |
On Thu, Nov 07, 2013 at 10:16:21AM -0800, Greg Wilson wrote:
-0, but if I can extract the instructor notes automatically I'm
+1. So long as “notes for instructors” are included I'm happy.
+0, I don't really care about the tooling. |
+1 all around. |
It depends on which "can" you have in mind. Is it physically possible? |
Concerning @bendmorris's comment: "it's not like we're running out of space on github" :
|
Thanks for your votes, everyone: motion passed. Next steps:
Please continue the discussion here about formats for other lesson materials (for R, the shell, Git, etc.), and thanks again. |
"Closed" (for now) by #347. |
This issue is for discussion of issues around structure and metadata, including:
See also: #119 (tooling)
The text was updated successfully, but these errors were encountered: