{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[Oregon Curriculum Network](http://4dsolutions.net/ocn/)
\n", "[School of Tomorrow](School_of_Tomorrow.ipynb)\n", "\n", "\n", "# The School of Tomorrow\n", "\n", "\"History" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## OUR TOPICS\n", "\n", "* [Concentric Hierarchy](#CH)\n", "* [Martian Math](http://wikieducator.org/Martian_Math)\n", "* Computer Programming\n", "* [Scheduling](Scheduling.ipynb)\n", "* 3D Graphics with Python and [Blender](blender.ipynb)\n", "* [Data Science](https://github.com/4dsolutions/Curriculum_Development) and [Visualization](dataviz.ipynb) (using [our tools](stats_works.ipynb))\n", "* History (see Sidebars)\n", "* Literature (see Sidebars)\n", "* Cryptography (symmetric and public)\n", "* [Virology](Science_Paper.ipynb)\n", "* [Number Theory](NumberTheory.ipynb)\n", "* [Group Theory](GroupTheory.ipynb)\n", "* Number Sequences ([OEIS](http://oeis.org/A005901))\n", "* [Nuclear Isotopes](isotope_decay.ipynb) (e.g. Fukushima, Chenobyl, Marshall Islands, Nevada...)\n", "* [Arithmetic](arithmetic_of_tomorrow.ipynb) including in bases other than 10\n", "* [Philosophy of Engineering](https://en.wikipedia.org/wiki/Design_science_revolution)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Concentric Hierarchy\n", "\n", "What distinguishes a School of Tomorrow affiliate is a focus on some [shared focal points](https://mybizmo.blogspot.com/2006/09/focal-points.html). One of which is the Concentric Hierarchy of Polyhedrons with their tetravolumes.\n", "\n", "\"concentric_hierarchy\"\n", "\n", "The source code below was cut and pasted [from repl.it](https://replit.com/@kurner/SandE-Modules) (prounounced \"repplit\"), a cloud-based training arena. See [Literature](#Lit) below." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape Volume Check\n", "Five VEs : 24.620860\n", "SuperRT : 21.213203\n", "Cubocta : 20.000000\n", "Icosa : 18.512296 18.512296\n", "P Dodeca : 15.350018\n", "Five Octas : 6.334369\n", "Rh Dodeca (RD): 6.000000\n", "RT5+ : 5.007758 5.007758\n", "RT5 : 5.000000 5.000000\n", "Octa : 4.000000\n", "Cube : 3.000000\n", "Skew Icosa : 2.917961 2.917961\n", "Small VE : 2.500000\n", "Tetra : 1.000000\n", "--------------------\n", "Emod3 : 0.176777\n", "Emod : 0.041731\n", "emod3 : 0.009851\n", "Tmod : 0.041667\n", "Smod6 : 0.809017\n", "Smod3 : 0.190983\n", "Smod : 0.045085 0.045085\n", "smod3 : 0.010643\n" ] } ], "source": [ "\"\"\"\n", "From David Koski's paper:\n", "Revisiting R.B. Fuller's S & E Modules\n", "--------\n", "The concentric hierarchy can be described in terms of \n", "phi-scaled S modules: \n", "\n", "Tetrahedron: 21S + 5s3 = 5S3 + 1S = 1S6 + 1S3\n", "Skew Icosa: 60S + 20s3 \n", "Cube : 72S + 15s3 = 15S3 + 3S = 3S6 + 3S3\n", "Octahedron : 84S + 20s3 = 20S3 + 4S = 4S6 + 4S3 \n", "Rh Triac : 105S + 25s3 = 25S3 + 5S = 5S6 + 5S3 (volume = 5) \n", "Rh Dodec : 126S + 30s3 = 30S3 + 6S = 6S6 + 6S3\n", "Pent Dodeca: 348E + 84e3\n", "Icosahedron: 100E3 + 20E\n", "VE : 20; 420S + 100s3\n", "SuperRT : 20 * Syn3; 480E + 120e3\n", "--------\n", "\n", "On-line: http://coffeeshopsnet.blogspot.com/2017/06/koski-paper.html\n", "\"\"\"\n", "\n", "from math import sqrt as rt2\n", "\n", "φ = (rt2(5)+1)/2 # golden ratio\n", "Syn3 = rt2(9/8) # not to be confused with Smod\n", "\n", "Smod = (φ**-5) / 2 # home base Smod\n", "smod3 = Smod * φ**-3 # small s, phi down\n", "Smod3 = Smod * φ**3 # capital s, phi up\n", "Smod6 = Smod3 * φ**3 # phi up yet again\n", "\n", "Cubocta = 20\n", "SuperRT = Syn3 * Cubocta\n", "\n", "Emod3 = SuperRT / 120 # Emod phi up\n", "Emod = (rt2(2) / 8) * (φ**-3) # home base Emod\n", "emod3 = Emod * φ**-3 # Emod phi down\n", "\n", "S_factor = Smod / Emod # 2*sqrt(7-3*sqrt(5))\n", "T_factor = pow(3/2, 1/3) * rt2(2) / φ\n", "Tmod = 1/24\n", "\n", "FiveVEs = 480 * Smod + 280 * smod3\n", "Icosa = 100 * Emod3 + 20 * Emod\n", "P_Dodeca = 348 * Emod + 84 * emod3\n", "FiveOctas = 132 * Smod + 36 * smod3\n", "RD = 6 * Smod6 + 6 * Smod3 \n", "RT5plus = 120 * Emod \n", "RT5 = 5 * Smod6 + 5 * Smod3 \n", "Octa = 4 * Smod6 + 4 * Smod3\n", "Cube = 3 * Smod6 + 3 * Smod3\n", "SmallVE = Cubocta * 1/8 # half D edges (=R)\n", "SkewIcosa = 60 * Smod + 20 * smod3 \n", "Tetra = 5 * Smod3 + Smod\n", "\n", "print(\"Shape Volume Check\")\n", "print(f\"Five VEs : {FiveVEs:10.6f}\")\n", "print(f\"SuperRT : {SuperRT:10.6f}\")\n", "print(f\"Cubocta : {Cubocta:10.6f}\")\n", "print(f\"Icosa : {Icosa:10.6f} {20 * 1/S_factor:10.6f}\")\n", "print(f\"P Dodeca : {P_Dodeca:10.6f}\")\n", "print(f\"Five Octas : {FiveOctas:10.6f}\")\n", "print(f\"Rh Dodeca (RD): {RD:10.6f}\")\n", "print(f\"RT5+ : {RT5plus:10.6f} {SuperRT * φ**-3:10.6f}\")\n", "print(f\"RT5 : {RT5:10.6f} {120 * Tmod:10.6f}\")\n", "print(f\"Octa : {Octa:10.6f}\")\n", "print(f\"Cube : {Cube:10.6f}\")\n", "print(f\"Skew Icosa : {SkewIcosa:10.6f} {SmallVE * S_factor**2:10.6f}\")\n", "print(f\"Small VE : {SmallVE:10.6f}\")\n", "print(f\"Tetra : {Tetra:10.6f}\")\n", "print(\"-\" * 20)\n", "print(f\"Emod3 : {Emod3:10.6f}\")\n", "print(f\"Emod : {Emod:10.6f}\")\n", "print(f\"emod3 : {emod3:10.6f}\")\n", "\n", "Smod_check = (Octa - SkewIcosa) / 24\n", "print(f\"Tmod : {Emod * (1 / T_factor**3):10.6f}\")\n", "print(f\"Smod6 : {Smod6:10.6f}\")\n", "print(f\"Smod3 : {Smod3:10.6f}\")\n", "print(f\"Smod : {Smod:10.6f} {Smod_check:10.6f}\")\n", "print(f\"smod3 : {smod3:10.6f}\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo(\"gPcTl75Io5w\") " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "YouTubeVideo(\"bD5RmyeN2LI\") " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[ZomeZone](ZomeZone.ipynb) -- lets look at even more modules, why not?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computer Programming\n", "\n", "Our Jupyter Notebook's kernel is Python. The code cells you see, interspersed with text and pictures, are a primary constituent of the Jupyter Notebook. You will learn more about Jupyter Notebook technology as you work through these materials.\n", "\n", "It's time for a short Glossary, that we will add to over time:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "glossary = {} # empty dictionary (a set of key:value pairs)\n", "glossary.update({\n", "\"Jupyter Notebook (JN)\" : \"like a web page, but interactive, stored as json\",\n", "\"cell\" : \"a Jupyter Notebook consists of mostly Code and Markdown cells\",\n", "\"code cell\" : \"where runnable code, interpreted by the Kernel, is displayed and color coded\",\n", "\"markdown cell\" : \"uses a markup called markdown to format the text cells in a Jupyter Notebook\",\n", "\"Python\" : \"a computer language from Holland (the Netherlands) that went viral\", \n", "\"Kernel\" : \"an interpreter, e.g. Python, ready to process JN code cells and return results\",\n", "})\n", "type(glossary) # ask about this object's type" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Visualization\n", "\n", "The School of Tomorrow features Jupyter Notebook based explorations of datasets, with the aim of building up skills with a specific suite of tools (see below).\n", "\n", "## History\n", "\n", "Our topics will include (but are not limited to):\n", "\n", "* Science Fiction through the ages, from [H.G. Wells](https://www.gutenberg.org/ebooks/author/30) to [Orson Welles](https://www.snopes.com/fact-check/war-of-the-worlds/). \n", "* Bonus Army (WW1 Veterans, requesting payment from Congress)\n", "* [Smedley \"fighting Quaker\" Butler](https://worldgame.blogspot.com/2020/01/occupy-history.html) (his career and writings)\n", "* Rajneesh Puram (Oregon History)\n", "* The Vortex Festival (Oregon History)\n", "* The Browser Wars and the Birth of JavaScript\n", "* [Occupy Portland (OPDX)](OPDX.ipynb) and Hoovervilles\n", "* Refugees and asylum-seekers in Portland\n", "* Cyber Punk and Crypto Punk subcultures (consistent with The House of Tomorrow)\n", "* other topics you choose (plus various research projects will be suggested)\n", "\n", "Links to Portland, Oregon, Cascadia region, home of the [Oregon Curriculum Network](http://4dsolutions.net/ocn/).\n", "\n", "\"P1080444\"\n", "
\n", "Mt. Tabor, Southeast Portland, Mid-level Reservoir\n", "
\n", "\n", "## Literature\n", "\n", "[Martian Math](https://github.com/4dsolutions/MartianMath/blob/master/mm1.ipynb) is Science Fiction, as well as a bridge to STEM topics. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, we look at more than science fiction. \n", "\n", "Based on our *The Home of Tomorrow* theme, we take seriously the curious mathematics ensconced within American Transcendentalism in the form of \"synergetic geometry\", the Concentric Hierarchy of Polyhedrons especially, which features a flagship Tetrahedron of edges one, as a unit of volume." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
VolumesComments
Shapes
SuperRT21.213203Emods RT phi-up, (Icosa, P Dodeca)
Cubocta20.00000012 balls around 1
Icosa18.512296Jitterbug first stop
P Dodeca15.350018Icosahedron Dual
Rh Dodeca6.000000Space-filler, ball domain, (Cube, Octa)
RT5+5.007758Radius = 1.0000
RT55.000000Radius = 0.9994
Octa4.000000Jitterbug 2nd stop, Cube dual
Cube3.000000Duo-tet cube, Octa dual
Sm Icosa2.917961Faces flush with Octa
Sm VE2.500000Faces flush with Octa
Tetra1.000000Unit Volume
Emod30.176777Emod phi up
Emod0.0417311/120th RT5+
emod30.009851Emod phi down
Tmod0.0416671/120th RT5
Amod0.04166712 left + 12 right = Tetra
Bmod0.04166748A + 48B = Octa
Smod30.190983Smod phi up
Smod0.045085Sm Icosa + 24 Smods = Octa
smod30.010643Smod phi down
\n", "
" ], "text/plain": [ " Volumes Comments\n", "Shapes \n", "SuperRT 21.213203 Emods RT phi-up, (Icosa, P Dodeca)\n", "Cubocta 20.000000 12 balls around 1\n", "Icosa 18.512296 Jitterbug first stop\n", "P Dodeca 15.350018 Icosahedron Dual\n", "Rh Dodeca 6.000000 Space-filler, ball domain, (Cube, Octa)\n", "RT5+ 5.007758 Radius = 1.0000\n", "RT5 5.000000 Radius = 0.9994\n", "Octa 4.000000 Jitterbug 2nd stop, Cube dual\n", "Cube 3.000000 Duo-tet cube, Octa dual\n", "Sm Icosa 2.917961 Faces flush with Octa\n", "Sm VE 2.500000 Faces flush with Octa\n", "Tetra 1.000000 Unit Volume\n", "Emod3 0.176777 Emod phi up\n", "Emod 0.041731 1/120th RT5+\n", "emod3 0.009851 Emod phi down\n", "Tmod 0.041667 1/120th RT5\n", "Amod 0.041667 12 left + 12 right = Tetra\n", "Bmod 0.041667 48A + 48B = Octa\n", "Smod3 0.190983 Smod phi up\n", "Smod 0.045085 Sm Icosa + 24 Smods = Octa\n", "smod3 0.010643 Smod phi down" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import identities\n", "from identities import volumes_table\n", "volumes_table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Martian\n", "
\n", "Martian Base made of an A-modules Tetrahedron,
protected with a Lux Perimeter\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Martian Math is also a new approach to some of the ideas in *Synergetics: Explorations in the Geometry of Thinking*. \n", "\n", "This is The School of Tomorrow after all. We teach the Bucky stuff.\n", "\n", "#### WORLD GAME MUSEUM\n", "\n", "Graphics by Richard Hawkins (see [Grunch/Synergetics/Modules](http://grunch.net/synergetics/modules.html))\n", "\n", "*A modules* make a Tetrahedron:\n", "\n", "![A module](http://grunch.net/synergetics/images/amod.gif)\n", "\n", "*B modules* with A modules, make an Octahedron. Tetrahedrons + Octahedrons define the space-filling IVM:\n", "\n", "![B module](http://grunch.net/synergetics/images/abmod.gif)\n", "\n", "*The MITE* (minimum tetrahedron) is a space-filling tetrahedron, but not the only one (cite Sommerville):\n", "\n", "![Mite](http://grunch.net/synergetics/images/mite.gif)\n", "\n", "*The Coupler* is an octahedral space-filler, also Unit Volume (same volume as Tetrahedron):\n", "\n", "![Coupler](http://grunch.net/synergetics/images/rdcubcp.gif)\n", "\n", "Maybe you would like to teach this curriculum it too? \n", "\n", "[Here are some slides](https://goo.gl/zoVYF1) you could use." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDBoYFhsaGRoeHRsfIjMmJCIiHzEtLycqLjYyMDEqLS01PVBFNzhLOS0wRWFFS1NWW11bMkJlbWRYbFBZW1cBERISGRYZLxsbLVc9NT9XV1dXV11XV1dXV1dXV1dXV1dXXVddV1dXX19XV19XV11XV1dXV1dXV1dYV1dXV1ddV//AABEIAWgB4AMBIgACEQEDEQH/xAAbAAEAAQUBAAAAAAAAAAAAAAAABQECAwQGB//EAEMQAAEDAgMEBwQIBgIBBAMAAAEAAhEDEgQhMQUTQVEGIjJhcYGRM1KhwRQWQlNykrHRFSM0c+HwVGLxB0Njghckov/EABoBAQEBAQEBAQAAAAAAAAAAAAABAgMEBQb/xAAwEQEAAgEEAAQEBQMFAAAAAAAAARECAxIhMRNBUfAEFCLBMmGB0fFxkaEFI1Kx4f/aAAwDAQACEQMRAD8A8/REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBt7MH83yKlrRyHoonZntfIqXWoZlS0ch6JaOQ9FVFWVLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRy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", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "YouTubeVideo(\"ACnA3YknrT0\") # https://youtu.be/ACnA3YknrT0" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "YouTubeVideo(\"OBuH2eAJT6Q\") # https://youtu.be/OBuH2eAJT6Q" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cryptography\n", "\n", "[RSA](https://github.com/4dsolutions/Python5/blob/master/Public%20Key%20Cryptography.ipynb) is the name of a public key cryptography algorithm we study a lot. Cryptography involves a lot of what we might call Number Theory.\n", "\n", "With the rise of the commercial web came the business requirement to perform secure communications, meaning encrypted communications over TCP/IP. The need for public key cryptography became obvious and widely disseminated, over the objections of those wishing to preserve \"military grade\" encryption for a chosen few.\n", "\n", "Subsequent to the rise of the commercial web came the crypto-currencies revolution, and blockchain strategies for decentralizing the responsibility for securing transactions. The promise of these technologies led many more people to develop [fluency around cryptography](https://bookauthority.org/books/best-cryptography-books).\n", "\n", "\"save_crypto\"\n", "\n", "### Historical Sidebar\n", "In periods marked by hostility towards specific cultures, the signature technologies of those cultures may be deprecated, pushed to the back burner. For example, [some argue](https://medium.com/@kirbyurner/operators-harbingers-of-the-zeitgeist-89fe9f4764b3) that Number Theory, pioneered by [Friedrich Gauss](http://4dsolutions.net/ocn/numeracy0.html) (1777-1855), was given a lower profile in North American curricula because of hostility towards Germanic cultures." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Computer Programming Interlude\n", "\n", "The code cells are usually full of Python source code, ready to run. Even if the libraries we're using are such as ```numpy``` and ```pandas```, the language we're sharing here is known as Python, named for Monty Python, the English comedy troupe.\n", "\n", "When you first boot into Python, in order to use it coversationally, such as in a console, or in a code cell, it probably has no knowledge of ```time``` as a topic, nor of ```datetime``` nor ```math``` -- these being the names of modules we might import.\n", "\n", " Expect to use the proleptic Gregorian calendar in the Standard Library, or maybe the Julian (\"when in Rome...\"). You will also have integer days from an epochal starting point as an option, with time slices down to the nanosecond in pandas. \n", "\n", "Seek 3rd party packages for other calendars. The Python ecosystem is well stocked." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import time\n", "from datetime import date\n", "\n", "# defining a type of object, of which we may have any number\n", "# anyone gets to be a me\n", "\n", "class Me(): # used below, to encapalsupate person data\n", " \n", " def __init__(self, nm : str, dob : str):\n", " self.name = nm\n", " struct = time.strptime(dob, '%d %B %Y')\n", " self.dob = date(*struct[:3]) \n", "\n", " def __repr__(self):\n", " return \"Me('{}', '{}')\".format(\n", " self.name, \n", " self.dob.strftime(\"%d %B %Y\"))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "YouTubeVideo(\"apACNr7DC_s\") " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RBF Me('R. Buckminster Fuller', '12 July 1895')\n", "CFG Me('Carl Friedrich Gauss', '30 April 1777')\n", "WOLF Me('Stephen Wolfram', '29 August 1959')\n", "GvR Me('Guido van Rossum', '31 January 1956')\n", "MC Me('Marie Curie', '07 November 1867')\n", "WD Me('Walt Disney', '05 December 1901')\n" ] } ], "source": [ "# all-star cast\n", "\n", "bucky = Me(\"R. Buckminster Fuller\", \"12 July 1895\")\n", "gauss = Me(\"Carl Friedrich Gauss\", \"30 April 1777\" )\n", "wolfram = Me(\"Stephen Wolfram\", \"29 August 1959\")\n", "guido = Me(\"Guido van Rossum\", \"31 January 1956\")\n", "curie = Me(\"Marie Curie\", \"7 November 1867\")\n", "disney = Me(\"Walt Disney\", \"5 December 1901\")\n", "\n", "# suggestive of what we might store in JSON (or other format)\n", "scenarios = {\"RBF\": bucky, \"CFG\": gauss, \"WOLF\": wolfram, \n", " \"GvR\": guido, \"MC\": curie, \"WD\": disney} # dict with Me type values\n", "\n", "for person in scenarios:\n", " print(\"{:5} {}\".format(person, scenarios[person]))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "import json\n", "\n", "def to_json(obj):\n", " return [obj.name, obj.dob.strftime(\"%d %B %Y\")]\n", " \n", "\n", "with open(\"timelines.json\", \"w\") as target:\n", " json.dump(scenarios, target, default=to_json)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's keep building that glossary..." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# alternative syntax for adding to a Python dictionary\n", "glossary = {}\n", "glossary[\"HTTP\"] = \"hypertext transfer protocol\"\n", "glossary[\"TLS\"] = \"Transport Layer Security, used to turn HTTP into HTTPS\"\n", "glossary[\"RSA\"] = \"public key crypto algorithm, named for collaborators Rivest, Shamir, Adleman\"\n", "glossary[\"PGP\"] = \"Pretty Good Privacy, RSA before the US patent expired, by Phil Zimmerman\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A Philosophy of Engineering\n", "\n", "At the time of this writing, the Silicon Forest continued to honor the memory of Linus Pauling by preserving his boyhood home on Hawthorne Boulevard. The organization supporting these preservation efforts was [the Institute for Science, Engineering and Public Policy](http://www.isepp.org/).\n", "\n", "Do engineers live by a code of ethics? Should they? ISEPP, a think tank, was looking into these questions, especially in light of Linus and Ava Helen Pauling's teachings and values.\n", "\n", "\"P1080361\"\n", "\n", "
\n", "Terry Bristol of ISEPP,
patron Doug Strain (ESI),
Julian Voss Andreae (sculptor)
in front of Alpha Helix\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Literary Sidebar\n", "\n", "*The School of Tomorrow* is in part inspired by the movie *The House of Tomorrow*, in turn based on [a book](https://www.nytimes.com/2010/04/04/books/review/Stace-t.html). As you explore this curriculum, [some of the connections](https://kirbyurner.medium.com/a-memo-to-trimtabbers-d94f8ef56f72?sk=a8f026893a508a806c7a0ee8aefb502c) will become clear.\n", "\n", "\"P1080807\"\n", "
\n", "House of Tomorrow DVD\n", "
\n", "
\n", "\"Steampunk\"/\n", "
\n", "Steampunk\n", "
\n", "
\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDBoYFhsaGRoeHRsfIycmIiIiIy0nLSgnLicxMC0nLS01PVBCNThLOS0tRGFFS1NWW1xbMkFlbWVYbFBZW1cBERISGRYZMBobMFc2NUBdV1dXV1dXV1dXV1ddV1dXV1dXV1dXV11XV1dXV1dXV1dXV1dXV1dXXVdXV11XV11XV//AABEIAWgB4AMBIgACEQEDEQH/xAAbAAEAAgMBAQAAAAAAAAAAAAAAAwYCBAUBB//EAEUQAAIBAgMCCQgIBgIBBQEAAAABAgMRBCExEkEFFyJRU2FxktIGEzJygZGhwQcUM1JisbLRFSNCwuHwFpNDY3OCovEk/8QAGAEBAQEBAQAAAAAAAAAAAAAAAAECAwT/xAAgEQEAAgIDAAIDAAAAAAAAAAAAARECMQMSISKxQVFx/9oADAMBAAIRAxEAPwD5+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgHFxjelw/en4AKeC4cXGN6XD96fgOVw55LV8DGnKrOlJTbS2HJ6K+d4oDiAk8y+oeZfUWpEYJPMvqHmX1CpEYJPMvqHmX1CpH3sAEAAAeNpamPnY5cpZ6CrTUouL0ZHDCxi42utm9vawJFWi1dSVu0eej95ZO3t5iH6lHZs231+yy+CMnhlZq7zltbsn1ZASedjnyllrnoeqava+fN/vaiGWEi9pNu0tffe3vZmqNrtPlNJX7N/xAklJLVpHkqkVe7Str1EdfDxqW2r5cxi8JF7V23tWvnzPICXzsedZZmW0rXvl+2pE8OrSV3aSzWXMlf4Hrw8dhw/pd/i7gSpmCrRy5SzyR7CFsr5ZW9xEsMss27Nvdnd3zy50BIq0XblLN2We8zII4SK2dXsu69yy+C9xOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBVY58pZZMzIHhYNNW1d38f3AlU096/1X/I889HPlLJ2faYLDpWs2rO+77tvyMXhFZq7z7Ms28susCV1oq/KWWvUPOx+8vf1X/IjlhYu927PdzXab+KPVhoqSlbNfla1gJHUVr3Vucecja91ZZ+wwdBeb2N1rGKwqStd2slu3aPQCRVYu2az0MoyTV07ohWGSae1LLXrzbz9rZJSp7Ksm3ncDMAACk/SZ9nhvXn+lF2KT9Jn2eG9ef6UWNiggA6MgAAAAD7oADk0AACPE1XCnKaV9lN200NahwgpKTkkknFJxe0pNq9llqjZr0tuEoXaUk1ddZqvgyP3pap2yttJW2rW3rUxPa/G8etep6WMhN2i7+x20vr2EEce3UlDZjeMmmlJt7KintJW60Z0sBGNRTu21lolutbJadQ+o5yaqSTlLay2dbJc2mSHyPiLhGm3DZvJTdk0nb0bnq4RpZWk3e1rRbvdNq2W+zMIcHRja05WUtpLLVq0t2+7FPg2MVFKTSg01lHcmknlnqPkvwSLH03a0tVtXs9LN582SZLRrxmm4vR2eVrM1FwVHLlyuk0nkmk01ql1mxhMKqSkk27u+5Z2S3dgjt+UmMfwnABtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA423Xm6jjW2XtyjCNo2y0V2dk0JcFQcptTqx2221GdldnPkiZ068eWMXf1aPB46bo0XLlTqScbvJZXzy7CWXCkYp7ad43T2c1dK7S9h7OnToUoQcdqmnblZ2vntMwjiKDjeVNLJq2zfJXyeX4Xl1HTCKxi3LOYnKZh7LhWKb5ErJSb0utmSi1a/WeV+FIqMrRakr5SVs1Has/YZOVFxk1TUnG91sb289xi8RSktrzalfKWV8ua9s92Rpn17iuEHTqxhsp7Sjne2srHv8Vp5JKV3orarlZ//Vns69BvlRTyt6N7xWvsVgpUtlbUIrabyUb6O19Od/EHrH+L09bTate9lpZPn5mjfRz9qLjCToQ5fPb7reeXMib69T6+6+q35r3klYn9toGt9ep5Wbd9LJu/YefX6dk7uzt/S9/+MxRbaKT9Jn2eG9ef6UW2WLThtQW0rpXvbW37lN+kaup08OtJRnLaXM9ksbLUYAG0AAAAAH3QAHJoAAAAAAAAAAAAAaGKxfm5JbKd1fPtIIcKp/0xI+F3y4ep82cWM+U+0CxLhFPcjNYy/wDTE4lNm3RYHUVf8KHn/wAKIIPIMCZ4j8MTD60/uxIpMjqVIrVpAbP1t/diPrf4YnJqcKUo6O/YQy4ZhuXxA7qxT+7EPFfhj7jgx4XW9JG1R4QjLUDp/W/wx9xlHE3/AKUaDxVNayWZNRrQl6LQG4qvUj3znUvcRRJEgM1PqQ2upHigZJAZLsR6t2W/5HiPVu7fkBmAAAAAAAAAAAAAirxg43qW2VnnoQNUNqUWopxzd+v/APX7+slxeGjVjsybWd8mY1MDCUtp3vm7p86S+SASdGzu4cp55rN3/dfAebo2T5Fm8nfV6e1nkOD6cXdX6s9PS07zPJcHwcYxzWzpn1qX5pAexp0Hkth3y1Xu+PxJXh4ZclZae+/5kGH4PjCzbbktXpe2mXUbgEfmI2irK0fR6srfkY/VKf3F/v8A+L3EwAhjhaataKVtD36rT02Fa1tN3MSgDB0YtbOyrXvbrve/vKT9JFGMaeHcUk3Od+vK5eSk/SZ9nhvXn+lFjaKCADogAAAAA+6AA5NAAAAAAAAAAAAACv8ADtXZqQX4Pmzj0ZXbZ1fKC3nYX+582crDrMDfpRJ6ZHTJY2A3IaCc7Jt5JGMXkcfh7HuKVOLtfOXYBr8JcNScnGnu/wB9hxK2Mle85tvmRFXrqKbWrObKpnd5sDfeKb006iPz9n6RpyqX7D2EOdgdSni2lm+wmhj8vyOS5WJaMm+oDo/WpN3uzoUMc8nv5zguLvk2zZpKyyf+ALdgeEm7KR2KVZPT3FKwtVxs9ew7fBVe89N2oFjizIhpPIkuB6Zc3b8jFM9W7t+QGYAAAAAAAAAAHG87iJuo41lG05RhHZjnbddnZNCXBUdqTVWrHbbbUZWV37DnyRM6dePKIu/q0VDH1Pq1Ko0pTlLZfva3dhlR4VuryjqoWUc85J7289H7iXzEKNKEFDbinZbVsm3+7MVWo25cIxknazjfS61t1M6YRWMRLlnN5TMaR/xOW3sOCuqmy3fLZztLtyeXUSy4STpVJwWcIqVpb01dGU7Rko+ZVtrkvLN2bv1aMyw86VSLUYq2TacbLNXz3M14z6gfCbjNqSVo3u1vtBSVuZ5ifCqcZOEZNqLlmlZWus8+dHn1qm42VJPZV3FpZLPa3dVmS7dLNQhGUnlbZtfnTy9tgMZcLQSb2Z2Tte2V1r7jei7pPnNWXm1KSlTirRUm7J65WPZ4+CWTvZpPVWzSftV9CL/W0DyMrpPnPSKFJ+kz7PDevP8ASi7FJ+kz7PDevP8ASixsUEAHRkAAAAAfdAAcmgAAAAAAAAAAAABWfKJfzYep82c3D6nS8o3/ADYep82cvDPMDpUzYpGvTZPTYG2tCkcN4/zlaVsty7EW7GV1GjNt25LPn2NrJyUlvv7wNavUbdiBRd3zbzCtN7QlVAzdVLQ8Ve+7I1rhSsB06NSKfK+Js0uW7p2SOPGpdm3TquK1tcDpN3uoZ21byMsPS5TtJddyHCVG46G5hpp77S/3IDbw65mjtcFy5T6zhKps2TsnzI6mEruO6+VsgLPQnkbCNDBz2o3WjN1ASI9W7t+RGmSLd2/IDMAAAAAAAAAAAABHWUWkp6Nq2ds75GtJ0FNp2TWbd9Hd5a66/E2qlJScb35Luu015cHU22+Vnf8Aqe+9/wBTAkqSpyV5STUc7301X7oxjOjHNSit+vVb8kjGngIqLjJt3ltX093+7zCHBcFe7bW5aWWd17dpgbLw8M+Ss7/F3fxEMPCLuo5koAiqYaEneUb6c+7Qx+qU/ur/AHeTgDGEVFJLRaGQAApP0mfZ4b15/pRdik/SZ9nhvXn+lFjYoIAOjIAAAAA+6AA5NAAAAAAAAAAAAACseUr/AJsPU+bOVhTpeVEv5tPP/wAf9zOTh5dYHUpyJ4I531uMd92aeJ4WlZ7Lt2AbflJUfmFFat39iKRO6ee6/wASwcNV5To06u5qztuZXqjA1ZPMypUnKVnlvfYbWGwO07vQ3ZKMbWWb+QGhVpKKvLLmj1GrUtqjOpGTm9rJ33nmIjZrmsBhTkkTp7S5mtDVRsYdXegG5g6tSMskzoPDLZc3J7TzSS+BHhleyu0jr0KUdFnzAcfg53m9p/udnztr2bVtyPa+FSrQ6/kdTA8Gpz2npzAdPgiL80m9+Z1YLIioxSVkTJ9YHmznvM6e7t+R4+0yju7fkBIAAAAAAAAAABxvOV5uo41tm05RhG0d2izOyaEuCobU2qlWO222oysrv2HPkiZ068eWMXf1aPCY6boUXLlTqScb6LK+eXUiSHCkbZpuyu3FXWbaWfsPZUoUKUIbG3BO2edm9Pjl7TzztG+zsRz5ElbetI6ZrU6YRWMRLnnMTlMxojwpG+jcWo2ss7tyX9pJPhCmoxlnaUdrTSN0rv3ohp1aLUX5uKut0b53Ssss82TQnRlkkrQV/RyS1yNMeof4hPY23DJzcUldtJXu2lrpuMo8K07b20k3bNZ207yMYYii4raglC21pezu007aae0ynUw6u/NptarYz35f/X4AHwknKCgnnJKV1pdyXvvFm+aFWVKE1/KWVnfZ0upSusupk0sbHZlKPK2Wk92rsSVhsg1Pr6ssntXScXlbS/5r3nscdHK6a9j15OSyz9IUW2ik/SZ9nhvXn+lFuhi4ylsxz1vqrNFK+kLFKpSw+Vmpzut65K15tSxstSAAbQAAAAAfdAAcmgAAAAAAAAAAAABS/LKbjXou3JdP47TOHiH/AC24PNFl8qoKU4J6On82Vm3m7wl7OtAROu5RT3NX+BrVqjTz0PKnJhKMtaby7HmiHb2o8nMDr8Hx89hKtJ63dvzXxOFCld7zseT0s6i6kzTxi2K84Lnv78wM6bssiN1km+dGMJGf1dNty0YGm051HJ5vcjzF0GoK2djdjBQXOYPMDkwpN7jdw0NmxvRw3VqSxwDYEuBSeVsjoxq+bf8ASu3I5mHqealaSO5h6KnG6lcCLAKVas6krbEfRtfN+0stNWSOdQw9nFJZHSiuoCanNkqqM14rnRLDPcBtQd9xIt3b8jXgieG7t+QEgAAAAAAAAAAAACLEOGz/ADGkr73bNZkFSNCM9lqO07yfVnq+bNkuKw/nFs7Vlvy/3/WR1eD4Sk5Nyu7vJ72kn+SAKlQytsdWfZ+yPI0aMHPlKz9JOWS5vyMafBsVK7bdpJx3Ws3b8xV4NjJ3Umrt335Nu6XbtP3i0pMqFKTbSi3d3359Z68JTf8AQv8Ab/u/eZUMPGnfZvnz8y0XxZKFRTw0JZuKeVvz/d+8fV4Wa2VZu9vbf8yUARSw8G7uKu/8fsvcefVKf3V/tv2XuJgBDDC04u6ikymfSPRjClhtlJcqX6UXkpP0mfZ4b15/pRY2iggA6IAAAAAPugAOTQAAAAAAAAAAAAArHlNG9Sn6nzZX8dR2oXS5Uc1+x1vKyvs4mlG9m6f9zNKFpR6wKrKuq1bZWk47LfWsxhaWw3FskeFdLHwX9LlePtRv8I4fZkp5K4GXA0dmpLmaZreUMNmtCf3o2v2P/JscFVOVe+SHlRC9KlNbn+YHJoVMzadSxyadWxP53IDdnK5lQp3Zo+e0OngZXA6FOlob2HpLVoio08joUKOQFeqKnVxDTyjuktzJo1nQq+bhJyadmdh8E0orkrNv4k2D4IhCW0828wN/Cu8U3ldG1FIjirEiYGSXWZKSWmhgmzJAbEWS0nf3/Iih2ktL5/ICYAAAAAAAAAAADwD0HmYzA9B5mMwPQeZjMD0HmYzA9B5mMwPSk/SZ9nhvXn+lF1zKV9Jf2eG9ef6UWNiggA6MgAAAAD7oADk0AAAAAAAAAAAAAKr5UUI1KlNS12Mn7WcmnSlDK97bzteUi/mU/U+bOaldAcjhynemqkfTptSXZvRkq8cVh9qC5Sya5mbeKpXUo2/pZW+AKrhXcHpNWfbuA6ODhs5ZbXMbXDlPawN+Y06MLV5cx2a1Hz2DrU7Z7Lt2gUIkSMvMTi1tRavzozdMDCDO7wXDQ5FKm20WPgum7adgHWw1IxxGPjCoqS139Rjh8YlUdKUXF7r6PrRrY3gOtVnKrCye5N5sDvYak2lfQ3dixy+AnV83s1otNb2dm3UBiomVupDLmMkuoBGPUe7J6uwyy5mBnDIkpfP5HkYqx7R+fyAmAAAAAAAAAAAA1pYeTUlldu6ft39nMBsghpUXGcpOV075c2ZE8LO0rTttSvfm1dvyA2wa08PJqauk5NPaWuqyJ4KySfMBkAAAAAAAAUn6TPs8N68/0ouxSfpM+zw3rz/SixsUEAHRkAAAAAfdAAcmgAAAAAAAAAAAABWvKL7Wnn/R82aEUbnlKv51P1P7madJAY1Ka1ORwbwX5ucqkrbTbsuZXO64ETjYDkV6ajXvY7eBaje+mpoY2nyos6eBhltPmA1HhYVozpyXJfo9T3FaxmAlTk4SVmvj1low09ZLS7aN6thKdeC2o3usnvQFJ4Oopy5W476w1RR/lx2m9xmvJxxntQqZdazO7hcNsRtr1gaeCwW3Tj9YprajpfcdNU1YkSMkgMYxM0j1RMkgMGj25keuAHkEZxjmV/hLE1KeLp3k1Tdst3WWGLvmBI9Dyll7/kepiPz+QFdl5eYJNr+bdO3of5H/ADzBf+r3P8nzSt9pP1n+Z4kR3jjiX06Plzg20kqt27eh/k3/APkWH/H3f8nzDgqntYikueRcp4WHo7cdrm1fwF+0mfHEO5/yOhzT7v8Ak8/5Lh+ap3V+5XK+ClFOSaklrbd7DRnJo059VvflRhv/AFO7/k3ODeFqWJclT2uTa91bW/7HzjFYlQWeu5c53fo7ryqVMU5c1Oy5s5EuF6TVrwAROM75TVvV/wAhh5PEJNq0na17LS+hHHHRaulJ5N5W9FWu9evtM/q2bbk7vW2SdtMjBYGCVry02df6eb4F8T1sxaaTWjPSFU5rJSiluWz/AJJYJ2zd32WIr0AAAAAAAApP0mfZ4b15/pRdik/SZ9nhvXn+lFjYoIAOjIAAAAA+6AA5NAAAAAAAAAAAAACteUNa1WnGyacPmzTowTWV0bnlDZVqbf3PmznPGRjvA2vNNLnI5JrU1P4i27I36FTaXKA1cRC8ew3MH9m11P8AI9rUo2yyPMJdO27NAaXB/oJHQwtZR5O45uBnZO+Vm/zJovlt3bA7MZJ5olpo52HxKi+fsOhRrqWQEjZ7GQuucXQGR6nmFLI9ugPUe7YTQyA4flTRvRU1rB39h0OCcR5zD05Xu7Z9pLjKCq0pw+9Fr4HG8k61lUov+l3XzAsiM1p7fkeHq09vyA+JVly5+s/zPYo9qrly9Z/mZwiR7sYbHB6l56Gze6u8v39p2XSaWuehyeDKzjiVGy5Vln1Z/M69asklZSc281lY6RHjz55Xm3aFOUqbSbyzsanCc1Tuo5vntpzG3QrTi4WhdS9Jq2VjT8opJVIJb6ab70l8jHJHxb4ankqVdxEm223dlv8Ao09PFdlP+4p9UuP0beliuyn/AHGMXTn0vZG8RBOznFP1kSA28TRqVW5StKVstnYV08nfPnv8iGFWvdbW1ayTtHXlZy01a3G/UxMIuzfNom9dNDD67T+916PTn7CoxoYhJNVJpO7ttNJ7N8m0Twqxl6Mk+x3MwRQAAAAAAAApP0mfZ4b15/pRdik/SZ9nhvXn+lFjYoIAOjIAAAAA+6AA5NAAAAAAAAAAAAACpeVkrVaef9HzZXtpXzZ1vLedq1K3R/3MrKm2wOpSqK+R2MNO0DhYVHWjVtAD2ePSbuxg8deRx613Jm7wfDNASYtyhnHS92ibg/ExqLmZsYmmtl3OTgp7NVq+QHaqRtoRXkneMnftNiSvE0oVtmVmB68TO/KbJtqpJcmbXtM5U1JXMqFKwEMZVdPOP3mzQVe+dTkkGJhsu6ZlhsW+cDp0K72kntdrN5u2rOdTqp7zOTfOBv7UbX2kiv04unjpVYWdOXpG64mKgBuzx7WiNjCVnUhdq2b/ACOao5o6OC9B+t8gPjtT05es/wAyanbe7Gniatpzt95/ma0pXNVT0TzVp36eGUalCupXi20+ZWy+Z1sTVis5SUUt5UsHW2bbTextZpdmv5Hfhi6clZyTW7sLDl2ubd3gjEwlFbM1Jpu8eb/cis8LcIedxFR3TUW4xtzL/N37ToYrhSnQw38trzjuo9Te8qKkxl74sZ9crhvyzLr9G8WpYm63U/7im8H45wluaet0fQPImptOu+qH9xjrTWfL3hayJ+cvkoW7WSgOKCFCW05bVtq20lmstNfYRrA8m22/RcW7LNN39m88q4hqco7Sjs2smvSTTu/95jXo46cktpqOTd2upNL23b7EX1PG8vOLJKFu1ksb2ztfqMaM24RbVm0m1zO2hmRQAAAAAAAApP0mfZ4b15/pRdik/SZ9nhvXn+lFjYoIAOjIAAAAA+6AA5NAAAAAAAAAAAAACi+XP29L/wBr+5lfpRRYPLh//wBFL/2v7mV6E7AbtKVjeUuScmNQ6FOd4ga0nymdPAM5dT0mbmCq2A3MdN7LNHg2nyjervaRjgqVgN/RHMrStI6VTQ5OJlmB0MNUujdpo5mBZ1FLICDGvkmhQk7mxjJ5Gth1mB16WaJFJo1qbsiSFS/MBsbStrmZU5KTzNVyseOfMB1VBK1jaoJW9vyOfgqt8nqdKnu7fkBwpeQ/B7bbpSu8/tJfuef8F4O6GX/ZP9yxgCuf8G4O6KX/AGT/AHPY+RHB60pTXZUn+5YgBXH5DcHvWlL/ALJ/uP8AgvB3Qy/7J/uWMAVxeQ3B6/8AFL/sn+50+C+BaGE2vMRcdq17yctL21fWdACwI3h4N3cIt9hIROpK/wBnJ9d4/uB7yIWXJjzLJHvnI5cqOemaNd0ZOUpbK5VspappW3f7myJcHtRsmm5Q2G3u61/u5FRuPDwebhG/YZQgoqySS5kR+dl0cvfH9yWLus1bqIr0AAAAAAAApP0mfZ4b15/pRdik/SZ9nhvXn+lFjYoIAOjIAAAAA+6AA5NAAAAAAAAAAAAADkcKcAUcXOM6u3eMdlbLSyvf5mn/AMNwvPW70f2LGAK9/wAQw3PV70f2M6fktQjo6veX7HeAHBl5KYd76vej+x7DyWoR0dXvL9jtOrFSUb5tNr2Wv+aE60Va71aS35vJActeT9Hnqe9EkOBaUdNv3o6W0udDaXOgOdLgim/v+9GvPyboN3fnO8jsqS50YfWIbThflLX29fsA51PgKlHTb96Jf4VT/H70b+0udHjqJNK+v7XA5k+AqUtfOe9CHAVGOm370dN1Ek22klq76HlOtGSundXa9qdmBo/wmn+P3o8XBFP8fvR0HUirZ6hTT0adsvaBoPgin+P3oLgmn+P3o6IA0qXB8IO62vejajG256/IzAAAAAAAAAAAAACJ0U3fal3mBhPES2pKMU9m17u2quR0sa5bL2bJyjF553cb+7Mn+rw1cU3pd5u3aPq8N0UrKyaytuyKnqUEXmF96feZKRQAAAAAAAApP0mfZ4b15/pRdik/SZ9nhvXn+lFjYoIAOjIAAAAA+6AA5NAAAAAAAAAAAAAAAABjUhtK3Wnu3O+8yAGlX4NhU2byleMXFWtv1drWvoe0uDYRkpK7kne9lfflppd3NwAc+XA9J75K+trZ5p55dXxZhLgeO0tmTUb3krLW6eVllmjpgDTw/B8aTTg81ZNtK7WeV7c7uRrginvlJ9uz+Hq/CvezoADnR4HpJ/1WyyysrSvlkI8DwVuVPK33d1rbvwo6IA0ocGU4qSTdpKKen9Mm+bPW3YiP+DU732pfDWyz06vizogDny4IpuNryTvdvK75Oza9tCengoxhspu15PSOrv1brmyAPErKx6AAAAAAAAAAAAAAAADywHoPLCwHoPLCwHoPLCwHoPLCwHoPLCwHpSfpM+zw3rz/AEoutilfSWv5WG9ef6UWNiggA6MgAAAAD7oADk0AACLFV/NU5TabUVdpWv8AEhhwhBpuV4rblBXTzcb7W78LJ69GNSEoSvsyVnZtZdqIZ4OGyo6R29tp53d9rV6Z5gP4jR+/8H79NP2GIx0IPZ1ldJpbr2/dZdZjLg2i1o/ZKSyzy10zeRnUwVOUnJqV203aUkm1azsnrkvcBHLhSmtnPWydt14trt0tkS1cbTg2pSs1rk/d29RDLgqi47Li9lO6W3KydrXWeT6/aSVMDTm22m29eU9bWvrrbK4HlfhGEIqSvK8ZSVk9I69hnDHUpNRU0272Wd8r39vJeXUzyWApuKi1Ky2v6pf1a53FLBU4S24pp53e097bzz55MDXfDFPZ2kpO8dpKzV+S5Z82SNlY6lyuWuS0pa5Xdl8U17CP+GUrWtK1renLSzVteaTPZYCGxOEclP0r3eTeeT0vdgZLhClpt/B9XV1r3owXCCc4xUXsy2dmV9U9HY9lwfSbeT9kmraPKzy9Fe4yWCp3hZPkKKjynpHTfmB5LhCinJOa5OuTy1v7Mnn1Hs8dTjKUZNpxte6ds1fXsIIcEwvNybkpttq7XpXvv3p25skT1sDTm3KSd3k+U1la1rX5gMK/CVOE9mV8pbMnZ2XIcr9asj2twhTjCpKN5+b9JR11tlfXNP3HtbAU6jbknnraUl/S47nzNoRwVNKUVdKTu0pPW9+fLMDGnwnTbkrtJSjFSeknJXyt2ihwlTqT2VdXScbpq99rLqfIZ4uC6GSUWkmrJSdk0rKyuZw4PpxkpJSurW5Ut21bK/45e8COnwrTbkpcnZck7tPNNrRaei32IkXCNFtpT0dtHrfZ5ufIPg+m47LTttSl6T1lfazvo7vLrPHwdSyylk21ypaue3z/AHlcDPD46lUdoSu7X0a5nv7V70YYjhKnCM87yhe8d+Su/wA1n1nkeDacbbO3Fq2anLRbOWvNCKMq2ApTcpSgtqSabzTs47L+AHkuE6KV3US13Pde+Vvwv3M9fCFPYnKL2tiLk0snZdvYYy4MpPayfKvtcqWd229/W/eZ/Uqdqis7VL7S2nv17LgYPhGnHKpeD1s03lnZ5dj9xJWx1Km7Tmk7X9mefwfuZ5UwFOTvJO9lH0msle2/8T955PAU5O7T9FRfKecVeyeeer94GM+E6f8AS9p3jlZrVrnX4kz18JUr+llnnZ63irWt+Je8jp8FU03faa5OytqXJ2Uks75vkrMyjwVRWikv/nLni+f8EfcBlHhKk36W9JOzzuk+bL0ke/xCls7SbklKMMk3nK1vzRiuDKSVrS78uZLn5kjzDcGxhBwcpSTkpatWad768/sAlWOpODnt8lWu7PfoKmOpRaUpWbV1k9He2fsZj/DqWw4bL2XbLaf9OivfRcxjPg6EpXbbioKKjd7r2d756gSUsfSm7Rmr2vbTm5+1e9Gwa8MFTjJyUc3a922skknZ77JZmwAAAAhjiYttZ3T2fz/YmI3QhnyVm7vtAxeJSbVn1dbulZe1oydZKG29LX5/yHmY58lZ69Z75qNtmytzARvFRUms8lfL2fuZPEJSUWmpO2Xbf9j3zMdNlaW9nN8EeqlFWyWX+/NgRvFxtfP0dr2WvcmhK6T5zHzUbWstLezmMoqysgPQAAAAApP0mfZ4b15/pRdik/SZ9nhvXn+lFjYoIAOjIAAAAA+6A+YcY+N6LD92fjHGPjeiw/dn4zk0+ng+YcY+N6LD92fjHGPjeiw/dn4wPpOKU3B+b9LLqyurpPntc508LiJJKb20m9WutJ6Lc2nz3KPxj43osP3Z+McY+N6LD92fjAulWOKpxjnJq6VoJO0VF6dei5rmx5rE+Zktr+Y2rO6Vlvt1FD4x8b0WH7s/GOMfG9Fh+7PxgXqpQxMrpu8Xe62lmnfJZZar3GEMLiYq0XsqzyTWuylm7FI4x8b0WH7s/GOMfG9Fh+7PxgXp0cXZ2m+q7jzu6eXM1bmsZYqhiJRhFO62ZKd2s7q2ZQ+MfG9Fh+7PxjjHxvRYfuz8YF6WHxVmlOytyc1eOTvfLPdbmJKNCs3NzbW1CSXK05Ta06nr1FB4x8b0WH7s/GOMfG9Fh+7PxgXaGExMdrZdtrZvyk9FTTfbyZ+9GxhMPWjUvOT2c27OPKdo5uy9b4FB4x8b0WH7s/GOMfG9Fh+7PxgXqNHF/ffta9Ln006iWhRr7MlN3TWkrO+Tuk1a27nKBxj43osP3Z+McY+N6LD92fjAu+HwmIpwhGGVlHazjm7wu7JcykusPCYhtSy85spbUnF8pXz00u7r/UUjjHxvRYfuz8Y4x8b0WH7s/GBd44XEx2th7Ke00tpN7TW92/2xNhqeJVSLnJuNkpK6tpK7t3PcyhcY+N6LD92fjHGPjeiw/dn4wLph1i5q+1KOvppLO0bZW09K/W8uqZ0MU36ckubajfVXvl63vRReMfG9Fh+7PxjjHxvRYfuz8YF5WHxTcXOTyadoyS/pt+bJMJTrqTUqknaC9Jf+RrOzsk46aFC4x8b0WH7s/GecY+N6LD92fjAvKhiduMdqaur3yaSTje7tq+Xb2HlDC4mKSTtlG72k25KMU23bNZS96KRxj43osP3Z+McY+N6LD92fjAvVKlik43ldJpyvJZ5K6ul2+/3dSOivkz5jxj43osP3Z+McY+N6LD92fjA+ng+YcY+N6LD92fjHGPjeiw/dn4wPp4PmHGPjeiw/dn4xxj43osP3Z+MD6eD5hxj43osP3Z+McY+N6LD92fjA+ng+YcY+N6LD92fjHGPjeiw/dn4wPp4PmHGPjeiw/dn4xxj43osP3Z+MD6ec2niMS8VUh5tOgmrTfJtyVe33syhcY+N6LD92fjPOMfG9Fh+7PxgfSMXXlDZ2Ve7to3+WhDDF1Mrw3rc8r3uvZZZ9Z894x8b0WH7s/GOMfG9Fh+7PxlR9Bjipyhd8nlxi2la17XWfW7XMVjZuUYtWTck3syVknJXu8lkl7z5/xi4y1vNYa3NsT8Z6/pGxnRYbuz8ZFfSsJNypQlLVxTZMfL+MfG9Fh+7PxnvGPjeiw/dn4wPp4PmHGPjeiw/dn4xxj43osP3Z+MD6eD5hxj43osP3Z+McY+N6LD92fjA+nlJ+kz7PDevP9KONxj43osP3Z+M5XDnlTXx0acasKUVBtrYUlqrZ3kywOeCDzz6h559RrtCUnBB559Q88+odoKTgg88+oeefUO0FIwAYUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/2Q==", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "YouTubeVideo(\"UpEJysjcLBY\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Undercover\n", "
\n", "Occupy Portland, 2011\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Our Tools\n", "\n", "By the early 21st Century, many schools were using various Jupyter Notebook like tools. One of most impressive was [SAGE](http://www.sagemath.org/), which allowed cloud computing including access to computer algebra systems.\n", "\n", "[The edu-sig archives](https://mail.python.org/mailman/listinfo/edu-sig) at Python.org is a good place to search for insights into how some high school and college teachers were using such tools, including of course Jupyter Notebooks.\n", "\n", "Jupyter Notebooks may be rendered in several ways:\n", "\n", "* locally through a webserver, running on localhost:8888 (most likely), no internet access required\n", "* as read-only through a displayer program named nbviewer\n", "* rendered as read-only on a host website such as Github\n", "* as [interactive in the cloud](https://mybinder.org/), thanks to containerization and microservices\n", "\n", "Check out [this notebook in nbviewer](https://nbviewer.jupyter.org/github/4dsolutions/School_of_Tomorrow/blob/master/School_of_Tomorrow.ipynb)!\n", "\n", "Of the above, the first option is the most preferred, because \"interactive\" means only \"the ability to edit and run code cells\" where \"cell\" means some rectangle of code or text, such as you are reading now (if reading a Jupyter Notebook). \n", "\n", "If you're running Jupyter Notebook on localhost, you'll be able to start new notebooks from scratch, as well as completely overhaul the ones in your personal stash." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Our Toys\n", "\n", "The Oregon Curriculum Network is not a retailer or direct marketer of educational supplies. When you visit your medical doctor, you may get a prescription for a specific pill, but you buy those pills from a pharmacy not directly from the doctor. The doctor may give you free samples in some cases.\n", "\n", "Some of you are teachers and are planning on adapting Oregon Curriculum Network materials for your own use.\n", "\n", "Toys might include construction kits such as [Zometool](https://www.zometool.com/) and [Lux Blox](https://www.luxblox.com/).\n", "\n", "\"Assembling\n", "\n", "
\n", "C6XTY at OCN HQS\n", "
" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "glossary.update({\n", "\"CSV\" : \"comma-separated values, one of the simplest data sharing formats\",\n", "\"DOM\" : \"the Document Object Model is a tree of graph of a document in a web browser\",\n", "\"HTML\" : \"hypertext markup language, almost an XML, defines the DOM in tandem with CSS\",\n", "\"JavaScript\" : \"a computer language, not confined to running inside browsers but happy there\",\n", "\"Pascal\" : \"an early computer language, later commercially available as Delphi from Borland\",\n", "\"json\" : \"JavaScript Object Notation is a way to save data (compare with XML)\",\n", "\"localhost\" : \"the IP address of the host computer: 127.0.0.1\",\n", "\"port\" : \"internet services connect through IP:port addresses, JN usually on port 8888\",\n", "\"web browser\" : \"HTTP client, sends requests, gets responses\",\n", "\"web server\" : \"accepts and processes (or rejects) HTTP requests, sends responses\",\n", "\"XML\" : \"a markup language using pointy brackets, reminiscent of HTML, for structured data\",\n", "\"SGML\" : \"a parent specification behind what eventually became XML\"\n", "})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python is a language of objects, where objects have type or kind, species. Depending on the species of an object, it will have varying capabilities. Dog objects bark. Car objects brake. Python is one of many computer languages we consider \"object oriented\". \n", "\n", "### Literary Sidebar\n", "\n", "HTML didn't come out of nowhere. Imagine storing all the parts for an airplane in a computer. How would you do that. JSON is one answer. XML is another. XML grew out of an older [SGML](https://en.wikipedia.org/wiki/Standard_Generalized_Markup_Language) where ML stands for \"markup language\". In HTML, we use pointy brackets as a kind of punctuation. \n", "\n", "The poet [Gene Fowler](https://www.amazon.com/Waking-poet-Acquiring-usually-talents/dp/0941386007) used to say we should teach HTML right along with all the rest of the language, meaning periods, commas, semi-colons and like that (grammar and punctuation). He wrote a text processor in Pascal showing the kind of thing he meant. He was [a prisoner in San Quentin](http://www.bigbridge.org/BD-GF-B.HTM) before he discovered how to \"re-genius\" himself.\n", "\n", "### Sharing Data\n", "\n", "We'll be sharing a lot of data sets in this school. We consume data produced by others, and we publish data for others to use. \n", "\n", "Data needs to be stored in some structured way, in files and databases. Even pictures, movies and music are data. We package up data in files and stream these files to one another over the internet or by some other means. Computer programs are also stored as data files, usually in some standard text encoding such as UTF-8.\n", "\n", "In the Glossary above, created in the Python language as a \"dictionary\", you will find at least three data storing and streaming formats defined: [CSV](https://en.wikipedia.org/wiki/Comma-separated_values), [JSON](https://en.wikipedia.org/wiki/JSON) and [XML](https://en.wikipedia.org/wiki/XML).\n", "\n", "The above data structure looks a lot like JSON by the way. Let's see that using Python's json library:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\"HTTP\": \"hypertext transfer protocol\", \"TLS\": \"Tr ... came XML\"}\n" ] } ], "source": [ "import json # Python has a huge library with hundreds of modules\n", "send_over_web = json.dumps(glossary)\n", "print(send_over_web[:50], \"...\", send_over_web[-10:]) # first 50 chars is enough, then the last 10." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "str" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(send_over_web) # what type of object is this? Number? String? Other kind of object? Dog?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### RECAP\n", "\n", "We just asked to have our ```glossary``` object turned into a string (a sequence of characters, like keyboard characters), but formatted as JSON. That ended up looking not much different from the ```glossary``` object in the first place, as defined in the code cell above.\n", "\n", "When a web browser asks an IP:port address for an HTTP response, by means of an HTTP request, it may get back JSON as payload. Or it may get back HTML, its bread and butter. Web browsers are all about combining the HTML + CSS in an HTTP response, and turning that into a formatted and typeset looking web page, such as you're likely looking at right now." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets save our JSON as a text file, for retrieval in [a next notebook](dataviz.ipynb)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "with open('glossary.json', 'w') as output:\n", " json.dump(glossary, output)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Computer Programming Interlude\n", "\n", "Lets continue to build or sense of how to slice and dice time using a much trickier coordinate system than most. Keeping track of date and time is non-trivial. Our tools took many programmer hours to build. Keep looking for bugs. \n", "\n", "Remember that some concepts we seek to track, such as whether [daylight savings time](https://youtu.be/w45QkL9blG4), or standard time is in effect, may depend on datasets we have not updated recently." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name: R. Buckminster Fuller DOB: 1895-07-12 Centennial: 1995-07-12\n", "Name: Carl Friedrich Gauss DOB: 1777-04-30 Centennial: 1877-04-30\n", "Name: Stephen Wolfram DOB: 1959-08-29 Centennial: 2059-08-29\n", "Name: Guido van Rossum DOB: 1956-01-31 Centennial: 2056-01-31\n", "Name: Marie Curie DOB: 1867-11-07 Centennial: 1967-11-07\n", "Name: Walt Disney DOB: 1901-12-05 Centennial: 2001-12-05\n" ] } ], "source": [ "from datetime import timedelta # for time deltas (needed for size deltas)\n", "\n", "for person in scenarios.values():\n", " # cent = person.dob + timedelta(days=365 * 100) <-- tempting but wrong\n", " cent = date(person.dob.year + 100, person.dob.month, person.dob.day)\n", " print(\"Name: {:20} DOB: {} Centennial: {}\".format(\n", " person.name, person.dob, cent))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# help(timedelta)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.3" } }, "nbformat": 4, "nbformat_minor": 4 }