[omaha] Python Workshops @ DoSpace Group

Wes Turner wes.turner at gmail.com
Thu Jan 7 20:59:36 EST 2016


## Outputs

### Jupyter notebooks

* grading notebooks with tests: nbgrader
* presenting live code presentations: RISE

### Python packages

* projects: README.rst, cookiecutter-pypackage, setup.py, pip
requirements.txt [ devpi Dockerfile ]

## Tools

### jupyter
ibid.

### *nbgrader*
* | Wrdrdtools: https://wrdrd.com/docs/tools/#nbgrader
* | Wrdrdtools:
https://wrdrd.com/docs/consulting/education-technology#nbgrader

### *RISE*
* | Src: https://github.com/damianavila/RISE

RISE: "Live" Reveal.js Jupyter/IPython Slideshow Extension [ live_reveal ]
On Jan 7, 2016 11:05 AM, "Wes Turner" <wes.turner at gmail.com> wrote:

> HTML in git branches pretty much wins as far as maintainability and change
> control, IMO.
>
> * GitHub Pages (gh-pages branch, CNAME, [...])
>   * | Wrdrddocs:
> https://wrdrd.com/docs/consulting/education-technology#github-pages
>   * Free for Open Source Projects
>   * Public
> * pgs
>   * | Src: https://github.com/westurner/pgs
>   * Free and Open Source
>   * Bottle Python Microframework Web Framework
>   * (This works locally with one repo
>   * One could layer e.g. basic auth (and/or integrate with Jupyter
> Authenticators)
>     * https://github.com/jupyter/jupyterhub/wiki/Authenticators
>       * MediaWiki, GitHub, Google, Local + Google
>
> Publishing with a DOI should also be so easy:
>
> * | Wrdrddocs:
> https://wrdrd.com/docs/consulting/education-technology#publishing
> * | Wrdrddocs: https://wrdrd.com/docs/tools/index#pgs
>
> On Thu, Jan 7, 2016 at 10:58 AM, Wes Turner <wes.turner at gmail.com> wrote:
>
>> awesome-python-testing
>> https://westurner.org/wiki/awesome-python-testing#python
>>
>> * https://learnxinyminutes.com/docs/python/
>> * https://www.class-central.com/search?q=python
>>
>> *
>> https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks
>>   ( pip install -r requirements.txt [docker [ nbspawner  ] )
>>   * https://github.com/jupyter/jupyterhub/wiki/Spawners
>>
>>
>> ...
>>
>> SoftwareCarpentry
>>
>> * http://software-carpentry.org/lessons/
>> * | Site: http://swcarpentry.github.io/python-novice-inflammation
>> * | Src: https://github.com/swcarpentry/python-novice-inflammation
>>
>> * https://swcarpentry.github.io/slideshows/teaching-tips/index.html
>>
>>   * #ActiveLearning
>>
>>
>> On Thu, Jan 7, 2016 at 10:51 AM, Wes Turner <wes.turner at gmail.com> wrote:
>>
>>>
>>>
>>> On Tue, Jan 5, 2016 at 8:35 PM, Burch Kealey via Omaha <omaha at python.org
>>> > wrote:
>>>
>>>> I apologize for the delay.  We release a new version of our software on
>>>> Friday - switching to a C# harness with Python code when we need to be
>>>> brilliant!
>>>>
>>>>
>>>> I don't disagree with anything said below.  I just wanted to be sure to
>>>> advocate for the person who does not want to be perfect - just get
>>>> something done.
>>>>
>>>> Here is an example of something that I think underscores the issues
>>>>
>>>>
>>>> http://stackoverflow.com/questions/34603348/how-to-add-a-key-value-list-to-a-json-dict/34603502#34603502
>>>>
>>>> I am Pynewbie.  So ShadowRanger is ignoring the fact that it takes a
>>>> ton of knowledge to even think of the word parser.  Further, I went and
>>>> looked at the links and tried to read the example and I was feeling
>>>> overwhelmed.  So I get the best solution would be ShadowRanger's but second
>>>> best works often.  If you are building production code then developing an
>>>> parser might be worth the investment but if you have this messy file you
>>>> need now and you are a scientist then second best is probably your path.
>>>>
>>>
>>> *Scipy-lectures, Python Documentation, awesome-python-testing*
>>>
>>> Rosalind.info has a number of introductory Python exercises and
>>> algorithms. The glossary is really helpful.
>>>
>>> * | Glossary: http://rosalind.info/glossary/
>>> * | Docs: Rosalind Python Village problem list view:
>>> http://rosalind.info/problems/list-view/?location=python-village
>>>
>>> * http://rosalind.info/problems/ini3/ #  solved by 11511
>>>   * Click to Expand
>>> * http://rosalind.info/problems/ini6/ #  "Dictionaries" solved by 5565
>>>
>>>
>>> * http://www.scipy-lectures.org/intro/language/python_language.html
>>> * https://docs.python.org/2/tutorial/datastructures.html#sets
>>> *
>>> http://www.scipy-lectures.org/intro/language/basic_types.html#dictionaries
>>> * https://docs.python.org/2/tutorial/datastructures.html#dictionaries
>>> *
>>>
>>>
>>> *Set Theory*
>>> * | Wikipedia: https://en.wikipedia.org/wiki/Set_theory
>>> * | Wrdrdocs:
>>> https://wrdrd.com/docs/consulting/knowledge-engineering#set-theory
>>> ** | *RosalindProblem: Introduction to Set Operations:
>>> http://rosalind.info/problems/seto/
>>>
>>> *Graphs*
>>> * | Wikipedia:
>>> * | Wrdrddocs:
>>> https://wrdrd.com/docs/consulting/knowledge-engineering#graphs
>>>
>>>
>>> *Topological Sorting*
>>> * | Wikipedia: https://en.wikipedia.org/wiki/Topological_sorting
>>> * | Wrdrddocs:
>>> https://wrdrd.com/docs/consulting/knowledge-engineering#topological-sorting
>>> * Rosalind.info > Glossary > "Algo: Topological Sorting"
>>>   http://rosalind.info/glossary/algo-topological-sorting/
>>>
>>>
>>>
>>>> We will talk more about this at the meeting.  I will observe now and
>>>> talk about this in the meeting that ppt slides are not so good for kids -
>>>> okay for adults but not for kids.  I make my kids write down anything that
>>>> I think I want on a slide.
>>>>
>>>
>>>
>>> *Jupyter and Learning*
>>> * | Wrdrddocs:
>>> https://wrdrd.com/docs/consulting/education-technology#jupyter-and-learning
>>> * | Wrdrdtools: https://wrdrd.com/docs/tools/#jupyter
>>> * | Wrdrdtools: https://wrdrd.com/docs/tools/#jupyter-drive # GDrive
>>> storage
>>>
>>>
>>> *nbgrader*
>>> * | Wrdrdtools: https://wrdrd.co* m/docs/tools/#nbgrader
>>> * | Wrdrdtools:
>>> https://wrdrd.com/docs/consulting/education-technology#nbgrader
>>>
>>> *RISE*
>>> * | Src: https://github.com/damianavila/RISE
>>>
>>> RISE: "Live" Reveal.js Jupyter/IPython Slideshow Extension [ live_reveal
>>> ]
>>>
>>> Reveal.js
>>> * | Homepage: http://lab.hakim.se/reveal-js/#/
>>> * | Source: https://github.com/hakimel/reveal.js/
>>>
>>>
>>>> Please understand, I am not being critical I just want to make these
>>>> observations because I am a cranky middle aged man.
>>>>
>>>
>>> Are you preparing students for a problem-solving business-like
>>> scientific context and/or for creative problem solving?
>>>
>>> * Linked Curricula Graphs
>>>   #RDFa #JSONLD
>>>   https://westurner.org/opengov/us/ne/index#linked-curricula-graphs
>>>
>>>
>>> * *schema.org/Course <http://schema.org/Course>*
>>>   #RDFa #JSONLD
>>>   https://westurner.org/opengov/us/ne/index#schema-org-course
>>>
>>>
>>>
>>>
>>> .. index:: Graphs
>>> .. _graphs:
>>>
>>> Graphs
>>> ````````
>>> | Wikipedia: `<https://en.wikipedia.org/wiki/Graph_(abstract_data_type)>`__
>>> | Wikipedia: `<https://en.wikipedia.org/wiki/Graph_(mathematics)>`__
>>> | Wikipedia: `<https://en.wikipedia.org/wiki/Graph_theory>`__
>>> | Docs: https://en.wikipedia.org/wiki/Conceptual_graph
>>> | WikipediaCategory: `<https://en.wikipedia.org/wiki/Category:Graphs>`__
>>> | WikipediaCategory: `<https://en.wikipedia.org/wiki/Category:Graph_data_structures>`__
>>> | WikipediaCategory: `<https://en.wikipedia.org/wiki/Category:Graph_theory>`__
>>>
>>> A graph is a :term:`system` of nodes connected by edges;
>>> an abstract data type for which there are a number of
>>> suitable data structures.
>>>
>>> * A node has edges.
>>> * An edge connects nodes.
>>>
>>> * Edges of **directed graphs** flow in only one direction;
>>>   and so require two edges with separate attributes
>>>   (e.g. 'magnitude', 'scale'
>>>
>>>   | Wikipedia: https://en.wikipedia.org/wiki/Directed_graph
>>>
>>> * Edges of an **undirected graph** connect nodes
>>>   in both directions (with the same attributes).
>>>
>>>   | Wikipedia: `<https://en.wikipedia.org/wiki/Graph_(mathematics)#Undirected_graph>`__
>>>
>>> * Graphs and :ref:`trees` are **traversed** (or *walked*);
>>>   according to a given algorithm (e.g. :ref:`DFS`, :ref:`BFS`).
>>>
>>> * Graph nodes can be listed in many different *orders*
>>>   (or with a given *ordering*):
>>>
>>>   * Preoder
>>>   * Inorder
>>>   * Postorder
>>>   * Level-order
>>>
>>> * There are many :ref:`data structure <data structures>`
>>>   representatations for :ref:`graphs`.
>>>
>>> * There are many data serialization/marshalling
>>>   formats for graphs:
>>>
>>>   * Graph edge lists can be stored as adjacency :ref:`matrices <matrix>`.
>>>   * :ref:`NetworkX` supports a number of graph storage formats.
>>>   * :ref:`RDF` is a :ref:`standard semantic web <semantic web standards>`
>>>     :ref:`linked data` format for :ref:`graphs`.
>>>   * :ref:`JSON-LD` is a :ref:`standard semantic web <semantic web standards>`
>>>     :ref:`linked data` format for :ref:`graphs`.
>>>
>>> * There are many :ref:`Graph Databases` and :ref:`triplestores`
>>>   for storing graphs.
>>>
>>> * A cartesian product has an interesting graph representation.
>>>   (See :ref:`compression algorithms`)
>>>
>>>
>>> .. index:: NetworkX
>>> .. _networkx:
>>>
>>> NetworkX
>>> ~~~~~~~~~~~
>>> | Wikipedia: https://en.wikipedia.org/wiki/NetworkX
>>> | Homepage: https://networkx.github.io/
>>> | Source: git https://github.com/networkx/networkx
>>> | Docs: https://networkx.github.io/documentation.html
>>> | Docs: https://networkx.github.io/documentation/latest/
>>> | Docs: https://networkx.github.io/documentation/latest/tutorial/
>>> | Docs: https://networkx.github.io/documentation/latest/reference/classes.html
>>> | Docs: https://networkx.github.io/documentation/latest/reference/algorithms.html
>>>
>>> NetworkX is an :ref:`open source` graph algorithms library
>>> written in :ref:`Python`.
>>>
>>>
>>>>
>>>> ________________________________________
>>>> From: Omaha <omaha-bounces+bkealey=mail.unomaha.edu at python.org> on
>>>> behalf of Jeff Hinrichs - DM&T via Omaha <omaha at python.org>
>>>> Sent: Tuesday, January 5, 2016 12:42 AM
>>>> To: Omaha Python Users Group
>>>> Cc: Jeff Hinrichs - DM&T
>>>> Subject: Re: [omaha] Python Workshops @ DoSpace Group
>>>>
>>>> @Steve, given the enthusiasm for youth programming at the last meeting,
>>>> the
>>>> first course I thought we'd work on, py100, for beginning / new
>>>> programmers
>>>> who are interested in learning Python with a class time of 2 hours (1.5
>>>> actual) with a goal of a lab/student exercise every 12 minutes.  I
>>>> figure
>>>> on average 8 minutes per lab giving 4 minutes of lecture and slides per
>>>> lab.  All of which is complete speculation at this point but I believe
>>>> the
>>>> twice as much lab as talk is a valid starting point. *wink*    It is a
>>>> very
>>>> fundamental programming with Python where one of our goals should be to
>>>> do
>>>> no harm if an attendee wants to go farther.
>>>>
>>>> @adam, There is absolutely no reason why we couldn't create classes for
>>>> other categories of students.  My working idea is PySchool, some courses
>>>> (if we get there) can have pre-requisites others ,like py100, will have
>>>> no
>>>> pre-reqs.
>>>>
>>>>
>>>>
>>>> On Mon, Jan 4, 2016 at 6:12 PM, Steve Young via Omaha <omaha at python.org
>>>> >
>>>> wrote:
>>>>
>>>> > Adam brought up a good point to consider.  Are you aiming for people
>>>> with
>>>> > little to no programming experience (which is what I was thinking) or
>>>> > experienced programmers wanting to learn python?
>>>> >
>>>> > Steve
>>>> >
>>>> > On Mon, Jan 4, 2016 at 8:04 AM, Adam Schaal via Omaha <
>>>> omaha at python.org>
>>>> > wrote:
>>>> >
>>>> > > *I should clarify this terrible sentence:*
>>>> > > "For example, if you have defined methods/functions and tell them to
>>>> > create
>>>> > > their own, I think it's far more likely that they'll copy the way
>>>> you've
>>>> > > created a method/function, then to fill our it's inner workings. "
>>>> > >
>>>> > > *What I meant to say was:*
>>>> > > "For example, if you have defined methods/functions and tell them to
>>>> > create
>>>> > > their own, I think it's far more likely that students would enjoy
>>>> copying
>>>> > > the way these are already created in the file then filling our the
>>>> inner
>>>> > > workings of one created for them."
>>>> > >
>>>> > >
>>>> > >
>>>> > >
>>>> > > On Mon, Jan 4, 2016 at 8:00 AM, Adam Schaal <adam at scha.al> wrote:
>>>> > >
>>>> > > > When I go to a workshop like this, I tend to have more
>>>> fun/interest if
>>>> > > I'm
>>>> > > > challenged.  While I appreciate the fact that you'd like to
>>>> introduce
>>>> > > > excellent coding practices by having a majority of the file
>>>> coded, I
>>>> > > > encourage you to leave a good chunk to the user.  For example, if
>>>> you
>>>> > > have
>>>> > > > defined methods/functions and tell them to create their own, I
>>>> think
>>>> > it's
>>>> > > > far more likely that they'll copy the way you've created a
>>>> > > method/function,
>>>> > > > then to fill our it's inner workings.  Perhaps, that's already
>>>> what you
>>>> > > > were thinking, but I just wanted to clarify.
>>>> > > >
>>>> > > > Learning Python was extremely applicable when I was solving
>>>> ACM-like
>>>> > > > algorithm challenges - I like the idea of converting programmers
>>>> into
>>>> > > > python devs - maybe even in other fields.  I think that a
>>>> > > challenge/problem
>>>> > > > like that where a programmer can clearly see python's advantages
>>>> over
>>>> > > other
>>>> > > > languages would be a valuable asset to the class.
>>>> > > >
>>>> > > > With all this said, I'm still a relative beginner - maybe even
>>>> your
>>>> > > target
>>>> > > > demo - so take what I say with a grain of salt.
>>>> > > >
>>>> > > > Adam Schaal
>>>> > > >
>>>> > > >
>>>> > > > On Sun, Jan 3, 2016 at 11:11 PM, Jeff Hinrichs - DM&T via Omaha <
>>>> > > > omaha at python.org> wrote:
>>>> > > >
>>>> > > >> Burch,
>>>> > > >> I think you are hitting the nail on the head. And it is good
>>>> that you
>>>> > > are
>>>> > > >> pointing out that the goal might appear to be too geared to a
>>>> > > programming
>>>> > > >> as a profession.  I am glad that you said something, because I am
>>>> > > looking
>>>> > > >> to approach this the other way round.  That is to inspire
>>>> programming
>>>> > in
>>>> > > >> other professions.   With the current push on in the sciences for
>>>> > > >> repeatable results in data analysis, I would think that within
>>>> the
>>>> > next
>>>> > > >> decade that anyone who works with data for a profession (not
>>>> > > programmer's
>>>> > > >> but analysts, scientists, etc.) would be ill equipped if they
>>>> can't
>>>> > > >> wrangle
>>>> > > >> data.
>>>> > > >>
>>>> > > >> To that end, many just like you and myself (when I attended
>>>> college,
>>>> > you
>>>> > > >> only received 1 credit hour for a language class.  They were
>>>> > graduating
>>>> > > >> Computer Scientists not programmers.) pick up a language or other
>>>> > tool,
>>>> > > >> based on our ability and the reference material that we have at
>>>> hand
>>>> > (or
>>>> > > >> online).  And that first exposure sits like concrete, as you
>>>> stated.
>>>> > The
>>>> > > >> example you sited about file handling is very insightful and I
>>>> think
>>>> > > lends
>>>> > > >> credence to my goal of making the first contact for those new to
>>>> > > >> programming as positive as we can.
>>>> > > >>
>>>> > > >> My goal is to have the examples that we show to the class be as
>>>> good
>>>> > as
>>>> > > we
>>>> > > >> can make them.  Be written in a way that lends itself to good
>>>> > convention
>>>> > > >> and best current practices.  So that when we show students
>>>> example
>>>> > code
>>>> > > --
>>>> > > >> it is of good quality, not a questionable example that was thrown
>>>> > > together
>>>> > > >> to demonstrate one thing while completely ignoring all other good
>>>> > > >> practices.  I believe the examples we pick for use in these still
>>>> > > >> fictional
>>>> > > >> classes should show not only what we want to demonstrate on the
>>>> micro
>>>> > > >> level
>>>> > > >> but also be a good example on the macro level.  So that if a
>>>> > > >> student/attendee used one of our examples as a starting point for
>>>> > > >> something
>>>> > > >> bigger, they would be on good footing.   When people first start
>>>> > > >> programming we don't write code as much as borrow it from other
>>>> > places.
>>>> > > >> *wink*   My goal is to create the best quality code examples,
>>>> that
>>>> > they
>>>> > > >> can
>>>> > > >> borrow for other things.
>>>> > > >>
>>>> > > >> Also, for beginners a blank file is too much.  The examples I've
>>>> come
>>>> > up
>>>> > > >> with so far require that they fill in the missing pieces,
>>>> concatenate
>>>> > > some
>>>> > > >> strings here, finish out the function body there, but the rest
>>>> of the
>>>> > > code
>>>> > > >> should be stellar because we wrote it for them.  Doc strings
>>>> where
>>>> > they
>>>> > > >> belong, conventions followed for naming variables (no more i, j,
>>>> k
>>>> > which
>>>> > > >> dominate in Fortran or x and y like it is a math problem)with
>>>> > > descriptive
>>>> > > >> names.  So that when the time comes for a student to create a
>>>> variable
>>>> > > out
>>>> > > >> of thin air they will be more likely to be descriptive too.  But
>>>> even
>>>> > if
>>>> > > >> they don't use descriptive names students won't be berated, what
>>>> > matters
>>>> > > >> is
>>>> > > >> that code does what is intended.
>>>> > > >>
>>>> > > >> As for testing, I am not going to try and sell you on it.  (Like
>>>> > backup
>>>> > > >> and
>>>> > > >> restore, most are not concerned until the ugly happens.) I am
>>>> not even
>>>> > > >> planning on talking about it in these opening workshops.
>>>> However,
>>>> > that
>>>> > > >> doesn't mean I am going to favor code examples that are not
>>>> testable.
>>>> > > Far
>>>> > > >> from it.  Everyone of my current example exercises has associated
>>>> > tests.
>>>> > > >> The students won't run the tests but my agent, sam will.  When
>>>> they
>>>> > > finish
>>>> > > >> an exercise I'll know, as sam will let me know their code is
>>>> running
>>>> > and
>>>> > > >> passing the tests.  That also requires that the creator of the
>>>> > specific
>>>> > > >> lab
>>>> > > >> write in a way that is testable.  However, none of this is a
>>>> burden to
>>>> > > the
>>>> > > >> student as they are not going to be running the tests or even
>>>> thinking
>>>> > > >> about creating testable code but they'll be learning it
>>>> subliminally.
>>>> > > >>
>>>> > > >> And now that I've used the word, subliminal -- I just realized
>>>> that
>>>> > was
>>>> > > my
>>>> > > >> goal all the time.  In each example, given on a slide or as an
>>>> > exercise
>>>> > > >> there is the part that you are talking about discretely.
>>>> Focusing on
>>>> > > that
>>>> > > >> topic.  However, the surrounding and supporting code is also
>>>> teaching
>>>> > > and
>>>> > > >> informing the student.  That is the part that needs more love in
>>>> just
>>>> > > >> about
>>>> > > >> every example I've seen on the internet.
>>>> > > >>
>>>> > > >> If none of this made sense or you still don't agree (However, I
>>>> think
>>>> > > that
>>>> > > >> I'm tripping over myself agreeing with you.) please say so.  The
>>>> point
>>>> > > of
>>>> > > >> this thread is to have a conversation where we can flesh out some
>>>> > > >> reasonable goals and then see if we can meet them.  So if you are
>>>> > > reading
>>>> > > >> this and have an opinion, a point, a question then please, please
>>>> > chime
>>>> > > >> in.
>>>> > > >>
>>>> > > >>
>>>> > > >>
>>>> > > >>
>>>> > > >> On Sun, Jan 3, 2016 at 8:36 PM, Burch Kealey via Omaha <
>>>> > > omaha at python.org>
>>>> > > >> wrote:
>>>> > > >>
>>>> > > >> >
>>>> > > >> > I will make an observation - this is not meant to be critical
>>>> but I
>>>> > > want
>>>> > > >> > you (collectively) to chew on it.  If I want to learn to be a
>>>> > > >> programmer I
>>>> > > >> > would look for a well structured learning path.  If I want to
>>>> learn
>>>> > to
>>>> > > >> do
>>>> > > >> > things to make my life easier I am not sure I want to take the
>>>> same
>>>> > > >> path as
>>>> > > >> > if I wanted to learn to be a programmer.
>>>> > > >> >
>>>> > > >> > This note is sent in response to both Jeff's and Wes's posting.
>>>> > > Please
>>>> > > >> I
>>>> > > >> > am not trying to be critical but you guys are programmers by
>>>> > training
>>>> > > >> and
>>>> > > >> > vocation I am not.  I don't have the time to learn to be a
>>>> > programmer.
>>>> > > >> > Unit Tests, what the heck are those?  Why do I care?
>>>> > > >> >
>>>> > > >> > I ask a question on SO and a bunch of idiots jump up and are
>>>> > critical
>>>> > > >> for
>>>> > > >> > the fact that my code is not PEP 8 compliant - okay it makes
>>>> them
>>>> > feel
>>>> > > >> good
>>>> > > >> > but it does not help me.  For example, for the longest time (
>>>> say 5
>>>> > > >> years)
>>>> > > >> > when I opened and read a file I would do this
>>>> > > >> >
>>>> > > >> > mydata = open('some file path','r').readlines()
>>>> > > >> >
>>>> > > >> > That is not PEP 8 compliant (I don't think), but when I first
>>>> > Googled
>>>> > > to
>>>> > > >> > learn how to open a file and read the contents into a list - I
>>>> think
>>>> > > >> this
>>>> > > >> > is the webpage I found
>>>> > > >> >
>>>> > > >> >
>>>> http://openbookproject.net/pybiblio/tips/wilson/loadingfile.php
>>>> > > >> >
>>>> > > >> > It was only this year that I took the time to learn the right
>>>> way
>>>> > > >> >
>>>> > > >> > with open('some file path','r') as f_handle:
>>>> > > >> >     data = f_handle.readlines()
>>>> > > >> >
>>>> > > >> > Why did I not bother learning the right way before this year,
>>>> I was
>>>> > > too
>>>> > > >> > busy learning how to do other things and it was working for
>>>> me.  Why
>>>> > > >> did I
>>>> > > >> > even bother learning the right way, because I got sick of the
>>>> way
>>>> > the
>>>> > > >> > conversation would get channeled if I had a question or comment
>>>> > about
>>>> > > >> > something and the pros would say well you are not opening the
>>>> file
>>>> > > >> right.
>>>> > > >> > My response is who gives a drat, that is not the problem, but
>>>> they
>>>> > are
>>>> > > >> > stuck on that issue.
>>>> > > >> >
>>>> > > >> > I am probably not explaining this well - certainly you want to
>>>> teach
>>>> > > >> > people the right way but I would be careful about how far you
>>>> take
>>>> > it.
>>>> > > >> Our
>>>> > > >> > software is used by over 5,000 people and I have never written
>>>> a
>>>> > unit
>>>> > > >> test
>>>> > > >> > (have no clue).  I know that is not a big number but it is the
>>>> > amazing
>>>> > > >> > thing about Python.
>>>> > > >> >
>>>> > > >> > Don't cringe, drink some OJ!
>>>> > > >> >
>>>> > > >> > Just an observation.
>>>> > > >> >
>>>> > > >> > Happy New Year
>>>> > > >> >
>>>> > > >> > Burch
>>>> > > >> > ________________________________________
>>>> > > >> > From: Omaha <omaha-bounces+bkealey=mail.unomaha.edu at python.org>
>>>> on
>>>> > > >> behalf
>>>> > > >> > of Wes Turner via Omaha <omaha at python.org>
>>>> > > >> > Sent: Sunday, January 3, 2016 8:12 PM
>>>> > > >> > To: Omaha Python Users Group
>>>> > > >> > Cc: Wes Turner
>>>> > > >> > Subject: Re: [omaha] Python Workshops @ DoSpace Group
>>>> > > >> >
>>>> > > >> > https://wrdrd.com/docs/tools/#python
>>>> > > >> > * http://learnxinyminutes.com/docs/python/ # ./git
>>>> > > >> >
>>>> > > >> > "[omaha] For Python beginners"
>>>> > > >> > https://mail.python.org/pipermail//omaha/2015-May/001816.html
>>>> > > >> >
>>>> > > >> > * http://docs.python.org/tutorial
>>>> > > >> > *
>>>> > >
>>>> https://scipy-lectures.github.io/intro/language/python_language.html
>>>> > > >> > * https://github.com/audreyr/cookiecutter-
>>>> > > >> > <https://github.com/audreyr/cookiecutter-pypackage>pypackage
>>>> > > >> > <https://github.com/audreyr/cookiecutter-pypackage>
>>>> > > >> >
>>>> > > >> >   *Create and test a package w/ git[hub] and CI"
>>>> > > >> >
>>>> > > >> > * Rosalind [Bioinformatics] exercises are outstanding
>>>> > > >> >   1. they're already set up for online grading/points
>>>> > > >> >   2. you get to learn about the domain
>>>> > > >> >   * | Homepage: http://rosalind.info/
>>>> > > >> >   * https://wrdrd.com/docs/consulting/data-science#rosalind
>>>> > > >> >
>>>> > > >> > * "How to create and *test* a package for your Rosalind
>>>> solutions"
>>>> > > >> >
>>>> > > >> >    * "Testing as a core scientific process #126"
>>>> > > >> >
>>>> https://github.com/scipy-lectures/scipy-lecture-notes/issues/126
>>>> > > >> >
>>>> > > >> >    * TDD first!
>>>> > > >> >       [null] hypothesis, code, test!, [commit]
>>>> > > >> >
>>>> > > >> >       *
>>>> > > >> >
>>>> > > >>
>>>> > >
>>>> >
>>>> https://westurner.org/wiki/awesome-python-testing.html#workflow-evolution
>>>> > > >> >
>>>> > > >> >          *
>>>> > > >> >
>>>> > >
>>>> https://wrdrd.com/docs/consulting/education-technology#jupyter-and-tdd
>>>> > > >> >           *
>>>> > > >> >
>>>> https://wrdrd.com/docs/consulting/education-technology#nbgrader
>>>> > > >> >
>>>> > > >> > [omaha] November 18 Meeting - Celebrate and Plan!
>>>> > > >> >
>>>> https://mail.python.org/pipermail/omaha/2015-November/001943.html
>>>> > > >> >
>>>> > > >> > > The software carpentry lessons are great (and designed for
>>>> group
>>>> > > >> > instruction IIUC):
>>>> > > >> > > * https://software-carpentry.org/lessons.html
>>>> > > >> >
>>>> > > >> > ...
>>>> https://westurner.org/opengov/us/ne/#cs-skills-for-stem-fields
>>>> > :
>>>> > > >> >
>>>> > > >> > *
>>>> > > >>
>>>> >
>>>> https://wrdrd.com/docs/consulting/software-development#computer-science
>>>> > > >> > To all of who offered to help in any form with giving Python
>>>> > > workshops @
>>>> > > >> > DoSpace,
>>>> > > >> >
>>>> > > >> > I've been hammering out some ideas for a class targeted at
>>>> those new
>>>> > > to
>>>> > > >> > programming in particular.
>>>> > > >> >
>>>> > > >> > We should probably start a conversation about it and see what
>>>> we can
>>>> > > put
>>>> > > >> > together.
>>>> > > >> >
>>>> > > >> > Here are some goals, because we need to have something to
>>>> measure
>>>> > > >> against:
>>>> > > >> >
>>>> > > >> > * should allow for students to do something with Python as
>>>> soon as
>>>> > > >> possible
>>>> > > >> > - don't want them bored and inattentive.
>>>> > > >> >
>>>> > > >> > * The See/Do affect of examples should have the following
>>>> qualities:
>>>> > > >> >
>>>> > > >> >   * be pep8 compliant (only deviating when we are teaching a
>>>> > specific
>>>> > > >> > topic.)
>>>> > > >> >
>>>> > > >> >   * be easy to test.  No example has print or input in the
>>>> middle
>>>> > of a
>>>> > > >> > function other than main or one designed to deal with user
>>>> > > interaction.
>>>> > > >> > Too many examples mix I/O with processing leaving students
>>>> with a
>>>> > > knack
>>>> > > >> for
>>>> > > >> > writing hard to test code.  (All example code and problems
>>>> should
>>>> > have
>>>> > > >> an
>>>> > > >> > associated test suite [py.test] to accompany them.)
>>>> > > >> >
>>>> > > >> >   * Should emphasize DRY and only deviate when showing them
>>>> undry
>>>> > > >> > situations and how to correct.
>>>> > > >> >
>>>> > > >> >   * Early coding problems are often quite boring, so there
>>>> should be
>>>> > > >> some
>>>> > > >> > sort of setup for them, a backstory, to get the students
>>>> invested in
>>>> > > >> their
>>>> > > >> > solution.  For Example - learning comparison operators -- "Sam
>>>> is a
>>>> > > >> young
>>>> > > >> > AI with untrained neural nets and we need to write a module to
>>>> help
>>>> > > >> train
>>>> > > >> > him had to organize two things so he can put them on a shelf in
>>>> > > order."
>>>> > > >> >  Sounds a lot more interesting than write a function that
>>>> compares 2
>>>> > > >> things
>>>> > > >> > and output them in order from smallest to largest. *yawn*
>>>> > > >> >
>>>> > > >> >
>>>> > > >> > So what are your ideas?  What are you willing to help out with?
>>>> > We'll
>>>> > > >> need
>>>> > > >> > material reviewers, testers and trainers and TAs for actual
>>>> classes.
>>>> > > >> >
>>>> > > >> >
>>>> > > >> > I believe someone has offered to be our DoSpace ambassador.
>>>> Sorry,
>>>> > > but I
>>>> > > >> > didn't write down your name at the meeting.  Would you speak
>>>> up once
>>>> > > >> again.
>>>> > > >> >
>>>> > > >> >
>>>> > > >> > --
>>>> > > >> > Best,
>>>> > > >> >
>>>> > > >> > Jeff Hinrichs
>>>> > > >> > 402.218.1473
>>>> > > >> > _______________________________________________
>>>> > > >> > Omaha Python Users Group mailing list
>>>> > > >> > Omaha at python.org
>>>> > > >> > https://mail.python.org/mailman/listinfo/omaha
>>>> > > >> > http://www.OmahaPython.org
>>>> > > >> > _______________________________________________
>>>> > > >> > Omaha Python Users Group mailing list
>>>> > > >> > Omaha at python.org
>>>> > > >> > https://mail.python.org/mailman/listinfo/omaha
>>>> > > >> > http://www.OmahaPython.org
>>>> > > >> > _______________________________________________
>>>> > > >> > Omaha Python Users Group mailing list
>>>> > > >> > Omaha at python.org
>>>> > > >> > https://mail.python.org/mailman/listinfo/omaha
>>>> > > >> > http://www.OmahaPython.org
>>>> > > >> >
>>>> > > >>
>>>> > > >>
>>>> > > >>
>>>> > > >> --
>>>> > > >> Best,
>>>> > > >>
>>>> > > >> Jeff Hinrichs
>>>> > > >> 402.218.1473
>>>> > > >> _______________________________________________
>>>> > > >> Omaha Python Users Group mailing list
>>>> > > >> Omaha at python.org
>>>> > > >> https://mail.python.org/mailman/listinfo/omaha
>>>> > > >> http://www.OmahaPython.org
>>>> > > >>
>>>> > > >
>>>> > > >
>>>> > > _______________________________________________
>>>> > > Omaha Python Users Group mailing list
>>>> > > Omaha at python.org
>>>> > > https://mail.python.org/mailman/listinfo/omaha
>>>> > > http://www.OmahaPython.org
>>>> > >
>>>> > _______________________________________________
>>>> > Omaha Python Users Group mailing list
>>>> > Omaha at python.org
>>>> > https://mail.python.org/mailman/listinfo/omaha
>>>> > http://www.OmahaPython.org
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>> Best,
>>>>
>>>> Jeff Hinrichs
>>>> 402.218.1473
>>>> _______________________________________________
>>>> Omaha Python Users Group mailing list
>>>> Omaha at python.org
>>>> https://mail.python.org/mailman/listinfo/omaha
>>>> http://www.OmahaPython.org
>>>> _______________________________________________
>>>> Omaha Python Users Group mailing list
>>>> Omaha at python.org
>>>> https://mail.python.org/mailman/listinfo/omaha
>>>> http://www.OmahaPython.org
>>>>
>>>
>>>
>>
>


More information about the Omaha mailing list