domingo, 10 de junio de 2018

Introducción a la programación con Juni


Introducción a la programación con Julia
está disponible en Amazon
Os presento el penúltimo libro que he publicado sobre programación (del último dedicado a la programación estadística con R hablaré en los próximos días): Introducción  a la programación con Julia (el índice puede consultarse aquí).

Desde que, por casualidad, empece a probar el lenguaje Julia hace ya algo más de un año, me cautivó por su facilidad de uso. Desde entonces utilizo asiduamente la consola de Julia para todo tipo de operaciones con matrices y para dibujos rápidos de gráficas, aunque lógicamente es un lenguaje de propósito general con infinidad de usos de todo tipo.

Julia (https://julialang.org) es un lenguaje de programación, orientado a las aplicaciones científicas que surge ante la necesidad de disponer de un lenguaje de alto nivel y rápido para el cálculo numérico, técnico y científico. Una de las características de Julia es su alto rendimiento que lo aproximan al de lenguajes compilados como C. Otro de sus aspecto interesantes es que la comunidad de desarrolladores de Julia elabora una gran cantidad de paquetes externos que continuamente amplían sus capacidades.

Julia comenzó a ser desarrollado en 2009 por cuatro científicos informáticos que se habían propuesto crear un lenguaje de alto nivel y rápido; Jeff Bezanson, Stefan Karpinski, Viral B. Shah y Alan Edelman. En 2012 lanzaron el sitio web de Julia y desde entonces se ha creado una comunidad de usuarios y desarrolladores a su alrededor.

Es un lenguaje multiplataforma de forma que puede ejecutarse en Linux, Windows y macOS. Dispone de un compilador en tiempo de ejecución, JIT (Just In Time compiler), lo cual significa que los programas se compilan (se traducen a un lenguaje que los ordenadores pueden entender y ejecutar) en el momento en que se utiliza, a diferencia de otros programas, como C. Julia está diseñado para el cálculo en paralelo y en la nube, dispone de una terminal interactiva de texto, llamada REPL, donde se pueden obtener directamente los resultados a medida que son tecleados.

Una de sus características destacable es que es software libre y puede ser descargado de su página web de forma gratuita. Además, Julia plantea similitudes con otros lenguajes ya establecidos hace tiempo como R (lenguaje de programación estadística, véase la entrada en este mismo blog: Introducción a la programación con R), Python o MATLAB, entre otros. De Julia se puede afirmar que tiene la facilidad de uso de Python y la velocidad de C. Efectivamente, Julia es un lenguaje de programación que no requiere un esfuerzo excesivo para conocerlo, a diferencia de R, por ejemplo, en el que cuesta más conseguir un buen nivel de conocimientos. Julia es relativamente sencillo, lo que hace que la curva de aprendizaje sea similar a la de Python, uno de los programas más usados actualmente por la comunidad científica, debido precisamente a su simplicidad. En 2016 entró en la lista de los 50 lenguajes de programación más usados y en la actualidad continúa ascendiendo en la clasificación. A pesar de ser un lenguaje de programación muy nuevo, con sólo 6 años de existencia, se perfila como uno de los que más crecerán y se utilizarán en un futuro cercano.

Este es el aspecto que tiene este lenguaje, aquí en concreto está programada la solución de una ecuación de segundo grado donde se preguntan los parámetros a, b y c a través del teclado:

function ec2(a, b, c)

  x1 = (-b + sqrt(b^2 - 4 * a * c)) / (2* a)
  x2 = (-b - sqrt(b^2 - 4 * a * c)) / (2* a)
  x = [x1, x2]  return x
end

function main()

  print("a = ")
  a = parse(Float64, readline())
  print("b = ")
  b = parse(Float64, readline())
  print("c = ")
  c = parse(Float64, readline())
  x = ec2(a, b, c)
  println("x1 = ", x[1], "\nx2 =", x[2])
end


main()



Y como ejemplo de lo compacto que puede llegar a ser este lenguaje, la siguiente línea de código devuelve true (verdadero) si x es un número primo o false (falso) si no lo es.
esprimo(x) = x <= 1? false : !in(0, x .% (2:sqrt(x)))

jueves, 6 de julio de 2017

La importancia de los lenguajes de programación

En los últimos tiempos me he convencido de la importancia de la programación para nuestros jóvenes. Enfrentarse a la construcción de un programa supone desarrollar toda una serie de estrategias para resolver un problema. Un programa sólo funcionará si cada instrucción está en el sitio que le corresponde. Esta lógica ineludible que conlleva la programación es un ejercicio que desarrolla el aprender a pensar y la racionalidad de los pensamientos. No basta con el "esto es así, más o menos" sino que el programa "debe ser, exactamente así" de lo contrario no hará lo que debería hacer.

Pero esto no significa que sólo exista una forma de construir un programa, al contrario, la programación es un proceso totalmente creativo donde cada solución es única. No encontraremos dos programas iguales para resolver el mismo problema, cada persona, según sea su forma de pensar, razonar y de afrontar los problemas, hará los programas de uno u otro modo. Programar es un proceso creativo como lo pueda ser la escritura, la música, o la pintura. Es también por este motivo que el placer intelectual que proporciona la resolución de un reto de programación sea difícil de conseguir por otros medios que no sean los puramente artísticos.

Se habla del aprender a pensar y de elaborar criterios propios, tarea para la cual la programación se muestra idónea. También favorece la concentración y el análisis de las situaciones por lo que ayuda a establecer patrones de pensamiento lógico que serán de indudable utilidad en la vida del alumno. La habilidad de programar permite afrontar los problemas científicos desde un punto de vista mucho más cercanos al método empleado por la Ciencia para su desarrollo, es decir al método científico.

Además, hoy más que nunca antes, aprender a programar se ha convertido en una necesidad, no sólo para el ingeniero informático, sino para aquellas personas que se desenvuelven en un ambiente laboral de tipo científico y técnico. El desarrollo de la toma de decisiones a partir del análisis de datos masivos (big data), la inteligencia artificial o la robótica, por poner unos ejemplos, hace que cada vez sea más necesario tener conocimientos de programación. 

El libro Introducción a la programación con R. introduce a R como lenguaje de inicio a la programación. Se pretende que R sea utilizado como primer lenguaje de programación, por lo que se puede aprender a programar partiendo del nivel más básico con un lenguaje de amplia difusión en el mundo de la ciencia y la ingeniería. Es decir, es un libro especialmente pensado para aquellos que necesitan la programación para la resolución de problemas básicos relacionados con el mundo de la ciencia y la técnica. Está diseñado para poder ser impartido a partir del nivel de Educación Secundaria Obligatoria.

¿Por qué R y no otro lenguaje de programación? Porque R es uno de los más utilizados por científicos, en numerosas disciplinas. R es un lenguaje diseñado específicamente para manipular y analizar grandes cantidades de datos y la Ciencia funciona gracias a este análisis de datos. Se podría objetar que C++ o Java son lenguajes mucho más utilizados en el mundo de la programación y esto es cierto, pero lo es para el programador profesional, el ingeniero informático. Sin embargo, me parece mucho más útil enseñar lenguajes de amplia aceptación en la solución de los problemas de la Ciencia que sean usados por médicos, químicos, físicos o biólogos. Python es, indudablemente, otro lenguaje utilizado habitualmente en la ciencia y probablemente sea, junto con Julia, uno de los más idóneos para empezar a programar. Esto nos lleva a la trilogía R - Python - Julia como tres grandes pilares de la programación científica y, probablemente, cada uno tendrá su propio libro como el actual, donde se aprende el lenguaje partiendo desde cero.

El libro se publica en Amazon.com (también en Amazon España) con formato de papel. He optado por el papel en lugar del libro electrónico en formato MOBI, porque los lectores de libros Kindle (los lectores de ebooks de Amazon) no permiten el uso de fórmulas matemáticas en sus libros, de forma que aparecen como una serie de símbolos sin sentido para el lector. Los programas que forman parte de los ejercicios del libro están publicados de forma abierta en: http://intro-r.tiddlyspot.com/.

viernes, 17 de marzo de 2017

Organizar y compartir documentos y otros objetos con Calibre

Calibre es una aplicación libre y traducida a múltiples idiomas (entre los que se encuentra el castellano, catalán, gallego y vasco) cuya objetivo primario es la catalogación y manipulación de libros electrónicos (e-books) en la mayoría de los formatos existentes EPUB, PDF, AZW3, TXT, MOBI y un largo etcétera. Está disponible para Linux, Windows y OS X (página de descargas).

Este artículo no pretende ser un manual de Calibre sino explorar otras aplicaciones prácticas más allá de la simple gestión de libros electrónicos. Aplicaciones que el autor lleva realizando con éxito en su labor docente desde hace ya varios años. Aunque su uso es bastante intuitivo aquí puede encontrarse la documentación oficial de Calibre que es suficientemente extensa y de calidad.

Instalación

Es relativamente sencilla y únicamente hay que seguir las instrucciones que encontraremos en su página de descargas. En el sistema operativo Ubuntu lo encontraremos también en el centro de software.

Una vez instalado nos preguntará donde queremos crear nuestra biblioteca. Podemos aceptar la ubicación que nos propone ya que en cualquier momento podremos cambiarla así como añadir otras bibliotecas de objetos desde las ubicaciones que queramos.

Añadir y catalogar objetos

Aunque la aplicación hace referencia a libros electrónicos la realidad es que acepta cualquier tipo de archivo (documentos, audio, vídeo, fotos, ejecutables, etc.).

Para añadir cualquier objeto bastará con abrir Calibre y soltar el objeto sobre la aplicación. Tras un breve proceso de importación quedará incorporado en nuestra biblioteca.

Conviene entender que Calibre creará una copia del objeto (documento, vídeo, etc.) en el lugar que le hemos indicado para ubicar nuestra biblioteca. Calibre creará una carpeta por cada Autor que tengamos. Lógicamente en el campo Autor no es necesario poner ninguna persona, puede ser cualquier otra cosa que nos interese. Por ejemplo, si estamos creando una biblioteca con los exámenes que tenemos, en autor podemos poner el curso actual, de este modo nos creará una carpeta para cada curso. Dentro de cada carpeta con el nombre que hayamos puesto en Autor tendremos una carpeta con el título del objeto. Esto es importante sólo hasta cierto punto, porque la forma en la que Calibre organiza los archivos que tenemos no nos debe preocupar ya que la búsqueda la realizaremos siempre a través de la interfaz del programa.

Además del autor y el título aparecen otros campos como las etiquetas (palabras que definen el contenido) la fecha de incorporación del archivo o la serie. La serie puede ser usada del modo que más nos convenga, por ejemplo, siguiendo con el ejemplo de los exámenes,  podemos tener una serie para los exámenes de cada materia o de la misma materia de diferentes cursos.

Si queremos eliminar un campo bastará con pulsar el botón derecho del ratón sobre su título y seleccionar Ocultar columna. Además podremos incorporar todos los campos que queramos pulsando el botón derecho del ratón sobre el título de cualquier columna y seleccionando Añadir columnas personalizadas.

Biblioteca de documentos docentes
En cualquier momento podremos abrir el archivo que nos interese haciendo doble clic sobre el mismo.

Podemos hacer búsquedas escribiendo en el buscador superior así como seleccionando del panel izquierdo aquello que nos interese.

Bibliotecas virtuales

Las bibliotecas virtuales dan una enorme versatilidad a Calibre, ya que nos permiten mostrar sólo una parte de los archivos que forman parte de nuestra biblioteca de forma que podemos ver sólo el tipo de documento que nos interesa.

Podemos crear bibliotecas virtuales que serán mostradas como pestañas. Cada biblioteca virtual es algún tipo de búsqueda. En la figura anterior pueden verse 9 bibliotecas virtuales que permiten seleccionar los documentos de un mismo tipo (exámenes de matemáticas, de biología, exámenes de selectividad, etc.).

Para crear una biblioteca virtual se realiza cualquier búsqueda (escribiendo en el buscador o seleccionando algún campo del panel izquierdo) y seleccionamos Biblioteca virtual > Crear biblioteca. Le damos un nombre y ya está creada. Para que aparezca en forma de pestaña pulsamos sobre Biblioteca virtual y después en Mostrar como pestaña.

Organizador de documentos

Personalmente tengo todos mis documentos académicos en calibre, desde el año 2010 hasta la actualidad. Esto incluye todos los exámenes de selectividad de Biología y Matemáticas para las Ciencias Sociales y sus soluciones, desde el año 2000, todos los exámenes realizados, ejercicios y diversos manuales de prácticas. En total unos 500 documentos que de ser guardados en un sistema de carpetas tradicional sería enorme. Gracias a Calibre cada vez que tengo un nuevo documento sólo tengo que soltarlo sobre la aplicación y completar los campos que me interesan que son normalmente el título, autor (que en mi caso es el tipo de documento), la materia, el curso escolar y en el caso de documentos de ejercicios, las etiquetas con los temas que se tratan.

Además de esta biblioteca académica tengo otra con unos 3000 libros electrónicos sobre literatura de todo tipo, otra biblioteca sobre estadística y programación con unos 100 documentos y otra biblioteca con unos 300 vídeos (reportajes y películas).

Compartir las bibliotecas entre varios ordenadores

Para que estas bibliotecas estén disponibles tanto desde un portátil como desde un ordenador fijo o los ordenadores de otras personas, basta con crear la biblioteca en una carpeta compartida de Dropbox (o servicio similar) de forma que cada cambio realizado en la biblioteca se refleje en los otros ordenadores.

Compartir la biblioteca con otras personas vía web

La posibilidad de compartir la biblioteca a través de un navegador es algo muy interesante y versátil. Se puede, por ejemplo, permitir que los alumnos accedan desde su móvil u ordenador portátil a nuestra biblioteca o que otras personas examinen y se descarguen documentos y archivos de nuestra biblioteca. Esto permite compartir la biblioteca con aquellas personas que están usando la misma red wifi o por cable que nosotros. Si deseamos compartirlo con todo Internet también es posible pero harán falta unos conocimientos más elevados (básicamente redirigir el puerto 8080 de las conexiones exteriores hacia el ordenador que contiene la biblioteca en el router que nos conecta a Internet).

Para compartir nuestra biblioteca en la red local en la que estamos conectados en este momento (la de casa o la de la escuela) basta con pulsar el botón Compartir libros usando un servidor web y seleccionar Iniciar servidor de contenidos. Tras unos segundos nos aparecerá, pulsando el mismo botón, la dirección a la que los otros podrán conectarse a través del puerto 8080. Es decir, algo del tipo: http://192.168.1.130:8080 (la dirección concreta, los números, variará de una red a otra).

Botón: Compartir libros usando un servidor web


Para dejar de compartir se hará a través del mismo botón. Si deseamos podemos poner también contraseña para que sólo se pueda conectar el que la conozca pulsando sobre el botón Preferencias y después en Compartir por la red.

Botón: Preferencias
Vista de una biblioteca compartida a través de la red
La versión web de Calibre puede verse desde cualquier dispositivo (fijo o móvil) con conexión a la red. Permite realizar búsquedas por campos así como por palabras, también permite descargarse los archivos a través del navegador.

Conclusión: Usos de Calibre

La versatilidad de Calibre hace que se pueda utilizar allí donde queramos organizar una gran cantidad de archivos y poder encontrarlos con facilidad a través de las búsquedas por campo, palabras clave o búsqueda genérica. El programa funciona perfectamente cuando se tienen miles de documentos y es cuando alcanza su mayor utilidad. Por ejemplo:
  • Documentos de trabajo personales. Con el paso del tiempo los exámenes, ejercicios, trabajos y multitud de otros documentos quedan relegados en múltiples tarjetas de memoria o discos duros. El uso de un sistema de clasificación es imprescindible si deseamos reutilizar la información.
  • Documentos de Centro. Imaginemos un Centro que almacene todos los exámenes que realizan los profesores del claustro, en pocos años el volumen de documentos desbordará cualquier sistema de clasificación basado en carpetas. Otros Centros guardan una copia de todos los trabajos de investigación realizados por los alumnos de bachillerato, sin un buen sistema de clasificación pronto cualquier trabajo quedará enterrado entre otros cientos por lo que será fácil perder la pista y quedará en el olvido. La recuperación de un trabajo particular será especialmente difícil.
  • Ejercicios, para que los alumnos dispongan de ellos en clase o para que el profesor pueda seleccionar rápidamente los que utilizará en la clase que empieza en poco tiempo.
  • Vídeos. Cuando se descargan reportajes o películas rápidamente nos podemos encontrar con una gran cantidad que dificulta la localización del vídeo que nos interesa.
  • Sonidos. Aunque de uso más limitado, determinadas asignaturas como la música, necesitan de una base de datos de audios.
  • Libros para uso personal, quizás es el motivo por el que se creó Calibre pero para un docente puede ser secundario.

jueves, 4 de agosto de 2016

La clase gira hacia el móvil: Aplicaciones educativas para Android

Poniendo en práctica lo comentado en el artículo Creación de libros de texto electrónicos con TiddlyWiki, he publicado en Google Play las aplicaciones para móvil y tableta correspondientes a los cursos de matemáticas de 1º de Bachillerato y 2º de Bachillerato. Son libros de apoyo y consulta para complementar las clases presenciales.

Las aplicaciones Android han sido hechas con App Inventor (un entorno de programación relativamente sencillo y muy semejante a Scratch) y los contenidos con TiddlyWiki.

Los libros (3 en total) no necesitan de las aplicaciones para móvil ya que se pueden consultar directamente a través de un navegador cualquiera. Las aplicaciones sirven para que los alumnos tengan a mano (literalmente en el bolsillo) los contenidos de las asignaturas ya que cada vez son más los que utilizan los móviles y tablets para estudiar y repasar.

Pantalla inicial de la aplicación MAT1CCSS

Libro de primero de Bachillerato


Consta de un archivo TiddlyWiki (http://mat1.tiddlyspot.com) con más de 500 tiddlers (unidades de información o páginas). Además de explicaciones teóricas, en él encontraremos ejercicios resueltos y propuestos.

Dispone de una sección con definiciones ordenadas alfabéticamente donde se encuentra lo más importante de la asignatura. Las definiciones las encontramos también dentro del texto siendo en realidad la misma información reutilizada. La facilidad de TiddlyWiki para incrustar unos tiddlers en otros hace que sea muy sencillo fragmentar la información y luego recomponerla como si se tratase de un puzzle.

También encontraremos, como un anexo, una sección dedicada a resolver operaciones en línea con WolframAlpha, la web basada en Mathematica que no sólo trabaja con las matemáticas sino con cualquier área del conocimiento humano.

Gracias al sistema de etiquetado disponemos de dos tipos de índices, uno por trimestres, donde se agrupan los contenidos de forma temporal y otro temático donde se agrupan según los diferentes ámbitos matemáticos. Es la misma información visualizada de dos formas diferentes.
Índice y portada del libro de texto: http://mat1.tiddlyspot.com/#Coberta


Libros de segundo de Bachillerato

Pantalla inicial de la aplicación MAT2CCSS
La aplicación de 2º de Bachillerato consta de dos libros. Uno que es semejante al anterior de teoría y ejercicios (http://mat2.tiddlyspot.com) y otro que está formado por una recopilación de problemas de selectividad de los últimos años (http://selecatmat.tiddlyspot.com).

La estructura del libro de texto es casi idéntica a la de primero de Bachillerato. A lo ya explicado para el libro anterior, se añade una recopilación de problemas donde se agrupan todos los propuestos en el libro en un único sitio, ordenados por temática. De este modo se puede acceder más fácilmente a los ejercicios. De nuevo, esto ha sido posible gracias al sistema de etiquetas de TiddlyWiki.
Índice y portada del libro de texto: http://mat2.tiddlyspot.com/#Coberta

Nuevas formas: materiales docentes accesibles en dispositivos móviles

He podido comprobar, desde hace ya un par de cursos, que los alumnos de ESO y Bachillerato piden utilizar los móviles en clase para repasar cuando se les deja un rato de estudio. Allí guardan archivos en PDF que les han dado sus profesores, presentaciones o documentos de todo tipo y muchos de ellos aprovechan algunos  de los momentos libres que tienen para repasar el examen o lo que deban saber para ese dia.

Por este motivo me he decidido por este sistema con los alumnos: Aplicación móvil + Contenidos visibles en Internet

Es importante que los materiales que desarrolla el docente sean visualizables correctamente a través de los dispositivos móviles, hay que huir de los PDF o las presentaciones con letra minúscula o tan densos en texto que su lectura sea engorrosa a través de un móvil. Cuando ofrezcamos nuestro material a los alumnos sería conveniente antes comprobar cómo se ve en nuestro propio móvil.


Comunicación a través de chat: Telegram

A este material se añade la comunicación directa con los alumnos a través de Telegram mediante la creación de un supergrupo privado, como ya se comentó en un artículo anterior: De Facebook a Telegram, pasando por Whatsapp. Telegram asegura la privacidad del número telefónico de profesores y alumnos ya que no es necesario disponer de él para hablar con otra persona, en su lugar Telegram permite utilizar nombres de usuario, aunque ni siquiera éstos son imprescindibles. Basta con tener instalado el programa en el móvil y conocer la dirección que proporciona Telegram para entrar en un grupo y participar. El uso de Telegram a través de la web y la posibilidad de enviar cualquier tipo de archivo lo hacen ideal para esta tarea.

El futuro cercano: La clase gira hacia el móvil

Así pues, podemos ver que el centro de la clase, cuando no estamos en modo presencial, se vuelve hacia el teléfono móvil, donde se concentra la actividad de estudio y comunicación.

La ecuación educativa podría quedar del siguiente modo:

Educación = Espacio físico presencial (comunicación) + Lugar de residencia (estudio)Contenidos en Internet (estudio) + Accesibilidad móvil (estudio y comunicación)

domingo, 5 de junio de 2016

Creación de libros de texto electrónicos con TiddlyWiki


Desde que conocí TiddlyWiki, he pensado que su potencial para la educación era evidente y muy amplio. Despueś de una intensa experiencia personal me he decido a compartir lo que he aprendido a través de un libro, hecho con el propio TiddlyWiki, al que he denominado: Creación de libros de texto electrónicos con TiddlyWiki. Y que, dicho sea de paso, me ha servido para comprobar la idoneidad de TiddlyWiki en la tarea de escribir libros, aunque como se discute más abajo, no sólo sirve para esto.

TiddlyWiki es, a primera vista, una página web, pero nada más lejos de la realidad. Si colocamos TiddlyWiki en Internet muchos pensarán que están en presencia de una página web tradicional, pero la verdad es que detrás de esa página aparente hay mucho más.

De entrada el tiempo de carga de TiddlyWiki es mayor que el de una página web clásica debido a que lo que se descarga no es una página sino una aplicación completa. Efectivamente, se trata de una aplicación autocontenida, es decir, no necesita de nada externo para funcionar excepto un navegador, tampoco necesita de Internet ya que se puede utilizar sin conexión como cualquier aplicación más. TiddlyWiki está formado por un archivo que podemos ir completando con información del modo que queramos. Podemos tener tantos archivos (TidlyWikis) como queramos, una por cada obra que queramos hacer.

Logo de TiddlyWiki
Su funcionalidad es muy diversa, pero básicamente permite almacenar y mostrar información en unidades llamadas tiddlers, lo que, de algún modo, se correspondería con una página web. TiddlyWiki es perfecto para crear un libro de cocina, una colección de problemas, de ejercicios, objetos de la Web 2.0, un libro de texto o cualquier información que deseemos tener y presentar de forma organizada o jerárquica (como los capítulos de un libro).

Una de sus facetas que lo hace único es la posibilidad de mostrar los tiddlers (que son los que contienen la información) de la forma que queramos. TiddlyWiki es también una base de datos donde fácilmente encontramos lo que buscamos.

Portada del libro
TiddlyWiki requiere un cierto aprendizaje para su uso ya que la forma de escribir en él difiere de la un blog tradicional, más bien se aproxima a la forma de edición de la Wikipedia. TiddlyWiki nació hace ya mucho años como una wiki personal y mantiene esta identidad.

Por los motivos expuestos nos decidimos a crear un libro con el propio TiddlyWiki destinado a que otros puedan crear sus propios libros, libretas de actividades, ejercicios o lo que cada uno considere más interesante.

Después de poco más de un trimestre usando TiddlyWiki en varias asignaturas y, aunque la mayoría está a medias o necesitan una importante revisión, dejo aquí los enlaces para poder ver qué tipos de productos se pueden hacer. Hay que recordar que estas páginas tardan un poco más de lo habitual en cargarse, pero luego podrá comprobarse que su velocidad es muy superior a lo que es corriente con las páginas Internet.



Por último, aquí está la dirección del libro:

Creación de libros de texto electrónicos con TiddlyWiki

O si se desea descargarlo directamente al ordenador, pulsar aquí.