I think this link will work:
https://www.flickr.com/photos/kirbyurner/54152008669/sizes/h/
Goes to a large enough view of my screen, showing Google Colab,
a public facing free interface, wherein I've just prompted its Gemini
code assistant (AI) to plot a purple Bell Curve. It writes and
explains the code. I've cut and pasted it verbatim into a code cell
on the left for execution. The output is shown.
Pretty nifty if you ask me.
A lot of my content is open source should you wish to further
explore a basic Python course as you would a museum exhibit
or an archeological dig. Compare and contrast with 2050.
You'll notice I'm dutifully passing on the Monty Python lore:
https://nbviewer.org/github/4dsolutions/clarusway_data_analysis/blob/main/b…
Kirby
JavaTpoint offers free online tutorials for learning programming languages, including Java. It provides a structured learning path with topics ranging from basic concepts like variables and control statements to advanced subjects such as multi-threading, JDBC, and Java tutorial Collections. The site includes interactive code examples, allowing users to practice coding and understand how different concepts work in real-time. In addition to Java, JavaTpoint covers other languages like Python, C++, JavaScript, and more, along with web development and database topics. It's a great resource for beginners and advanced learners looking to improve their coding skills without any cost. https://www.javatpoint.com/java-tutorial
Long timers here might remember Arthur Siegel's PyGeo, still on Sourceforge
<https://pygeo.sourceforge.net>. He and I used to endlessly debate, here on
this edu-sig listserv, the relative advantages of this or that pythonic
pedagogy, but were in agreement that VPython <https://vpython.org>, or
Visual Python, was in the toolkit.
We managed to meet up in New York City, then I had to abort a second meetup
at a Pycon and yada yada... I only met him in person that one time. No Zoom
yet.
Where is VPython today and who is using it?
The physics teaching subculture is where it comes from and where it still
thrives from what I can tell. I managed to get invited to an AAPT meetup
<https://worldgame.blogspot.com/2010/07/physics-conference.html> (American
Association of Physics Teachers) by Dr. Bob Fuller, then its president, and
to sit in on some VPython talks.
However, short of full scale animation, ala Blender
<https://www.blender.org> today, we have the ray-tracer as a genre, and the
ability to render stills. What brought me to Python in the first place, on a
pilgrimage <http://4dsolutions.net/ocn/oopalgebra.html> through several
languages (starting with FoxPro), was my appetite for computer graphics,
geometric in particular. Today I'm on several Facebook groups that feed
that appetite. Sometimes I roll my own.
If you're new to Python and/or maybe looking for something more off the
beaten path, not data science, not AI, then I recommend the free and open
source stack I'm continuing to toy with: Python + povray, the latter coming
from a CompuServ heritage, with an open source license predating anything
GNU GPL.
The animated GIFs <https://groups.io/g/synergeo/message/2735> I'm making
also make use of Fiji <https://fiji.sc>, another free open wrapper. I write
and run Python scripts
<https://github.com/4dsolutions/School_of_Tomorrow/blob/master/flextegrity.py>
to generate Scene Description Language for POV-Ray <https://www.povray.org>,
render say 7 - 9 frames, then sequence them into a single GIF file
<https://groups.io/g/synergeo/message/2739>, where Fiji lets you control
both framerate and whether to keep looping or not.
My contention has always been: it's a two way street i.e. we're not only
learning Python in order to master more math; we're learning math to write
more interesting Python. The math I've been learning, around polyhedrons,
has given me hours of coding enjoyment and a deeper understanding of
spatial geometry.
Kirby
I encourage Pythonistas into teaching Python in the context of generic
computer science and mathematics, high school and above (and below for the
precocious) to consider "indigs" an accessible example of recursion at
work.
I'm testing it out in a warm up section students might visit if feeling
shaky on their Python, or just wanting more background reading.
https://github.com/4dsolutions/clarusway_data_analysis/blob/main/python_war…
The idea of an indig is very simple and inherits from numerology, a kind of
primordial NLP:
Take any positive integer, split it into individual digits, add those
digits, if the sum is a single digit you're done, otherwise: repeat.
Examples:
32986513 = 3+2+9+8+6+5+1+3 = 37 = 3+7 = 10 = 1+0 = 1
59865279171 = 5+9 = 14+8 = 22+6 = 28+5 = 33+2 = 35+7 = 42+9 = 51+1 = 52+7 =
59+1 = 60 = 6+0 = 6
I got it down to this, but it's no crime to take a few more lines.
def indig(n: int):
return n if len(str(n))==1 else indig(sum(map(int, list(str(n)))))
It's not important that "taking the indig of a number" be considered
"meaningful" in any way. What's useful about it is it introduces type
conversion (int to string digits, back to single ints for summing) as well
as recursion.
This idea and algorithm may well have been proposed and used before in the
literature. Sounds Martin Gardnery. Maybe it's in Knuth already. I'm not
trying to establish priority for anything, only circling what looks like
promising pedagogy going forward and sharing it with peers.
Kirby
To edu-sig:
---------- Forwarded message ---------
From: Kirby Urner <kirby(a)clarusway.com>
Date: Sun, Aug 18, 2024 at 7:32 AM
Subject: Fwd: Side topic: IDEs
To: kirby urner <kirby.urner(a)gmail.com>
Feel free to write to me at Clarusway as well.
Kirby
---------- Forwarded message ---------
From: Kirby Urner <kirby(a)clarusway.com>
Date: Wed, Jul 24, 2024 at 4:26 PM
Subject: Side topic: IDEs
To: Edwin W <edwin(a)clarusway.com>, kirby urner <kirby.urner(a)gmail.com>
Hi Edwin --
I thought we could have more than one thread going, branching off Incoming
Cohort Planning (ongoing).
I've seen and taken various approaches to the topic of Interactive
Development Environments. Here are some talking points I've used:
* you the developer have a choice from a huge variety of IDEs
<https://www.creativebloq.com/advice/best-code-editors>, and they continue
to evolve.
* Don't be afraid to sample several.
* Even when you have a favorite, you might want to keep dabbling with the
competition, just to see what they're like
* IDEs divide into two major categories:
(a) IDEs that work with many computer languages, usually by means of "plug
ins"
(b) IDEs devoted to one primary language only (example: Spyder)
Screenshot of me using Spyder just now (when I wanted to test that pi
generator again):
[image: Screen Shot 2024-07-24 at 4.18.08 PM.png]
Sometimes I talk about the history, meaning the lineage, meaning some IDEs
grew up inside Windows whereas others derive from a Linux/Unix/Mac
background (vi vim emacs).
If I'm sharing my screen, I can show some of these IDEs while I mention
them, otherwise it can just be information embedded in some Notebook.
I used IDLE for years, the IDE that comes with Python when you get it from
Python.org. Anaconda gives you Spyder.
One reason Python became very popular is because IDLE is cross platform,
running in Windows, Mac, Linux pretty much the same way. Guido got a US
government grant to work on IDLE (even though he's a Dutch citizen).
When I worked for O'Reilly School of Technology, we had our students using
remote (cloud based) versions of Eclipse, which was cutting edge but also a
bit awkward.
Eclipse <https://en.wikipedia.org/wiki/Eclipse_(software)> (open source
project of IBM) features plug-in architecture and works with many
languages, but was especially made for Java.
I understand that the Clarusway Python courseware is Notebook based, which
is not a problem, that's a good environment.
I was just wondering if you think it's worthwhile to talk about IDEs, how
they are different from Notebooks, and how a Python coder has a choice from
many of them.
I like how Spyder integrates features and have used it a lot when sharing
from an IDE when teaching Python online.
Kirby
I'm herewith archiving an email from earlier today, to the guy in charge of
the Python curriculum at this company I work for (see LinkedIn profile). It
refers back to this listserv, in the context of recycling what I consider a
choice piece of Python lore: that generator for deriving digits of pi. --
Kirby
---------- Forwarded message ---------
From: Kirby Urner <kirby(a)clarusway.com>
Date: Wed, Jul 24, 2024 at 4:05 PM
Subject: Python generators (a fun example, not by me)
To:
On the topic of Python generators, I just wanted to share what I consider a
mysterious one, meaning I didn't write it and don't understand why it works
(eyeballing the code has not yielded answers).
It may have actually come to me from Guido himself if I remember how it
went on edu-sig (one of the archived Python.org discussion groups on which
I've been active). He and I have a long term shared interest around
integrating Python into everyday math learning (we've come a long way since
then).
For context, I'm copying this Python generator from my Jupyter Notebook
called Pi Day, which is about using Python to generate the number pi in
various ways:
https://nbviewer.org/github/4dsolutions/Python5/blob/master/Pi%20Day%20Fun.…
Although most of the Python is by me, I'm simply implementing algorithms
discovered by others (it's about their genius, not mine), such as that
famous one by Ramanujan in the middle of the page.
Here's the generator I'm talking about (at the very end of the above
notebook, before the flashing GIF pizza pi):
"""
Another generator example: converging to Pi
https://mail.python.org/pipermail/edu-sig/2015-September/date.html
"""
def pi():
k, a, b, a1, b1 = 2, 4, 1, 12, 4
while True:
p, q, k = k*k, 2*k+1, k+1
a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
d, d1 = a/b, a1/b1
while d == d1:
yield int(d)
a, a1 = 10*(a%b), 10*(a1%b1)
d, d1 = a/b, a1/b1
if __name__ == "__main__":
the_gen = pi()
for _ in range(100):
print(next(the_gen),end="")
print()
If I run that I get (I also have 3.9 as well as 3.11):
Python 3.9.12 (main, Apr 5 2022, 01:53:17)
Type "copyright", "credits" or "license" for more information.
IPython 7.31.1 -- An enhanced Interactive Python.
runfile('/Users/kirbyurner/Documents/clarusway_data_analysis/python_warm_up/pi_generator.py',
wdir='/Users/kirbyurner/Documents/clarusway_data_analysis/python_warm_up')
3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067
Those are the digits of pi <https://www.piday.org/million/>! Why? Pretty
interesting, no?
Kirby
Hi there,
My name is Merav Yuravlivker, and I'm the CEO of Data Society - we deliver
data science academies to Fortune 500 companies, government agencies, and
other international organizations.
We're currently looking for part-time Python instructors and TAs, and my
friend Jackie Kazil recommended I reach out to you and your list serv. All
of these opportunities can be available for people who are employed
full-time, professors, or grad students. We pay well and provide all the
materials for the instructor, as well as instructor training and support.
If possible, would you please be able to share the following blurb? Please
let me know if there is anything else you need from me. Much appreciated!
Best,
Merav
---
Data Society, a fast-growing data science training company, is looking for
awesome Python instructors and TAs! We deliver data academies to Fortune
500 companies, government agencies, and international organizations. All of
our content is built in-house by an expert team of data scientists and
instructional designers, so you can focus on what you do best - teach
professionals how to find new insights and make their jobs easier.
We currently have a few openings for TAs, as well as part-time instructors
- all of these opportunities can be available for people who are employed
full-time, professors, or grad students. We pay competitively, have a great
support team, and provide amazing opportunities for additional projects if
you're interested.
To learn more, please visit our page for current opportunities
<https://t.sidekickopen10.com/s2t/c/5/f18dQhb0S7lM8dDMPbW2n0x6l2B9nMJN7t5X-F…>,
or simply reach out to Merav at merav(a)datasociety.com.
--
Schedule a time to meet
<https://t.sidekickopen10.com/s1t/c/5/f18dQhb0S7lM8dDMPbW2n0x6l2B9nMJN7t5X-F…>
Merav Yuravlivker
Data Society, Chief Executive Officer and Co-founder
777 6th Street NW, 11th Floor
Washington, D.C., 20001
Enterprise: solutions.datasociety.com
Consumer: datasociety.com
When I start introducing Python I use this chart [1]:
Five Dimensions of Python:
- Level 0: core syntax with keywords & punctuation, indentation (import,
if...)
- Level 1: a large set of built-ins (e.g. print)
- Level 2: special names with the double underlines
- Level 3: Standard Library (e.g. math)
- Level 4: 3rd Party Ecosystem (e.g. numpy, pandas, matplotlib)
Here's a Level 2 topic I've been recently working on:
https://nbviewer.org/github/4dsolutions/m4w/blob/main/gadzooks.ipynb
I know, we don't all love those __ribs__ (special names), however that's a
benefit of Free Open Source: you can fork and adapt, take the best ideas,
and leave the rest.
This one is about how implementing __add__ gets you default behavior
for __iadd__ with no extra work, with the option to go on to add your
own __iadd__.
Kirby
[1] example of me doing that:
https://github.com/4dsolutions/clarusway_data_analysis/blob/main/python_war…
coming from:
https://nbviewer.org/github/4dsolutions/clarusway_data_analysis/blob/main/D…
(Exhibit: some Python teaching in the wild....)
https://youtu.be/enO1vgOJxwM
Were I to join the Saturday Morning queue, and share a Lightning Talk at a
Pycon. Fond memories. [1]
This 4 min 38 sec YouTube speaks to teachers in that Venn Diagram where the
set of math teachers and set of Python programmers intersect. edu-sig has
always presumed such an intersection exists, and caters to its members.
Kirby