domingo, 9 de septiembre de 2018

Herramientas y Servicios TIC Abiertos Para Educación

Logo de Herramientas y Servicios
TIC Abiertos Para Educación
Recientemente he publicado un trabajo en Internet sobre Herramientas y servicios TIC para Educación.

Empezó, como muchas de las cosas que he hecho, como una lista de herramientas que eran útiles para mi, pero finalmente ha "degenerado" en un listado muy exhaustivo de herramientas en abierto. Consta de una catalogación muy extensa y detallada que permite navegar por una gran cantidad de temas o categorías, lo que hace relativamente sencillo encontrar aquello que se desea.

Uno de los objetivos que me propuse fue no incluir herramientas que a la hora de la verdad no sirviesen para nada. Hay muchas herramientas excelentes que sólo pueden usarse de verdad pagando por ellas. Lógicamente un docente utiliza muchas herramientas a lo largo del año y quizás pueda pagar una o dos, pero partía de la base de que su uso tenía que ser gratuito y los resultados aceptables (hay muchas herramientas en las que con su versión gratuita se obtienen muy buenos resultados). Si quieres ver alguna de las herramientas que empecé incluyendo pero acabé retirando, puedes usar el buscador para encontrar la etiqueta trastero, allí es donde ha acabado más de una, aunque no muchas, ya que de entrada a la mayoría no las he llegado a poner en ningún momento.

En estos momentos hay más de 300 herramientas distribuidas en unas 100 categorías. No es que haya 3 herramientas por categoría, sino que cada herramienta (salvo alguna excepción) está incluida en más de una ya que la mayoría de las herramientas permiten su inclusión en más de un tema.

La parte fuerte es la encabezada con el título 2. Herramientas por tipo, ya que allí es donde se encuentran todas. La sección 3, Técnicas de enseñanza, es un intento de selección de algunas herramientas utilizadas en alguna de las metodologías más utilizadas últimamente. Esta sección ni es exhaustiva, en cuanto a las herramientas que podemos utilizar, ni completa en cuanto a las metodologías listadas, únicamente es un acercamiento para aquellos que intentan por primera vez a estas técnicas y se completará con el paso del tiempo.

La sección de Materias  (Áreas de conocimiento y REA) está en una fase excesivamente inicial, por lo incompleta que es, y también se irá completando.

Para navegar utiliza el buscador o despliega los menús pulsando sobre el símbolo: >

Espero que este trabajo sea realmente útil y ayude a los que buscan herramientas específicas para sus clases. Para cualquier adición o comentario he abierto un foro de discusión específico o bien a través de un mensaje aquí mismo.

domingo, 10 de junio de 2018

Introducción a la programación con Julia 1.0


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)))