Hi Wes, I’ll respond where I can add something useful (hopefully).
> #### Questions for comprehension: > > ##### When is it better to write code as a module and/or a Jupyter notebook? > > (Note that e.g. the fastai/nbdev template repo makes it easy to mark .ipynb > notebook input cells as for export to a .py python module) I suppose this varies from user to user and application to application. Personally, I like notebooks when doing data-oriented work, typically involving reading data files, cleaning them, processing the data in some way, and producing plots or writing files as outputs. I like being able to describe the steps of the analysis, as well as assumptions I’m making, and having the option to give links to relevant sources online (journal articles, websites, or whatever). I also do write scripts as well. Typically, these are things where I am computation oriented, such as solving equations numerically, or small tools I want to be able to use from a command line interface on a computer cluster, for example. Notebooks could also be used for this kind of task, but I (personally) don’t see the benefit. > ##### How do I test a notebook and a module? > - module: pytest > - notebook: > - nbdev > - Pytest + Jupyter-specific plugin > - `assert` statements to verify assumptions This is indeed a good question. For our course we use a combination of nbgrader (which is designed for automating grading of notebook assignments) and tests the students can see in individual code cells (using nose, for example). We introduce assertions as well, but we don’t have the students do much with them in our introductory course (it only runs for 7 weeks). Somehow, I feel like I’ve not come across nbdev before… That looks like it indeed could be a useful thing for us to consider. > ##### When I share my repo, will people be able to run the code? > > If your dependencies are specified in REES-compatible way (/requirements.txt, > /environment.yml), users and BinderHub can use repo2docker to generate a > container with a current - and thus security-updated - version of JupyterLab > and also the [exact versions of] the software dependencies you've specified. I think some of my colleagues have used repo2docker previously, but that should be possible as well for our course materials (we provide Binder links and use the requirements.txt file for the Binder instances). On the course website we’re using two options as quick ways to make the lessons interactive: Binder and Thebelab. At the top of the page there is a rocket ship icon, and you can use it to open the lesson you’re viewing on Binder, or use the “Live code” option to start a Python kernel using Thebelab. This allows the code cells on the course page itself to be interactive, which is a quick way to work through a lesson and test things. Of course, you’ll lose your work if the kernel dies, but the Binder option does allow you to download the notebooks. > #### add'l resources > https://github.com/quobit/awesome-python-in-education > > https://github.com/quobit/awesome-python-in-education#jupyter > > - "jupyter-education: Teaching with Jupyter Notebooks mailing list" > https://groups.google.com/forum/#!forum/jupyter-education > > - github.com/jupyter4edu - best practices and content for teaching with > Jupyter notebooks > - jupyter4edu/jupyter-edu-book - open source of the "Teaching and Learning > with Jupyter" book > - https://jupyter4edu.github.io/jupyter-edu-book/ - "Teaching and > Learning with Jupyter" book These are great. Some I have seen, but others not. Thanks! > https://classroom.github.com/ can run tests for students in order to "grade" > > There's probably a way to run nbgrader "tests" with e.g. GitHub Classroom CI? We do indeed use GitHub Classroom, but we have not yet found an easy way to run the nbgrader tests using their CI system. Perhaps it is possible, but for now we are using our own “graderbot”, which pulls the student repos, clones the solution repositories, runs nbgrader, and posts a feedback summary in the README.md file for each student’s exercise repo. The graderbot is currently in a private repository since we have students’s GitHub usernames in some of the files used by it and we want to protect their privacy. If anyone would like, I can make a public version without the personal info. > FWIU, you can install Docker and/or Conda on an ARM64 e.g. Raspberry Pi with > Miniforge now, because the conda-forge repos have ARM64 packages now (whereas > if you install from PyPI on an ARM64 box, you'll be waiting for builds to > compile because there are very few ARM64 wheels on PyPI). > > Mamba (c++ port of the slow parts of conda) is much faster on a Pi, as well. Very cool. It’s really quite impressive what the Raspberry Pi machines can do in such small packages. Thanks again for the input! Best, Dave -- David M. Whipp, Professor Institute of Seismology | Dept. of Geosciences and Geography | Univ. of Helsinki Seismologian instituutti | Geotieteiden ja maantieteen osasto | Helsingin yliopisto +358 (0)2 941 51617 | www.helsinki.fi/en/researchgroups/geodynamics | twitter.com/HUGeodynamics > On 2. Feb 2021, at 19.56, Wes Turner <wes.tur...@gmail.com> wrote: > > > > On Tue, Feb 2, 2021, 11:30 kirby urner <kirby.ur...@gmail.com> wrote: > > Hi Dave -- > > Thank you for this excellent online course material re Python and the > geosciences. > > I've added a section to my evolving "elite school" repo listing courses and > curriculum > using Jupyter Notebooks, as I want to impress upon my students that this is > how > some of the better schools / teachers are currently sharing material. > > I want to impress them with the fact that we're learning some best practices. > > https://nbviewer.jupyter.org/github/4dsolutions/elite_school/blob/master/Home.ipynb > (scroll to bottom for a link to your GeoPython). > > https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks > > > In contrast, many high schools do nothing with Jupyter Notebooks. Given our > "elite school" status, it's legit to point this out. Parents like to know > what their > kids are learning is "ahead of the curve" vis-a-vis your run of the mill high > school. > > #### Questions for comprehension: > > ##### When is it better to write code as a module and/or a Jupyter notebook? > > (Note that e.g. the fastai/nbdev template repo makes it easy to mark .ipynb > notebook input cells as for export to a .py python module) > > ##### How do I test a notebook and a module? > - module: pytest > - notebook: > - nbdev > - Pytest + Jupyter-specific plugin > - `assert` statements to verify assumptions > > ##### When I share my repo, will people be able to run the code? > > If your dependencies are specified in REES-compatible way (/requirements.txt, > /environment.yml), users and BinderHub can use repo2docker to generate a > container with a current - and thus security-updated - version of JupyterLab > and also the [exact versions of] the software dependencies you've specified. > > #### add'l resources > https://github.com/quobit/awesome-python-in-education > > https://github.com/quobit/awesome-python-in-education#jupyter > > - "jupyter-education: Teaching with Jupyter Notebooks mailing list" > https://groups.google.com/forum/#!forum/jupyter-education > > - github.com/jupyter4edu - best practices and content for teaching with > Jupyter notebooks > - jupyter4edu/jupyter-edu-book - open source of the "Teaching and Learning > with Jupyter" book > - https://jupyter4edu.github.io/jupyter-edu-book/ - "Teaching and > Learning with Jupyter" book > > > The workflow I encourage with my students is to establish their own presence > on Github and to learn how to clone a repo so they can run the Notebooks > locally (vs in the cloud). > > https://classroom.github.com/ can run tests for students in order to "grade" > > There's probably a way to run nbgrader "tests" with e.g. GitHub Classroom CI? > > Since I expect them to make Notebooks, I want them > to have complete localhost control. > > FWIU, you can install Docker and/or Conda on an ARM64 e.g. Raspberry Pi with > Miniforge now, because the conda-forge repos have ARM64 packages now (whereas > if you install from PyPI on an ARM64 box, you'll be waiting for builds to > compile because there are very few ARM64 wheels on PyPI). > > Mamba (c++ port of the slow parts of conda) is much faster on a Pi, as well. > > ```bash > conda install -c conda-forge -y mamba; > mamba install -c conda-forge python=3.8 jupyterlab pandas dask matplotlib > seaborn altair > ``` > > You can use `jupyter console` to run Jupyter kernels for additional languages > like JS and TS in a REPL just like IPython: > > ```bash > mamba install -c conda-forge -y jupyter-console jupyter-client nodejs > npm install -g ijavascript > npm install -g itypescript > ijsinstall > its --install=local > jupyter kernelspec list > jupyter console --kernel python3 > ``` > > > Kirby > > _______________________________________________ > Edu-sig mailing list -- edu-sig@python.org > To unsubscribe send an email to edu-sig-le...@python.org > https://mail.python.org/mailman3/lists/edu-sig.python.org/ > Member address: wes.tur...@gmail.com _______________________________________________ Edu-sig mailing list -- edu-sig@python.org To unsubscribe send an email to edu-sig-le...@python.org https://mail.python.org/mailman3/lists/edu-sig.python.org/ Member address: arch...@mail-archive.com