{ "metadata": { "celltoolbar": "Slideshow", "name": "", "signature": "sha256:9c7a6437ce1617299d2c9f1910cdab975e7533861cd779ffaa94cdb64d4af64a" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "%autosave 300\n", "from IPython.display import display\n", "from IPython.display import Image, HTML\n", "from IPython.display import IFrame,YouTubeVideo\n", "display(HTML(open('style.css').read()))" ], "language": "python", "metadata": { "internals": { "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "slide" } }, "outputs": [ { "javascript": [ "IPython.notebook.set_autosave_interval(300000)" ], "metadata": {}, "output_type": "display_data" }, { "output_type": "stream", "stream": "stdout", "text": [ "Autosaving every 300 seconds\n" ] }, { "html": [ "\n" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": { "internals": { "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "slide" } }, "source": [ "

Conf\u00e9rence PYconFR 2014

\n", "
\n", "\"PYconFR\"/\n", "
\n", "
\n", " \n", "
\n", "

pour l'enseignement

" ] }, { "cell_type": "markdown", "metadata": { "internals": { "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "subslide" } }, "source": [ "

[Marc BUFFAT](http://ufrmeca.univ-lyon1.fr/~buffat)

\n", "\n", "

Professeur en m\u00e9canique des fluides \u00e0 l'UCB Lyon 1

\n", "

Responsable Master MEGA 1ere ann\u00e9e

\n", "

Directeur de la FLMSN

\n", "[\"F\u00e9d\u00e9ration Lyonnaise de Mod\u00e9lisation et Sciences Num\u00e9riques\"](http://FLMSN.univ-lyon1.fr)\n", "\n", "

marc.buffat@univ-lyon1.fr

\n", "\n", "

ufrmeca.univ-lyon1.fr/~buffat

\n", "\n", "

mbuffat

\n" ] }, { "cell_type": "markdown", "metadata": { "internals": { "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "slide" } }, "source": [ "

Contexte

\n", "\n", "

Simulation num\u00e9rique

\n", "Outil essentiel de la recherche et de l'innovation\n", "\n", "

Formation au HPC

\n", "Enjeu majeur dans les ann\u00e9es \u00e0 venir pour le HPC (rapport CSCI 2013)\n", "\n", "

Formation des \u00e9tudiants

\n", "Importance de la **formation initiale** en 1er cycle d'universit\u00e9" ] }, { "cell_type": "markdown", "metadata": { "internals": { "slide_type": "subslide" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "

Enseignement en science

\n", "
*Mathematics (and Science) is not a spectator sport*
\n", "\n", "##Constat sur l'enseignement en Licence\n", "\n", "- \u00e9tudiants de formation tr\u00e8s disparate avec un manque de m\u00e9thode de travail\n", "- peu de ma\u00eetrise de l'outil math\u00e9matique, et de la programmation scientifique\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_number": 5, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "##Besoin en enseignement\n", " - apprentissage par la pratique\n", " - en dehors des heures encadr\u00e9es\n", " - utilisation du Web" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 5, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "

Pourquoi

\n" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 7 }, "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "

Suivre une mode

\n", "\n", "- **Python passe en t\u00eate des langages d'apprentissage** et d\u00e9tr\u00f4ne Java (enqu\u00eate dans les universit\u00e9s US, Le Monde Informatique Juillet 2014)" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "

Caract\u00e9ristiques du langage

\n", "\n", "- Python est un **excellent langage** pour l'apprentissage de la programmation scientifique, qui remplace avantageusement **MatLab**\n", "\n", "- tr\u00e8s large domaine applicatifs" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "

en science

\n", "\n", "## Projet \"NadiaSpectral\" \n", "(M. Buffat, A. Cadiou, L. Le Penven)\n", "\n", "- simulation HPC en CFD sur $O(10^{6})$ coeurs\n", "- 35 000 lignes de code en C++ (noyau de calcul)\n", "- 20 000 lignes de code en Python (analyse, visualisation InSitu)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "YouTubeVideo('R1I9-vuv1GU',width=600,height=400)" ], "language": "python", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "-" } }, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "slide" } }, "source": [ "

Pourquoi

\n", "\n", "

Environnement de programmation

\n", "\n", "- Python, R, Ruby, bash\n", "\n", "

Utilise un navigateur Web

\n", "\n", "- Markdown + HTML \n", "- texte + $\\LaTeX$ + image + vid\u00e9o\n", "\n", "

Python scientifique

\n", "\n", "- Matplotlib, Numpy, Scipy\n", "\n", "###
Notebook Ipython: \"Swinging pendulum\" et \"Elements finis\"
" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "

IPython Notebook at SciPy 2014

\n", "\"Teaching Numerical Methods with IPython Notebooks\", by Aron Ahmadia and David Ketcheson\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "YouTubeVideo('L-caFdJMR9E')" ], "language": "python", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "-" } }, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "

GitHub IPython notebook

\n", "\"12 steps to Navier-Stokes\" par Lorena A. Barbara" ] }, { "cell_type": "code", "collapsed": false, "input": [ "IFrame(\"http://lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes/\",width=\"100%\",height=400)" ], "language": "python", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "-" } }, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "

IPython notebook in MOOC

" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "-" } }, "source": [ "\"MOOC\"" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "slide" } }, "source": [ "

MOOC INPROS

\n", "
\"INPROS\"
\n", "\n", "## INtroduction \u00e0 la PROgrammation Scientifique##\n", "\n", "- Projet de FLOT http://INPROS.univ-lyon1.fr\n", "\n", "## Projet collaboratif\n", "- objectif: apprentissage d'une m\u00e9thodologie en programmation scientifique\n", "- cours d'initiation (public tr\u00e8s large)\n", "- cours interactif avec mise en pratique\n", "- accessible \u00e0 partir d'un simple navigateur\n", "- utilise Webwork, Sagecell, Ipython Notebook" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "subslide" } }, "source": [ "

dans INPROS

\n", "\n", "### Remplace une pr\u00e9sentation statique \n", "- style beamer $\\LaTeX$ ou powerpoint\n", "\n", "### Permet des pr\u00e9sentations plus interactives\n", "\n", "- ex\u00e9cution de code en live\n", "- configuration avec CSS + HTML 5\n", "- moins formel\n", "\n", "### Source unique\n", "\n", "- video\n", "- notes de cours en PDF\n", "- notebook en HTML" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "subslide" } }, "source": [ "

Le\u00e7on avec

\n", "\n", "

\n", "Cours sur la pr\u00e9cision et la validation\n", "

\n", "

\n", "

\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "

SageCell

\n", "
" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "-" } }, "source": [ "

serveur Sage

\n", "\n", "- accessible en ligne (navigateur Web)\n", "\n", "

\"Python Scientifique\"

\n", "\n", "- ideal pour l'apprentissage de la programmation \n", "\n", "

cellule sage

\n", "\n", "- inclusion simple dans une page Web" ] }, { "cell_type": "heading", "level": 2, "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Ex\u00e9cution on-line des exemples" ] }, { "cell_type": "code", "collapsed": false, "input": [ "IFrame(\"http://inpros.univ-lyon1.fr/mod/page/view.php?id=74\",width=\"100%\",height=500)" ], "language": "python", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "-" } }, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "" ] } ], "prompt_number": 19 }, { "cell_type": "heading", "level": 2, "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Ex\u00e9cution on-line de programmes" ] }, { "cell_type": "code", "collapsed": false, "input": [ "IFrame('http://inpros.univ-lyon1.fr/mod/page/view.php?id=3',width=\"100%\", height=500)" ], "language": "python", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "-" } }, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 20, "text": [ "" ] } ], "prompt_number": 20 }, { "cell_type": "heading", "level": 2, "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Validation on-line de programmes" ] }, { "cell_type": "code", "collapsed": false, "input": [ "IFrame('http://inpros.univ-lyon1.fr/mod/page/view.php?id=95',width=\"100%\", height=500)" ], "language": "python", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "-" } }, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "slide" } }, "source": [ "

MOOC InProS

\n", "
\n", "\"INPROS\"/\n", "
\n", "\n", "\n", "### ouverture en F\u00e9vrier 2015 (actuellement en $\\beta$-test \u00e0 Lyon 1)\n", "\n", "

http://INPROS.univ-lyon1.fr

\n", "\n", "

[MOOCINPROS](http://twitter.com/MOOCINPROS)

\n", "\n", "

[MOOCINPROS](https://www.facebook.com/MOOCINPROS)

\n", "\n", "\n", "\"Licence
" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 8, "slide_type": "subslide" }, "slideshow": { "slide_type": "slide" } }, "source": [ "

Conclusion

\n", "\n", "

Ipython formidable outil

\n", "\n", "- pour l'enseignement \n", "\n", "- pour la pr\u00e9sentation de r\u00e9sultats" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 31, "slide_helper": "subslide_end" }, "slide_helper": "subslide_end", "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "

Am\u00e9lioration

\n", "\n", "- qques bugs: nconvert, live reveal\n", "\n", "

Besoin: serveur IPython avec partage des notebooks

\n", "\n", "### [Sage Math Cloud](https://cloud.sagemath.com/) [JUPYTHER](https://github.com/jupyter)\n", "\n", "
[serveur Jupiter Meca](https://ipythonmeca.univ-lyon1.fr:443)
" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 31, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "subslide" } }, "source": [ "

Remerciement

\n", "\n", "

D\u00e9partement de M\u00e9canique:

\n", "Delphine Doppler, Claude Inserra, Yannick Rozenberg, Pierre Valiorgue, Ivana Vinkovic,....\n", "\n", "

Projet Mooc **INPROS**:

\n", "Violaine Louvet, Michel Kern, Anne Cadiou, Loic Gouarin, Laurence Viry\n", "\n", "

**IPython**:

\n", "P\u00e9rez, Fernando and Granger, Brian E.\n", "\n", "

**SageCell**:

\n", "Jason Grout, department of Mathematics and Computer Science, Drake University, Des Moines" ] }, { "cell_type": "markdown", "metadata": { "internals": { "frag_helper": "fragment_end", "frag_number": 31, "slide_helper": "subslide_end", "slide_type": "subslide" }, "slide_helper": "slide_end", "slideshow": { "slide_type": "slide" } }, "source": [ "
\n", " \n", "
\n", "

Power by

" ] } ], "metadata": {} } ] }