On Mon, May 25, 2015 at 12:06 AM, Rustom Mody <rustompmody@gmail.com> wrote:
Context:  A bunch of my students will be working with me (if all goes according to plan!!)to hack on/in CPython sources.

One of the things we would like to try is a framework for CS101 [Intro to programming]

You said framework, and I thought 'web framework' and 'testing':

* Bottle is great; simple; single file; and WSGI-compatible
* TDD! from the start! https://westurner.org/wiki/awesome-python-testing#web-frameworks
 

So for example beginners get knocked out by None 'disappearing' from the prompt
Correctable by

>>> import sys
>>> sys.displayhook = print

Now of course one can say: "If you want that behavior, set it as you choose"
However at the stage that beginners are knocked down by such, setting up a pythonstartup file is a little premature.

So the idea (inspired by Scheme's racket) is to have a sequence of 'teachpacks'.
They are like concentric rings, the innermost one being the noob ring, the outermost one being standard python.

In terms of a curricula graph, are they flat or nested dependencies?
 

Now note that while the larger changes would in general be restrictions, ie subsetting standard python, they may not be easily settable in PYTHONSTARTUP.
eg sorted function and sort method confusion
extend/append/etc mutable methods vs immutable '+'

I add tab-completion in ~/.pythonrc (and little more; so that my scripts work without trying to remember imports etc) (see: gh:westurner/dotfiles/etc/.pythonrc; symlinked in by gh:westurner/dotfiles/scripts/bootstrap_dotfiles.sh).

dotfiles.venv.ipython_config.py (and conda) make navigating VIRTUAL_ENVs (that are/can be isolated from concurrent changes in system packages) easier for me.
 
Depending on your setup, managing that many envs is probably easier with conda and/or Docker.

https://github.com/ipython/ipython/wiki/Install:-Docker



Now different teachers may like to navigate the world of python differently.
So for example I prefer to start with the immutable (functional) subset and go on to the stateful/imperative.  The point (here) is not so much which is preferable so much as this that a given teacher should have the freedom to chart out a course through python in which (s)he can cross out certain features at certain points for students.  So a teacher preferring to emphasise OO/imperative over functional may prefer the opposite choice.

https://www.reddit.com/r/learnpython/wiki
https://www.reddit.com/r/learnpython/wiki/books
https://github.com/scipy-lectures/scipy-lecture-notes (Sphinx)
https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks
  * https://github.com/jrjohansson/scientific-python-lectures/ (IPython)
 
There was also talk of generating EdX courses from IPython notebooks over on ipython-dev: http://mail.scipy.org/pipermail/ipython-dev/2015-February/015911.html


[Aside:  ACM curriculum 2013 juxtaposes OO and FP as absolute basic in core CS
https://www.acm.org/education/CS2013-final-report.pdf
pgs 157,158
]

So the idea is to make a framework for teachers to easily configure and select teachpacks to their taste.

How does that sound?

Rusi

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/