Mostrando entradas con la etiqueta python. Mostrar todas las entradas
Mostrando entradas con la etiqueta python. Mostrar todas las entradas

sábado, 22 de octubre de 2011

Nuevo impulso para pyVE


El grupo de pythonistas pyVE parece estar ganando un nuevo impulso, un impulso que -esperemos- sirva para consolidar una comunidad de práctica alrededor del lenguaje de programación Python.
Existen otros grupos e iniciativas alrededor de Python en el país, tales como Python en Caracas. Es algo que ha estado dando vueltas, llama mucho la atención que los dominios python.org.ve, python.com.ve, python.net.ve y python.info.ve estén cada uno registrados por personas distintas, probable síntoma de un deseo inconcluso.
Algo que tiene el lenguaje de programación Python es que no ha requerido un enorme aparato de mercadotecnia para ir ganando más y más simpatizantes, recuerdo que cuando se cambio la imagen del portal oficial de Python por uno más atractivo, muchas personas se quejaron, Python era un lenguaje de hackers (en el sentido de la ética hacker, no el de hollywood) y esforzarse por tener una imagen más amigable para las corporaciones no tenía mucho sentido.
Luchamos en Venezuela sin duda contra la ausencia casi total de una política tecnológica propia, en particular en las universidades. Python es una herramienta pensada para satisfacer a las personas, no a las empresas. Cuando se cree que la misión de las universidades venezolanas es formar con fondos públicos empleados para beneficio de las empresas (públicas o privadas), python ni siquiera se considera como opción.
Así, es prioritario juntar esfuerzos alrededor de Python, no tanto en la búsqueda de un interés particular, sino desde una convicción que más allá de los desarrolladores de Python que evidencian una mejora directa en su productividad y calidad de vida en el trabajo, las soluciones basadas en Python abren la posibilidad de mejorar en gran medida la calidad y flexibilidad de los servicios ofrecidos para todos.
También Python, lejos de ser una herramienta de informáticos para informáticos, ha permitido expandir los límites de lo posible en muchas disciplinas, así hablamos de python en bioinformática, análisis del lenguaje, tecnología geoespacial, diseño gráfico y multimedia, economía computacional, análisis de datos, electrónica y robótica, entre otras disciplinas.
Creo también que la política de promoción de Python no debe pasar por atacar otros lenguajes y tecnologías, Python por sí solo tiene suficientes bondades como para que esto sea necesario. En todo caso, el problema básico no son las tecnologías (aunque estas no sean neutras) sino en las matrices de opinión que han generado los laboratorios de mercadotecnia de las corporaciones, en particular su influencia en las políticas de estado en un país como Venezuela.
Así pues, se inicia un camino, en este blog y en el wiki http://wiki.pyve.org.ve, hay que empezar a hablar de proyectos conjuntos y eventos, pero paso a paso, sin ambiciones faraónicas. Un cordial saludo a todos y bienvenidos a participar.
Fuente:   

jueves, 29 de septiembre de 2011

Programming in Math/Sci

Wired has a great article describing the need for programmers in all fields in The End of Science.  There is a diagram that goes along with it that is also helpful.

Python is my language of choice because it is free, relatively easy to learn, and powerful.

  • Python 3.1 is now compatible with the modules I discuss and so I recommend that others learn this version as it is the newest one. Otherwise download Python 2.7.
  • Useful 3rd party modules available for free are:
    • VPython - For graphing and 3D objects. (necessary if you wish to do the Slope Art Project)
    • SAGE - Useful for math classrooms and allows you and your students to maintain a online notebook of previous work and create interactive textbooks.


BrokenAirplane Posts on Programming:

Resources for learning and teaching Python:
  • How to Think Like a Computer Scientist is what I used to learn Python and it is still my favorite tutorial. It is clear and easy enough for students of all ages.
  • Codingbat - Suggested by Michel Paul, "If a student creates an account and does a share to your email, you'll be able to see their code as they finish each exercise.  You can't see their work until it is correct, unfortunately, but it's a really great set of exercises.  They're fun to work through."
  • Dive into Python - A little more in depth but still clear and helpful
  • Invent with Python - Students love making games and this gives them a great step-by-step journey into this world.
  • Mathematics for the Digital Age and Programming in Python is a textbook used by Michel Pauland many other teachers for integrating math and programming.
  • PyGame is some extra modules for creating games. 
  • The New Boston - YouTube tutorials on Python, C++, Java, and many other languages.
  • Turtle and Geometry - Although the commands are in Spanish, Google translates it well. I have a list of the most used Turtle commands.

People and Groups to Connect with:
  • Python EDU-SIG is a mailing list covering all sorts of topics regarding Python and Education. Brilliant innovators and never a dull post.
  • Infinigons - Allison teaches computer science and math and has great thoughts on both.
  • Natural Math and Math Future are the work of the incredible Maria Droujkova who always has new and innovative resources, speakers, and thoughts.
    Other Resources for Programming:
    • Alice - Brainchild of Randy Pausch et al. Allows students to create their own stories using programming. Boys and girls, young and old love this free software and it has been used successfully in English, History, and Humanities classrooms.
    • Arduino - Open source and inexpensive microcontroller. Allows your students to program robots, sensors, etc. The Arduino makes it just as easy for students to learn programming especially if they are very hands on.
    • Computer Science for Fun - Magazine with fun math, science, and magic tricks for getting students interested in CS.
    • Computer Science Teaching Association - Great way to connect with others.
    • Google Computational Thinking Curriculum - Has Python and more general programming resources for teachers of all grade levels.
    • Project Euler - A whole lifetime of math and programming knowledge could be obtained through this fun puzzles.
    If you have additional resources let me know in the comments and I will encorporate them into the list.

    Subscribe to BrokenAirplane!

    sábado, 30 de julio de 2011

    Python y matemáticas: Theano



    Theano son unas librerías matemáticas basadas en Python. Con ellas podemos definir, evaluar y optimizar expresiones matemáticas que involucren arrays multidimensionales de forma eficiente.

    Lo cierto es que viene muy bien para definir funciones matemáticas de cualquier dimensión, pudiendo especificar los parámetros de las funciones. Otra característica que he encontrado muy interesante es que calcula las derivadas de las funciones con un código sencillo y claro.

    Destacar que estas librerías son totalmente compatibles con Numpy, Scipy y las he usado sin problemas con Mathplotlib para dibujar las gráficas de funciones.

    Bien, para que veáis cómo se usan con un ejemplo un poco más elaborado que los que vienen en su documentación he realizado un pequeño programa que dibuja la función logística y su recta tangente en un punto dado, para ello he usado Mathplotlib, de esa forma podéis aprender a dibujar funciones de forma sencilla, con soporte LateX en las figuras, creación de leyendas y guardado de las imágenes en formato .png. El código es el siguiente:

    #!/usr/bin/python

    from matplotlib import rc
    from pylab import *
    from theano import *
    import theano.tensor as T
    import numpy

    rc(‘text’, usetex=True)
    rc(‘font’, family=’serif’)

    x = T.fvector(‘x’)
    x1 = T.fscalar(‘x1′)
    y = 1/(1 + T.exp(-x))
    y1 = 1/(1 + T.exp(-x1))
    logistic = function([x], y)
    logistic1 = function([x1], y1)
    grady = T.grad(y1, x1)
    derivada = function([x1], grady)

    a = float(input(‘Introduce el extremo izqdo. \n’))
    b = float(input(‘Introduce el extremo drcho. \n’))
    particion = float(input(‘Introduce la longitud de particion del intervalo. \n’))
    pderiv = float(input(‘Introduce el punto donde hallar su recta tangente. \n’))

    xval = arange(a,b,particion, dtype=’float32′)
    z,w,w1=T.fscalars(‘z’, ‘w’, ‘w1′)
    rectatg2 = (x-z)*w+w1
    rectatg3 = function([x, Param(z, default=pderiv), Param(w, default=derivada(pderiv)), Param(w1, default=logistic1(pderiv))], rectatg2)

    figure(1)

    plot(xval, logistic(xval), linewidth=1.5, color=’r')
    plot(xval, rectatg3(xval), linewidth=1.0, color=’g')
    ylim([0,1])

    xlabel(r’\textbf{Abcisa}’, fontsize=12)
    ylabel(r’\textit{Ordenada}’,fontsize=12)
    title(r”Funcion logistica f(x) = $\displaystyle\frac{1}{1+e^{-x}}$”, fontsize=12, color=’r')
    legend((‘Funcion Logistica’, ‘Recta Tangente’),’upper left’, shadow=True, fancybox=True)

    leg = gca().get_legend()
    ltext = leg.get_texts()
    llines = leg.get_lines()
    frame = leg.get_frame()

    frame.set_facecolor(’0.80′)
    setp(ltext, fontsize=’small’)
    setp(llines, linewidth=1.5)

    grid(True)
    axhline(linewidth=1.5, color=’b')
    axvline(linewidth=1.5, color=’b')

    figure(2)

    plot(xval, logistic(xval), ‘k.’)
    plot(xval, rectatg3(xval), linewidth=1.0, color=’g')
    ylim([0,1])
    legend((‘Funcion Logistica’, ‘Recta Tangente’),’upper left’, shadow=True, fancybox=True)
    leg = gca().get_legend()
    ltext = leg.get_texts()
    llines = leg.get_lines()
    frame = leg.get_frame()

    frame.set_facecolor(’0.80′)
    setp(ltext, fontsize=’small’)
    setp(llines, linewidth=1.5)

    xlabel(r’\textbf{Abcisa}’, fontsize=12)
    ylabel(r’\textit{Ordenada}’,fontsize=12)
    title(r”Funcion logistica f(x) = $\displaystyle\frac{1}{1+e^{-x}}$”, fontsize=12, color=’r')
    grid(True)
    axhline(linewidth=1.5, color=’r')
    axvline(linewidth=1.5, color=’r')

    figure(1)
    savefig(‘fig1′) &npbs;
    figure(2)
    savefig(‘fig2′)
    show()

    El resultado es el siguiente:






    Fuente: Linuxmúsica

    Sitio oficial de Theano: http://deeplearning.net/software/theano/