Reworking Python Lesson for the 2017 Mozilla Global Sprint
Coordinated by @richyvk
Further to the general Library Carpentry issue 'Mozilla Global Sprint 2017, 1-2 June 2017' https://github.com/LibraryCarpentry/librarycarpentry.github.io/issues/23
On 11 April @c-martinez @mkuzak @jezcope @ostephens @weaverbel & @drjwbaker met to discuss reworking the Python lesson during the 2017 Mozilla Global Sprint in light of recent teaching experience (eg at the Sheffield workshop).
Broadly speaking we agreed that:
- The lesson should be an introduction to using Python in a library context.
- The core learning outcome of the lesson is for librarians to leave a Library Carpentry Python workshop feeling that programming is achievable for them and relevant to their work.
- The lesson must be based around a compelling example (or examples) where a library specific problems is solved with Python
- In order to demonstrate that we are trying to ensure the lesson is relevant to as many librarians are possible, the example(s) should use bibliographic data.
- The lesson must explain features of Python through examples of using Python to solve library specific problems, rather than explain Python features then give an example of their possible use to librarians.
- The lesson should focus on a small number of small and powerful Python features (loops, functions, variables, lists, dictionaries).
- Lesson development should keep in mind what could be taught in an advanced lesson even if we do not develop one, so that we can ensure we stick to the basics.
- Lesson development will evaluate using Spyder as the learning environment for the lesson (in place of the shell).
We need someone ~~to agree to take a lead on this work during the Sprint~~ (taken by @richyvk), to recruit a team, and to develop a workplan. If you are willing and able to do this, please indicate so below.
Just run these past my other half, a non-techie librarian who was participating in the Sheffield LC workshops, and these points all ring true for her as a learner too.
Here is some other feedback from the session, to make sure it's captured here:
- Setup instructions: recommend installing full Anaconda Python; some participants only had miniconda, which meant that many more packages had to be installed manually before being able to follow along with the lesson
- Perhaps worth spending a full day on Python (and a full day on OpenRefine?)
- Exercises should be carefully designed to build confidence, with extensions to give quicker learners something to keep them occupied
Weeping into my cup of tea that @drjwbaker didn't say I was there too - I know I was late, sorry.
@weaverbel Genuine slip. Fixed now. Sorry!
Thinking ahead, I think we need to plan an LC Python workshop for post sprint, advertised explicitly as a) this is new b) we need you to help us make it better.
Agree. I would be keen to give it a go in Brisbane - with @richvyk's help and maybe @brendam's - I really want to get better at Python and teaching seems to be my best learning method !
This all sounds good. I'm happy to have a crack at leading the dev team for the Sprint, and would be well up for testing the workshop in Brisbane with Belinda, and Brenda if she's keen.
Agree that a day is probably warranted for a duration - any less and it would be a bit overwhelming I think.
So, where is the best place to start planning the lesson in more detail? An etherpad??
One thing, I have zero experience with Spyder. Are we planning to use this to deliver the lesson? If so, I better get it installed I guess. I assumed we'd be using a jupyter notebook. Was that option eliminated in the chat the other day?
Hey @richyvk Spyder comes bundled with the full Anaconda install. Just type spyder from a terminal and it will launch. It is an IDE - if you have ever seen RStudio or a Python IDE, it will seem familiar. And in Spyder, you can use ipython notebook-style python or command-line-style python. The main advantage is that people can be tinkering with code in one pane of the IDE and launching it in another pane so it's a bit more user-friendly than the plain Jupyter notebook when you are a learner. Happy to be the dummy-newbie crash test dummy for you on this lesson.
@weaverbel OK, thanks. I'll check it out. Except I don't have Anaconda installed so I 'll have to figure out the best way to install. I have never installed Anaconda because I have my Python setup just how I like it now and I read that Anaconda could destroy my setup so I've never installed it. I know this is not ideal for LC work. One day I might get to setting up dual boot on my Mac or something so I can have a separate LC machine.
Hey @richyvk Can't you do a conda install of Anaconda so that you have Anaconda corralled off somewhere else?
@richyvk you can install anaconda with the installer from continuum analytics dowload page. It will install in your home ~/anaconda. It will not mess with your installation. It's up to you to add it to your PATH. Anaconda has its own environments in ~/anaconda/envs.
@richyvk Huge thanks for taking this on. I've noted at https://github.com/data-lessons/library-python/issues/38#issue-220917280 that you are taking the lead.
@richyvk You could also try miniconda which is a minimal anaconda installation that just gives you the conda package manager. It's actually pretty self-contained: it essentially sets up its own isolated virtualenv and lets you create additional environments, optionally with different python versions, if you want to.
Spyder is also in PyPI, so you can do pip install spyder if you prefer.
@jezcope yeah, thanks figured out I could pip install it last night, once I realised you need to pip install PyQt first. Running pretty nicely now :)
The wisdom of crowds ;-) Another job well done !
Brain dump for the sprint (to be continued):
https://docs.google.com/document/d/1Ov91r00zDwo2PFoA3xtx7Vx6X9PCtwoDTXOFO4zpUQk/edit?usp=sharing
Feel free to edit/add to.
Ultimately I'll move this to the preferred location - whatever that might be. First priority for me is confirming who the team is going to be, so if you want in please add you name to the doc :)
I don't have collaborator access to this repo so I can't do it myself, but it would be good to tag this issue mozsprint for consistency.
@jezcope I added you to the team, you should be able to edit after accepting an invite, I also added a label
@mkuzak Thanks! :grinning:
Thanks @mkuzak ! @jezcope Are there any repos you can't get into? I can add you.
I'm interested in helping out with this if there's an open task.
Hi all. Please see the LC gitter for a quick announcement on this lesson :)