Re: teaching Python etc.

Wes Turner <[email protected]>
Newsgroups gmane.comp.python.education
Message-ID <CACfEFw9Nni5-gOQ+xn-Vi8jpy8ge5=92PPBipHMe9atixNMAOg@mail.gmail.com>
On Monday, July 24, 2017, kirby urner <[email protected]> wrote:

>
> I turned down a $600/day 3 day gig I might not have got anyway, because
> the textbook goes twelve chapters with no 'class' keyword, and that would
> define the full complement of our topics. My code of conduct forbids
> teaching Python that way.
>

+1.
- "Namespaces are one honking great idea -- let's do more of those!"
- Classes are dicts with MRO.
https://en.wikipedia.org/wiki/C3_linearization#Example_demonstrated_in_Python


> The whole point of OOP was here's a way we think in natural language:
> about Things with properties and behaviors.
>

Maybe 'classes and instance of classes'. class Book(object): pass;
book_instance = Book()


>   Maybe some people don't like to be "objectified" and it's true, that can
> mean something bad, but in the context of the Django ORM, it means an
> integrated object has the records.
>

ActiveRecord and DataMapper are both popular ORM patterns.

From
https://wrdrd.github.io/docs/consulting/knowledge-engineering#object-relational-mapping
:

Object Relational Mapping⬅
Wikipedia: https://en.wikipedia.org/wiki/Object-relational_mapping
- https://en.wikipedia.org/wiki/Data_mapper_pattern
- https://en.wikipedia.org/wiki/Active_record_pattern

https://en.wikipedia.org/wiki/Object-relational_impedance_mismatch
- https://en.wikipedia.org/wiki/List_of_object-relational_mapping_software



> The patient, the athlete, the student object, comes with a medical
> history.  Lots of SQL behind the scenes.
>

Medical history as a schema / informatics example and Python:
- GNUhealth
  - (an actual application (with an install procedure and/or just Docker)
with example/test data)  -
https://en.wikibooks.org/wiki/GNU_Health/Different_ways_to_test_GNU_Health#Option_4:_Run_GNU_Health_from_Docker_.28Lightweight_Containers.29
  - https://hub.docker.com/r/mbsolutions/postgres-gnuhealth/~/dockerfile/

  - https://en.wikibooks.org/wiki/GNU_Health/The_Demo_database
    -
https://hg.savannah.gnu.org/hgweb/health/file/tip/tryton/backend/fhir/server/fhir/patient.py
      - lots of XML (which can be digitally signed)
      - lots of boilerplate
      - (this is in the the server API)

Normalization to records (rows) with fields (columns) and keys (identity)
AND/OR
Denormalization to composed, often nested, signable records (See: JSONLD,
ld-signatures, blockcerts)


> Rollicking good debate over on math-teach as we exult over the huge
> numbers turning out to take AP CS.[1]  The Learn to Code movement is
> succeeding, has gained traction.  The Coding with Kids that I work for has
> likewise spread to several more cities, and any successful business model
> attracts imitators (CwK has a great website for faculty, lets us track
> everything, including our hours).  Is code school the new high school?
>
> https://medium.com/@kirbyurner/the-plight-of-high-school-
> math-teachers-c0faf0a6efe6
> (an essay coming up on its first anniversary)
>
> The $600/day gig was teaching adults (andragogy vs pedagogy), over the
> wire, which is how I've been making ends meet.
>
> Unfortunately for me, a truck pulled up across the street and started
> moving wires from pole A (the old one) to pole B (the new one) and wouldn't
> ya know, my Internet, which goes right through there, cut out.
>
> The crew said "not us" (what are the chances?) and took off.  CenturyLink
> is coming tomorrow, but will they have a long enough ladder?  I've gotta do
> my wind-up session 10 of 10 for the Californians.  Patrick offered me his
> office (Comcast). I'm tethered to Internet through my cell phone as I write
> this (not enough bandwidth for live screen and audio though).
>

> We introduce Python classes early because that's the promise of OOP.
>

We could start with

  import unittest
  class Shape():
  class Square():
  class Rectangle():
  class Triangle():
  # def area(*args, **kwargs):
  # def circumference(*args, **kwargs):

...
https://westurner.github.io/2016/10/17/teaching-test-driven-development-first.html


> To sucker for that "ontogeny recapitulates phylogeny" thesis, that we need
> to slog through a whole semester of procedural programming, before we make
> a single instance of something, is impossible in practice, at least in
> Python, as just about everything one touches is an instance of something.
> This textbook seems to hearken from that era (fortunately receding in the
> rear view mirror).
>
> You'd think in Java at least it'd be classes right out of the gate as one
> can't but extend a class to get anything done.
>
> Python's the same way of course; I think of functions as another type,
> canned (built-in), with their own syntax, but an instance of the
> FunctionType nonetheless.
>

FunctionType type annotation:
https://github.com/python/typeshed/blob/1e04a8c1b8b2c7a1fc3d9fcfbc2d3d8ba2dc933a/stdlib/3/types.pyi#L25


>
> Out here in Code School world, the pressure is on to teach Python in two
> main ways:  as a web development language, using projects like Flask and
> Django, and as a Data Science tool, using pandas, numpy, Jupyter Notebooks
> and mathplotlib -- but then when it comes to visualization tools, there's a
> plethora of 2D options.  Great talk on this at Pycon2017.
>

Mayavi (VTK), Blender


> I've always been more a 3D guy myself, writing to POV-Ray and later Visual
> Python.  I had a good experience getting vpython over anaconda and
> embedding same in a Notebook, but that was a while ago.  No one pays me for
> 3D stuff.
>

http://holoviews.org/ (Bokeh, Matplotlib, Plotly)


>
> Maybe we should learn to do stats that way, using more 3D models than we
> do.  Fly through.
>

We manage to understand so much about data through 2D (+time)
visualizations that don't have 3D camera and viewport parameters to just
reset to the best view.

That said, these 3Blue1Brown professionally animated math videos are
outstanding (and sponsored!):
https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw


>
> Not just physics should have all the fun.  As it is it seems precious few
> physics teachers take the "coding a physics engine" approach.  Maybe
> Carnegie Mellon?  I'm far from omniscient.
>

https://en.wikipedia.org/wiki/General_relativity#Relationship_with_quantum_theory

- /search computational physics and python
- /search physics simulation and python

- http://vpython.org/
- https://docs.blender.org/manual/en/dev/physics/

- Are there other good tools in {Python,} for evaluating complex systems at
a point in time? (I think we've had a similar discussion in the past.)


> Hey, TinkerCAD is loads of fun for simulating an Arduino, a great sandbox
> if you don't have all the components.  I've made some screencasts showing
> that. [2]
>

Recently, I learned about LeoCAD (because LEGOs and a bricklayer.org
presentation):
https://github.com/westurner/wiki/wiki/bricklayer#bricklayer-jupyter-extension


>
> The Learn to Code movement is having a big impact, to summarize.
>

"Nine Policy Ideas to Make Computer Science Fundamental to K-12 Education"
https://code.org/files/Making_CS_Fundamental.pdf


>
> Kirby
>

_______________________________________________
Edu-sig mailing list
[email protected]
https://mail.python.org/mailman/listinfo/edu-sig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.