PyCon Es 2013: Track Científico

Todas las charlas del track científico de PyCon españa 2013

las diapositivas están disponibles en cada una de las grillas de la pagina http://2013.es.pycon.org/

SciPyCon Argentina 2013 Mayo del 2013 (Crónica de un viaje de hace mucho)

http://scipycon.com.ar/

Fotos: https://plus.google.com/u/0/events/gallery/c0k8r28sag9h268p58mnvvu8nf0

Tratando de saldar una deuda con el pasado (y luego de dos fallidos post que me hicieron descubrir que en la ruta conviene no poner “publicar”); me dedico a relatar brevemente como fue la experiencia de la primer conferencia habla hispana de Python en la ciencia.

Los organizadoras conocieron a quien les escribe, mientras se desarrollaba la PyCon Argentina 2012 en Buenos Aires, en la cual se comenzó a gestar, con la realización de un track científico, la posibilidad de que La ciencia y Python tenga su propio lugar dado sus objetivos diferentes a PyAr tradicional.

Con el paso de los meses, y previa conformación de una lista de distribución propia, lo que fue planeado originalmente como un PyDay en la ciudad de Puerto Madryn de la provincia de Chubut se convirtió en algo mucho mas grande, mas elaborado y adecuado a los científicos en ves de los desarrolladores open-source.

La fecha del evento fue el 16, 17 y 18 de mayo en la sede de Puerto Madryn Universidad Nacional de la Patagonia San Juan Bosco y se conto con el tradicional 60% de publico con respecto a los 255 inscriptos.

Luego del acto de apertura con autoridades, políticas, académicas y de la organización se comenzó a realizar la grilla de actividades que se puede dividir en tres partes principales:

  1. 2 Tutoriales de 3 clases de 2 horas de duración:
    • “Inteligencia Artificial con Python” – Juan Pedro Fisanotti
    • “Python Científico”-  Damián Avila
  2. Una serie de charlas de contenido mas avanzado:
    • Introducción a Python en Biología Molecular – Sebastian Bassi
    • Why Python? (¿Por que Python?) – Juan Cabral
    • Making cross matched astronomical catalogs – Sebastian Gurovich
    • Building applications for scientists using the Enthought Tool Suite – Prabhu Ramachandran
    • Descubriendo vulnerabilidades en ejecutables con SEA – Gustavo Grieco
    • Yatel – Exploración de perfiles para Minería de Datos – Juan Cabral
    • Sistema de alerta temprana de riesgo de sequías y plagas en Python – Octavio Bruzzone
    • IPython notebook: el “paper ejecutable” – Damian Avila
    • Sistemas de Monitoreo mediante HTML5 – Nahuel Defossé
    • Crushing numbers with Python: some lessons learned – Prabhu Ramachandran
  3. Posters que fueron presentados en una micro charlas de 5 minutos en un break
    • Robótica Educativa con Android + Python + Pingüino-PIC18F4550. Andrés Cintas
    • El uso de las Simulaciones con Sage y sus implicancias en la enseñanza de la regresión lineal. Franco Nicolás Bellomo
    • Imfractal: Dimensiones fractales sin esfuerzo en Python. Rodrigo Baravalle
    • Mapas de asimilación de datos en un modelo de olas. Pablo Echevarría
    • Inteligencia Ambiental con Redes de Sensores Inteligentes. Martín Bilbao. Daniel Ormachea
    • Caracterización de proteínas por medio de Biopython. Flavio Spetale

Por ultimo se realizaron unas breves charlas relámpago para el final del último día.

Se contó, también, con un invitado internacional perteneciente Enthought (la empresa casi propulsora de todo lo que es python científico a nivel mundial): Prabhu Ramachandran el cual dio dos charlas charlas.

Si se desea conocer más de las actividades durante el evento le recomiendo explorar la pagina oficial del evento.

También el segundo día se hizo un taller para unos 150 estudiantes secundarios, a los cuales se les explico varios tópicos de la programación (en mi caso me toco una introducción a Pilas)

En resumen:

Lo bueno:

  • Mucha ciencia.
  • Ver personas de otras especialidades entusiasmadas con lo que los developers de Python podemos ofrecer.
  • El evento estuvo muy prolijamente organizado con contratiempo menores (casi insignificantes)
  • El auditorio y el ambiente general de la universidad.
  • El apoyo oficial
  • Tantos sponsors.
  • saber la ubicación de las siguientes 2 sedes de antemano.

Lo Malo:

  • La pobre internet de la zona.
  • La pobre concurrencia de los miembros de la comunidad de Python Argentina.

Lo feo:

  • No haber planeado alguna publicación con resúmenes de la conferencia (para darle mas rigor científico).

UPDATE:

 

PyCon Argentina 2012 – Track Científico

Pueden ver aquí todo el track científico de PyConAr 2012 en orden.
Hay que recalcar que lamentablemente la charla de Matías Herranz y Joaquín Tita sobre “Imágenes Satelitales” tuvo un problema y el video esta medio irrecuperable y no esta disponible aun.
Por otro lado agregue una charla que originalmente pertenecía a este track y termino quedando en paralelo (por puros problemas logísticos):
Poniéndole Lógica Peirceana a la Programación” de Javyer Der Derian

Que es de las pocas charlas que existen sobre ing. de software y psicología.

Buscaminas Programming Challenges de la UTN-FRC en Python

Resolví 2 problemas basados en el buscaminas en Python para la competencia de programación de la UTN-FRC, aca esta el código y mas abajo esta un link al repo de mercurial para quien desee bajar el código mas la entrada.

Problema Fácil (Enunciado)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# "THE BEER-WARE LICENSE" (Revision 42):
# <jbc.develop@gmail.com> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return Juan BC

#===============================================================================
# DOCS
#===============================================================================

"""Solucion al problema del buscaminas para la competencia de programación de la
UTN-FRC.

Objetivo: Ser legible y servir de instroduccion a python

Problema originalmente propuesto:
    http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110102&format=html

Nota se simplifico para trabajar solo con matrices cuadradas

"""

#===============================================================================
# META
#===============================================================================

__author__ = "Juan BC"
__license__ = "BeerWare"
__date__ = "2011/10/26"
__version__ = "0.1"
__email__ = "jbc.develop@gmail.com"
__homepage__ = "https://jbcabral.wordpress.com/"
__twitter__ = "@juanbcabral"

#===============================================================================
# FUNCTIONS
#===============================================================================

def read_n_lines(n):
    """Esta funcion lee las siguientes n linea de la entrada y las retorna
    como una lista de listas.

    """
    lines = []
    for _ in range(n):
        line = list(raw_input())
        lines.append(line)
    return lines

def increment(board, row, col):
    """Funcion de soporte para resolve que incrementa en uno todas los vecinoa
    a una mina

    """
    for row_d in (-1, 0, 1):
        for col_d in (-1, 0, 1):
            rowp = row + row_d
            colp = col + col_d
            if rowp < 0 or colp < 0 \
               or rowp >= len(board) or colp >= len(board[rowp]) \
               or board[rowp][colp] == "*":
                continue
            if board[rowp][colp] == ".":
               board[rowp][colp] = 0
            board[rowp][colp] += 1

def resolve(board):
    """Itera sobre cada celda y si encuentra una mina (*) incrementa todos
    sus cacilleros vacios en 1

    """
    for idx_row, row in enumerate(board):
        for idx_col, cell in enumerate(row):
            if cell == "*":
                increment(board, idx_row, idx_col)

def main():
    field = 0;
    while True:

        # leemos el tamaño de nuestro board
        n = int(raw_input())

        # si el tamaño de nuestro board es 0 salimos
        if n == 0:
            break

        # incrementamos el numero de field
        field += 1

        # leemos el tablero
        board = read_n_lines(n)

        # resolvemos el tablero
        resolve(board)

        # armamos la salida
        out = "\n".join(["".join([str(c) for c in row]) for row in board])

        # imprimimos la salida con su decoradores
        # y si queda algun "." lo reemplazamos por un cero
        print "Field #{0}:".format(field)
        print out.replace(".", "0")
        print ""

#===============================================================================
# MAIN
#===============================================================================

if __name__ == "__main__":
    main()

Problema Menos Fácil (Enunciado)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# "THE BEER-WARE LICENSE" (Revision 42):
# <jbc.develop@gmail.com> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return Juan BC

#===============================================================================
# DOCS
#===============================================================================

"""Solucion al problema del buscaminas para la competencia de programación de la
UTN-FRC.

Objetivo: Ser legible y servir de instroduccion a python

Problema originalmente propuesto: http://acm.tju.edu.cn/toj/showp1330.html

"""

#===============================================================================
# META
#===============================================================================

__author__ = "Juan BC"
__license__ = "BeerWare"
__date__ = "2011/10/26"
__version__ = "0.1"
__email__ = "jbc.develop@gmail.com"
__homepage__ = "https://jbcabral.wordpress.com/"
__twitter__ = "@juanbcabral"


#===============================================================================
# FUNCTIONS
#===============================================================================

def read_n_lines(n):
    """Esta funcion lee las siguientes n lineas del file pointer

    """
    lines = []
    for _ in range(n):
        line = list(raw_input())
        lines.append(line)
    return lines

def touch2coordinates(touch):
    """Combierte los "toques" a una lista de coordenadas (fila, columna)
    donde se toco.

    """
    coords = []
    for idx_row, row in enumerate(touch):
        for idx_col, cell in enumerate(row):
            if cell == ".":
                continue
            coords.append((idx_row, idx_col))
    return coords

def coord2mine(row, col, board):
    """Retorna un "*" si el lugar donde indica la cordenada tiene una mina
    en caso contrario retorna cuantas minas rodean a ese lugar.

    """
    # primero nos fijamos en el lugar
    if board[row][col] == "*":
        return "*"
    # sino exploramos
    mines = 0
    for row_d in (-1, 0, 1):
        for col_d in (-1, 0, 1):
            rowp = row + row_d
            colp = col + col_d
            if rowp < 0 or colp < 0 \
               or rowp >= len(board) or colp >= len(board[rowp]):
                continue
            if board[rowp][colp] == "*":
                mines += 1
    return str(mines)

def main():
    """Lee desde un archivo un tablero y toques del buscaminas. Por defecto
    usa la salida estandar.

    """
    # leemos
    n = int(raw_input())
    board = read_n_lines(n)
    touchs = read_n_lines(n)

    # resolvemos
    for row, col in touch2coordinates(touchs):
        symbol = coord2mine(row, col, board)
        touchs[row][col] = symbol

    # convertimos a string para imprimir por pantalla
    print "\n".join(["".join([c for c in row]) for row in touchs])

#===============================================================================
# MAIN
#===============================================================================

if __name__ == "__main__":
    main()

Los archivos en formato archivo

Slides de mis charlas de CNEISI 2011

Slides de mis charlas de PyconAr 2011

Agenda de Django Day Córdoba 2011 lista

El evento django day que va a realizarse en Córdoba el 2/07/2011 ya tiene confirmada su agenda:

http://djangoday.wordpress.com/agenda-de-charlas/