viernes, 23 de diciembre de 2011

Artículo: ¿Qué es la recursividad?


¿Qué es la recursividad?

En ocasiones nos encontramos con problemas aparentemente complejos de resolver programando al estilo “tradicional”, es decir utilizando bucles para repetir un código hasta que se cumpla una condición. Esta forma de programar se denomina programación iterativa, y como digo no siempre es la mejor para resolver cierto tipo de problemas.
En contraposición a la programación iterativa surge la denominada recursividad o programación recursiva, que consiste en aplicar al mundo de la programación la famosa frase de Julio Cesar "Divide et vinces" – Divide y Vencerás. La programación recursiva a menudo ofrece soluciones elegantes a problemas difíciles de resolver de otro modo, descomponiendo dichos problemas en otros más sencillos.

Una función recursiva (o método recursivo) es aquella que contiene invocaciones a sí misma, de manera que el problema se va descomponiendo en sub-problemas más fáciles de resolver.  Así, una llamada a una función recursiva puede generar una o más invocaciones a la misma función, que a su vez genera otras llamadas, y así sucesivamente hasta llegar a lo que se denomina el caso base.  El caso base es un problema tan básico que la función sabe resolver sin necesidad de volver a invocarse a sí misma.
Una función recursiva debe cumplir las siguientes condiciones:

  • Asegurarse de que existe una condición de salida, en la que no se producen llamadas recursivas (el caso base).
  • Asegurarse de que se cubren todos los posibles casos entre el caso base y los no-base.
  • Cada llamada, si se trata de un caso no-base, conduce a problemas cada vez más pequeños que terminarán en el caso base.

Como la definición de una función recursiva puede resultar complicada de comprender, vamos a ilustrarlo con unos ejemplos para tratar de entenderlo mejor.

Cálculo del Factorial de un Número

Un ejemplo de algoritmo recursivo es el cálculo del factorial de un número. El factorial de un número es el resultado del producto de todos los números inferiores o iguales a él, empezando por el 1. Por ejemplo, el factorial de 4 (que se escribe 4!) es 3*2*1 = 6. Así, la definición recursiva del factorial podría estar compuesta por dos puntos:


El primer punto dice que el factorial de un número no es más que el mismo número multiplicado por el factorial de su número predecesor (el número menos uno). El segundo punto es el caso base, que dice que el factorial de uno es uno.
A continuación se muestra el código en Java de una función que es capaz de calcular el factorial de un número de manera recursiva (llamándose a sí mismo hasta llegar al caso base):


En el código anterior se puede ver cómo la función factorial se llama a sí misma con el número anterior al que se le ha enviado (línea 10), a no ser que el número sea uno, en cuyo caso se devuelve uno (línea 8).  Así, se van produciendo sucesivas invocaciones a la función hasta llegar al caso base.

Las Torres de Hanoi

Otro ejemplo clásico de algoritmo recursivo es la resolución del problema de Las Torres de Hanoi. Se trata de un rompecabezas inventado en  1883 por el matemático francés Éduard Lucas, que consiste en pasar una serie de discos de diferentes tamaños de una barra vertical situada a la izquierda a otra barra vertical situada a la derecha. Para ello se puede utilizar una barra auxiliar situada en el centro de las otras dos, con la única restricción de que nunca un disco de menor tamaño puede quedar por encima debajo de otro mayor.


Si pensamos en cómo resolveríamos este problema con un ordenador, la solución iterativa no es nada fácil de implementar. Sin embargo, una solución recursiva puede programarse con pocas líneas de código, según se muestra en la siguiente figura:


Fijándonos en el código, podemos ver como la función mover tiene dos llamadas recursivas. El caso base es cuando ya no hay que mover ningún disco, y cualquier caso no-base realiza tres pasos:

  1. Mueve todas las piezas menos una a la barra temporal
  2. Mueve la pieza que queda a la barra destino
  3. Mueve todas las piezas que movió a la barra temporal a la barra destino

Con este sencillo algoritmo somos capaces de resolver un problema tan complejo como las torres de Hanoi con pocas líneas de código. La salida del programa para una torre de Hanoi de cuatro discos (aunque funciona para cualquier número) es la siguiente:


Backtracking: Cuando recursividad y fuerza bruta van de la mano

El backtracking, también conocido como “vuelta atrás”, es una técnica algorítmica de resolución de problemas mediante una búsqueda sistemática de soluciones. El backtracking hace uso de la recursividad para descomponer la tarea a realizar en tareas parciales, y probar cada una de estas. Cuando al elegir una tarea se comprueba que no lleva a ninguna solución, se debe volver atrás, y probar con otra. Así, se van probando sistemáticamente posibles soluciones al problema hasta que se encuentra una que lo resuelve.

Ejemplo de Backtracking: Resolviendo Laberintos

Un ejemplo de problema fácilmente resoluble con backtracking (y difícil sin métodos recursivos) es el encontrar la salida a un laberinto. El algoritmo básicamente funciona así:

  1. Comprobamos si la casilla donde estamos actualmente ya es la salida, y si es así, salimos de la función indicando que se ha encontrado la casilla de salida.
  2. Si no es así, entonces llamamos recursivamente a esta misma función con la casilla de arriba de la actual, y si ahí se encuentra la salida, salimos de la función indicando que se ha encontrado la salida del laberinto.
  3. Si no se encontró la salida por arriba, entonces llamamos recursivamente a esta misma función con la casilla de abajo de la actual, y si ahí se encuentra la salida, salimos de la función indicando que se ha encontrado la salida del laberinto.
  4. Si no se encontró la salida por abajo, entonces llamamos recursivamente a esta misma función con la casilla de la izquierda de la actual, y si ahí se encuentra la salida, salimos de la función indicando que se ha encontrado la salida del laberinto.
  5. Si no se encontró la salida por la izquierda, entonces llamamos recursivamente a esta misma función con la casilla de la derecha de la actual, y si ahí se encuentra la salida, salimos de la función indicando que se ha encontrado la salida del laberinto.
  6. Si no se encontró la salida por ninguna de las cuatro casillas colindantes, entonces salimos de la función indicando que no existe salida del laberinto por la casilla actual.

A continuación se muestra el código del algoritmo de resolución de laberintos:


Parece increíble que con estas pocas líneas de código se pueda encontrar la salida de cualquier laberinto,  independientemente de su complejidad (aunque no se asegura que sea la salida más corta). Al ejecutar el programa, obtenemos la salida del laberinto de ejemplo:


Otro Ejemplo de Backtracking: Resolviendo Sudokus

Otro clásico ejemplo para ilustrar el uso del backtracking es un programa que resuelve sudokus utilizando esta técnica. El algoritmo funciona básicamente así:

  1. Elegir la primera casilla vacía, empezando a buscar desde la casilla superior izquierda.
  2. Probar a colocar el número 1 en esa casilla, y ver si no existe ningún conflicto (no existe ningún número igual en la misma fila, columna o bloque):
  • Si existe un conflicto, volver al paso 2) y probar con el siguiente número
  • Si no existe ningún conflicto, llamar recursivamente al paso 1) para ver si se encuentra una solución:
    • Si no se encuentra, y hay más números para probar, volver al paso 2) y probar con el siguiente número.
    • Si no se encuentra y no hay más números para probar, salir de la función indicando que no se ha encontrado solución.
    • Si se encuentra, salir de la función indicando que si se ha encontrado solución.
A continuación se muestra el código en Java del algoritmo para resolver cualquier Sudoku utilizando backtracking:

Al ejecutar el programa con el Sudoku de ejemplo se obtiene la solución en pocos segundos:


martes, 13 de diciembre de 2011

Cierran el cerco alrededor del Bosón de Higgs

Según se puede leer hoy en muchos medios, desde el LHC están consiguiendo acorralar al Bosón de Higgs, de forma que, si realmente existe, debe encontrarse en un rango de masas entre los 116 a 130 GeV según el detector ATLAS, y los 115 a 127 GeV según lo obtenido por CMS. La existencia del Bosón de Higgs está predicha por el modelo estándar de física de partículas desde hace varias décadas.
Los últimos resultados expuestos hoy indican que hay evidencias de que el Bosón de Higgs exista, pero no tantas como para afirmarlo rotundamente. Es por eso que tendremos que esperar hasta el año que viene para poder confirmar o desmentir su existencia (esperemos que lo primero).
Podéis consultar la comunicación oficial del CERN aquí.

sábado, 3 de diciembre de 2011

Selección de noticias - 03122011

Aquí está la última selección de noticias clasificadas por tema.
eAdministración:
Tecnología:
Ciencia:
Programación y Arquitectura del Software:
Docencia:
Humor y Curiosidades:

martes, 29 de noviembre de 2011

Vídeo: Nuevo record de mini-robot recorriendo laberinto

Se ha batido un nuevo record en la competencia Micromouse, en la que diseñadores de robots en miniatura compiten por resolver un laberinto en el menor tiempo posible.
El nuevo record se establece en 3.921 segundos, y aquí está el vídeo de la hazaña:

Os dejo también el vídeo de la fase de "reconocimiento" en la que se deja al robot reconocer el laberinto para luego solucionarlo lo más rápido posible:

Visto aquí.

jueves, 24 de noviembre de 2011

Algunas cosas que he aprendido en la vida



Hay algunas cosas en la vida que, por más que te las digan, hasta que no las vives en tus propias carnes no terminas de asimilar. Son enseñanzas que a menudo te dice tu abuela o las encuentras en el refranero popular, pero como digo no terminas de "hacerlas tuyas" o creerlas de todo corazón hasta que no las has experimentado por ti mismo. A raíz del vídeo de Emilio Duró que he publicado hace poco me he puesto algo sentimentaloide y he estado pensando sobre esas cosas fundamentales que he aprendido en la vida, y quería compartirlas con vosotros aunque no traten sobre la temática habitual del blog. Yo he tardado muchos años en asimilarlas y creer fírmemente en ellas, y me daría por satisfecho si al menos a alguno de vosotros os sirviesen para reflexionar. Ahí van algunas de esas cosas que he aprendido en la vida:

Nunca pares de aprender, el futuro "conectará los puntos"
Como bien decía Steve Jobs en su discurso, hay que confiar en que el futuro "Conectará los puntos". Muchas veces he aprendido cosas que pensé que nunca me iban a sevir para nada, y el futuro me ha demostrado lo contrario. Algunas de las cosas que aprendí de muy joven por mera inquietud tecnológica, me ayudaron años más tarde a resolver problemas complejos.
Recuerdo algunos ejemplos concretos que me han sacado de más de un apuro aunque nunca creí que me ayudarían: conocer cómo funciona físicamente una CPU, saber cómo funciona internamente el protocolo HTTP, el latín que aprendí en el instituto, la representación en binario de un número decimal, la diferencia entre Little-Endian y Big-Endian, los algoritmos de ordenación de arrays, etc.
Hoy mismo he tenido que echar una mano a una compañera con un código en Java en el que he tenido que tirar de los conocimientos que adquirí sobre teoría de grupos y permutaciones en la asignatura de la carrera que trataba sobre "Matemática Discreta" de Fernando Chamizo.

Haz deporte
Hacer deporte es fundamental para tener equilibrio emocional. Recuerdo que uno de mis primeros profesores de ajedrez, el argentino Daniel Elguezabal, una vez me dijo que la mayoría de los campeones mundiales de ajedrez de todos los tiempos habían practicado deporte. Y es que el refrán "mens sana in corpore sano" es una de las directrices que sigo a rajatabla en mi vida. Practica deporte al menos un par de veces en semana, es necesario no sólo para el cuerpo, sino también para la mente (la sensación de bienestar que se te queda después de una hora de deporte aeróbico y una ducha relajante no tiene precio).

Estudia lo que te gusta
Alguna vez alguien ha venido a pedirme consejo sobre qué estudiar. Jóvenes (o no tan jóvenes) que han terminado selectividad y quieren estudiar una carrera, y no saben cuál. Yo siempre respondo con una pregunta: ¿Qué es lo que te gusta hacer?. Creo que es un grave error estudiar una carrera porque tenga más o menos salidas. Uno tiene que estudiar lo que le gusta, de esa manera está maximizando las posibilidades de hacerlo bien, ya que uno aprende mucho mejor las cosas que le interesan. Ya tendrás tiempo de hacer cosas a las que te veas obligado, si ahora puedes elegir, elige aprender lo que te gusta, y no lo que "te conviene".

Aprende de tus errores y no tengas miedo a equivocarte
No hay que tener miedo a equivocarse, ya que aprender de los errores propios es una de las mejores y más rápidas formas de aprendizaje. Los seres humanos estamos codificados para aprender de nuestros errores, desde que somos pequeños y a base de caernos y darnos golpes aprendemos a andar manteniendo el equilibrio. Tenemos que ver un error como una posibilidad de aprendizaje, es mejor intentarlo y errar que nunca llegar a hacerlo (no dejes que el miedo a fracasar te impida jugar el juego).
Sin duda alguna las dos épocas que más he aprendido profesionalmente en mi vida han sido dos que han acabado en batacazo empresarial (y si no que se lo digan a mis antiguos compañeros de NK y OXX).

No dejes mucho tiempo de hacer lo importante por priorizar lo urgente
En nuestra vida personal y profesional siempre hay cosas urgentes que tenemos que hacer. El problema está cuando nos dedicamos únicamente a dar solución a esas cosas urgentes, y nos olvidamos de hacer aquellas no tan urgentes pero mucho más importantes (no corren prisa, pero si estamos mucho tiempo sin hacerlas podemos perderlas).
¿Cuántas veces has pensado "a ver si llamo a fulanito que hace mucho tiempo que no sé nada de él" y al final siempre has encontrado algo más urgente que hacer?. En la vida personal, cuidar a la familia y a los amigos es una inversión a largo plazo, nunca es urgente llamarlos, pero es suficientemente importante como para no dejar de hacerlo durante mucho tiempo.
En mi vida profesional, una de las cosas importantes que trato de priorizar frente a las urgentes es el estar actualizado profesionalmente. Por muy ocupado que esté en mi trabajo, nunca dejo pasar más de un par de días sin acudir a Google Reader para leer mis habituales fuentes de información tecnológica. También trato de formarme asistiendo a cursos y charlas, por muy liado que esté (si miro hacia atrás, no recuerdo ningún momento profesional en los últimos 12 años en los que no haya estado liado, si hubiese dejado de ir a los cursos por estar liado... no habría ido a ninguno!).

Disfruta del camino
La felicidad total nunca se logra, porque los seres humanos necesitamos por naturaleza tener metas e inquietudes. Si las alcanzamos, nos bucamos otras. Por esto mismo, lo más importante de todo lo que persigues es lo que aprendas y disfrutes durante el camino que sigues llegando a ello, la meta en si misma no tiene importancia. Hay una frase muy bonita, a mi me abre bastante los ojos: “La vida es eso que pasa mientras haces planes”.

Sonríe!
Las sonrisas son gratis. No cuestan nada, y sirven para alegrar a la gente. Siempre que puedas sonrie, sonrie sintiéndolo. Si sonríes a la vida, la vida te sonreirá.

Ponte en el lugar de los demás
Es fundamental ponerse en el papel de los demás. La empatía es una cualidad importantísima, y te hace ver el mundo de otra manera. Hay que ser consciente de que ninguna realidad es absoluta, cada uno percibimos nuestra propia verdad, y lo que para nosotros puede estar clarísimo, para el que tenemos al lado puede ser cuanto menos dudoso.

Sé sincero, no mientas
Hay que ser sincero hasta la médula. La mentira no lleva a ninguna parte. Cuando veo que una persona me dice algo difícil de decir, y me doy cuenta de que esa persona podría haberse inventado cualquier mentira o símplemente no haber dicho nada y nadie se habría dado cuenta, y sin embargo ha preferido decirlo aunque incomode, eso te dice mucho (y bueno) sobre esa persona. Por eso intento no mentir nunca, prefiero que la gente me valore por lo sincero y lo valiente que soy cuando no recurro a la mentira ni aunque esa sea la salida fácil.

Presunción de Bondad: "Todo el mundo es bueno mientras no se demuestre lo contrario"
La mayoría de las personas son buena gente. Si partes de una premisa defensiva te perderás el conocer a muchas personas interesantísimas que podrían aportarte mucho en la vida. Por eso yo tomo como punto de partida la premisa de que todo el mundo es bueno hasta que se demuestre lo contrario. Me abro a la gente desde el principio, sabiendo que corro el riesgo de llevarme alguna decepción. Aún así merece la pena, os lo aseguro.

Aprende a decir "te quiero"
Esta es una de las cosas que más tiempo he tardado en aprender. Cuando quieras a una persona díselo, no asumas que lo sabe, ni te dé vergüenza decirlo. Las palabras “te quiero” son las más bonitas que se han inventado.

sábado, 19 de noviembre de 2011

Vídeo: Emilio Duró - Optimismo e Ilusión

El ver este vídeo de principio a fin han sido las dos horas que mejor he invertido en mucho tiempo. Un vídeo motivador donde los haya, con grandes dosis de humor y profundos conocimientos de la naturaleza del ser humano. Toda una inspiración sobre filosofía de vida (gracias Andrés por enviarme el enlace):

En el minuto 23 empieza una de las partes que más me ha impactado, una explicación científica (basada en la estructura del cerebro) de por qué enseñar haciendo reír, emocionarse y sentir, hace que los alumnos aprendan más y mejor. Me ha encantado porque es algo de lo que yo estoy convencido y practico desde hace años (introduciendo las emociones y el humor en las clases), pero da una explicación científica a este hecho. Algunas perlas sacadas del vídeo (minuto 25:25):
  • ¿Sabéis de qué depende que un niño aprenda? -> De lo que se quiera al profesor.
  • ¿Sabéis de qué depende que vaya bien esta charla? -> De cómo os caiga yo. 
  • El cerebro no ve nada más que lo que tus emociones quieren.
Os aconsejo de todo corazón verlo entero, seguro que no os arrepentís.

martes, 8 de noviembre de 2011

Selección de noticias - 08112011

Aquí está la última selección de noticias clasificadas.
eAdministración:
Tecnología:
Ciencia:
Programación y Arquitectura de Software:
Humor y Curiosidades:

lunes, 7 de noviembre de 2011

Club de Innovación: Compartir casos de éxito en la Administración Pública

Desde Gate2G han contactado conmigo para dar a conocer Club de Innovación, un portal para compartir buenas prácticas y casos de éxito en las Administraciones Públicas. Es un servicio gratuito para todos los empleados y responsables públicos que quieren divulgar sus casos de éxito o conocer los de otras administraciones, y un canal para que las empresas innovadoras presenten sus propuestas.
Desde Club de Innovación publican periódicamente un boletín con casos de éxito y buenas prácticas en Administraciones Públicas, ya está disponible el número 36.
Se trata de una iniciativa muy interesante, somos muchos los que pensamos que salvo algunos casos contados, en cuestiones tecnológicas dentro de la Administración Pública se reinventa la rueda una vez tras otra. Estoy convencido de que en otras autonomías hay gente llevando a cabo proyectos similares a algunos en los que estoy involucrado en la Comunidad de Madrid, como el framework ATLAS, la definición de una Normativa y Buenas Prácticas para uso de Base de Datos, o la metodología de desarrollo de proyectos de Business Intelligence.

jueves, 3 de noviembre de 2011

viernes, 28 de octubre de 2011

Abierto portal de Apertura de Datos del Gobierno de España (en fase Beta)

Buenísimas noticias!
Me acabo de enterar por twitter de que está abierto (todavía en fase beta) el portal de Apertura de Datos del Gobierno de España, datos.gob.es que tanto estábamos esperando desde que se anunció en el último encuentro sobre iniciativas open data en España.
Mis primeras impresiones son muy buenas:
  • Un diseño minimalista orientado a la búsqueda de catálogos al más puro estilo Google.
  • Integración con Redes Sociales (twitter y LinkedIn), y posibilidad de suscripción por RSS
  • Posibilidad de suscribirse por correo electrónico a un Boletín de Novedades (supongo que será el del proyecto Aporta).
  • Zona dedicada a Aplicaciones basadas en Open Data, y buscador de Aplicaciones integrado.
Como posibles pegas (por buscar alguna, aunque como digo la impresión es muy buena):
  • Por ahora veo pocos catálogos de datos, espero que esto crezca con el tiempo y no caiga en el olvido.
  • Los Catálogos de Datos disponibles no están por ahora en formatos muy reutilizables (sólo HTML y XHTML), se echan de menos catálogos en XML y/o RDF.
Es genial que por fin tengamos en España un portal a nivel estatal dedicado al Open Data... vamos por el buen camino!

jueves, 27 de octubre de 2011

Adivinanza: ¿Por qué la gallina cruzó la carretera?

Estoy experimentando con códigos QR. Me he descargado esta aplicación para el iPhone y he probado un generador de códigos QR.
¿Sabes por qué la gallina cruzó la carretera?
Más sobre códigos QR en la wikipedia.
Más respuestas a la eterna pregunta aquí.

miércoles, 26 de octubre de 2011

Selección de noticias - 26102011

Aquí está la última selección de noticias clasificadas.
Actualidad:
eAdministración:
Tecnología:
Jobs:
Ciencia:
Programación y Arquitectura del Software:
Humor y Curiosidades:

domingo, 23 de octubre de 2011

Diez ideas para aplicaciones basadas en Open Data

#ogov #egov #opendata
La Apertura de Datos por parte de las administraciones públicas es uno de los tres pilares en los que se basa el cambio cultural que se está produciendo en las administraciones de todo el mundo siguiendo la línea del Gobierno Abierto (Open Government).
Tal como conté hace tiempo en otro artículo, la apertura de datos consiste básicamente en un compromiso por parte de las administraciones de hacer pública toda la información de que disponen para que pueda ser consultada y explotada libremente. Con esto no me refiero a que la Administración desarrolle servicios que los ciudadanos puedan utilizar (que también puede hacerlo), sino a que publique sus datos en formatos abiertos, para que otras iniciativas (públicas o no) los exploten y ofrezcan dichos servicios.
Para celebrar el recientemente aprobado real decreto que promueve la apertura de datos de la administración general del estado, quería compartir con vosotros algunas ideas sobre aplicaciones que podrían aportar valor al ciudadano apoyándose en datos abiertos. No he realizado una búsqueda profunda por lo que es probable que algunas de estas aplicaciones ya existan (y si no existen a lo mejor alguna os sirve de inspiración y os animáis para el próximo Desafío AbreDatos).
He intentado que las ideas agreguen más de una fuente de datos abiertos, para que la aplicación aporte valor sobre el acceso a la propia fuente de datos en bruto, y hacer así más notable el papel de los infomediarios. Al listar las fuentes de datos, he puesto enlaces a posibles orígenes de datos de los que podría extraerse la información (algunos de ellos son ejemplos en la Comunidad de Madrid porque son los que conozco, pero podrían utilizarse de cualquier Autonomía).

1.- Sobre Mi Pueblo 
Descripción: Aplicación que es capaz de mostrar gran cantidad de información sobre cualquier pueblo basada en la agregación de multitud de fuentes de datos abiertos. Sería una aplicación en la que de un vistazo podrías obtener una visión general sobre un pueblo (puede ser un pueblo al que estés pensando mudarte, o uno al que estás planeando ir de vacaciones, o tu pueblo natal, ...). Podría mostrar estadísticas de todo tipo acerca del pueblo, datos meteorológicos actuales e históricos, datos electorales, calendario de fiestas locales, índices de delincuencia, presupuestos, padrón, cualquier información sobre el pueblo aparecida en boletines oficiales, etc.
Catálogos de Datos que Utiliza:
2.- Diez minutitos más
Descripción: Aplicación para el móvil que te despierta con una alarma antes para que llegues sin problemas al trabajo si se da cuenta que hay atascos en la ruta que sigues para ir a trabajar. Se trataría de una aplicación en la que un usuario introduce la ruta que sigue para llegar al trabajo todas las mañanas, y basándose en la información sobre incidencias y las cámaras de la DGT sería capaz de saber si hay atasco en la carretera (y por tanto despertarte a tu hora o antes para que no llegues tarde). La aplicación te mostraría las cámaras que hay de camino a tu trabajo, para que pudieses ver el estado del atasco en tiempo real.
Catálogos de Datos que Utiliza:
3.- Planifica tu viaje
Descripción: Aplicación que te ayuda a planificar un viaje, por ejemplo para ir de vacaciones. Dada la ruta que pretendes hacer, la aplicación puede ofrecerte información sobre puntos de interés cercanos a visitar, fiestas y costumbres de los pueblos de la zona, información meteorológica histórica y previsión (para saber si llevar ropa de abrigo), información sobre puntos negros en las carreteras de la ruta a seguir, radares en la ruta de tu viaje, etc. También podría ayudarte a planificar la fecha de tu viaje en función del calendario laboral, festividades locales, etc.
Catálogos de Datos que Utiliza:
4.- Haber estudiado
Descripción: Aplicación que te ayuda en la búsqueda de empleo. Permite enviar alertas por correo electrónico al usuario cuando aparecen convocatorias de oposiciones, becas y/o ayudas, subvenciones, etc. También muestra estadísticas del mercado de trabajo por sectores, estadísticas de desempleados, etc.
Catálogos de Datos que Utiliza:
5.- De qué se habla en las cortes 
Descripción: Aplicación que permite navegar de forma cómoda (con hiperenlaces) por toda la información que se genera en El Congreso de los Diputados. Podría mostrar una nube de etiquetas sobre los temas más tratados, ofrecer un buscador, estadísticas agregadas de participación, leyes aprobadas, absentismo, etc.
6.- Acuérdate
Descripción: Aplicación que te permite gestionar tu "agenda inteligente". Puedes introducir tus propias citas personales en la agenda, pero también puedes seleccionar citas o calendarios que provienen de fuentes abiertas y agregarlos a tu agenda. Por ejemplo, podrías agregar a tu agenda automáticamente el calendario laboral de tu ciudad de trabajo, las fiestas de los pueblos de tu zona o las fechas en las que se publican ciertas ayudas o becas para acordarte de solicitarlas. Otros posibles calendarios de fuentes abiertas podrían ser agendas institucionales, calendario escolar, etc.
Catálogos de Datos que Utiliza:
7.- Mis ratitos de ocio
Descripción: Aplicación que te ayuda a planificar tus ratos de ocio basada en información de fuentes abiertas sobre conciertos, eventos, cines, fiestas municipales, etc. Dada una fecha, podría proponerte diversos planes basados en la información de todas estas fuentes. También se podría integrar con la aplicación "6.- Acuérdate de lo mío" para que añada eventos en tu agenda en función de los conciertos de tus grupos favoritos (recordándote también que compres las entradas) o las fiestas de los pueblos cercanos al tuyo, o las fechas de los estrenos de cine.
Catálogos de Datos que Utiliza:
8.- Estate atento
Descripción: Buscador agregado en todos los boletines oficiales nacionales y autonómicos que te permita establecer alertas para cuando aparezcan ciertos términos en los boletines se te envíe un correo electrónico. Podría servir para monitorizar noticias de cualquier tema, vigilar la aparición de multas, notificaciones de embargos, convocatorias de concursos, oposiciones, etc. Similar al proyecto booletin que presenté al desafío AbreDatos 2010 pero agregando todos los boletines oficiales.
Catálogos de Datos que Utiliza:
  • BOE
  • BOCM
  • (Boletines oficiales de todas las autonomías)
9.- Para y Pregunta
Descripción: Aplicación para el móvil que utilizando la localización actual es capaz de ofrecerte información de fuentes abiertas sobre puntos de interés (POI's) cercanos a tu localización: gasolineras, farmacias, centros comerciales, centros de salud, estancos, etc. Sería similar a Foursquare pero agregando información de fuentes abiertas.
Catálogos de Datos que Utiliza:
  • Puntos de Interés (POI's), 
10.- Qué hay de lo mío
Descripción: Aplicación que ofrece en tiempo real el estado de las listas de espera para pruebas médicas e intervenciones en los hospitales. Podrías ver el estado de la lista de espera para una prueba médica en concreto (y si estás en una de ellas, la fecha estimada en la que te tocaría). Podría también permitir buscar centros alternativos en los que realizar una determinada prueba.
Catálogos de Datos que Utiliza:

¿Qué te parecen estas ideas?
¿Se te ocurre alguna otra aplicación interesante?

sábado, 22 de octubre de 2011

Mi librillo: El ranking


Existe un refrán popular que dice que "cada maestrillo tiene su librillo", y hoy me apetecía compartir con vosotros parte de "mi librillo".
Se trata de una experiencia docente que comencé a llevar a cabo hace cuatro años entre mis alumnos de la asignatura de Programación en Java de primer año de carrera (ahora del Grado en Ingeniería Informática) en la Universidad Carlos III de Madrid.
Esta experiencia ha resultado ser una de las mayores medicinas contra el absentismo (se ha pasado de tasas del 25% a las actuales de menos del 10%), además de aumentar la motivación y el grado de atención de los alumnos en clase: "EL RANKING".
Tal como cuento a los alumnos el primer día de clase, "El Ranking" es el nombre de una lista donde mantengo una puntuación asociada a cada alumno. La puntuación varía en función de sus aciertos en unas preguntas tipo test que todos los días realizo al final de clase.
La motivación de los alumnos por el ranking según avanza la asignatura es increíble, y a ello contribuyen diversas razones:
  • La puntuación en el ranking afecta a la nota final en la asignatura: Aunque podría parecer que este debiera ser el motivo fundamental, para los alumnos se trata de un motivo residual, ya que el ranking sólo afecta a la nota de manera simbólica y así quiero que sea (medio punto sobre la nota final). Prefiero que se diviertan aprendiendo Java y les apetezca subir en el ranking por otros motivos, más que por ese medio punto.
  • Al final de la asignatura, regalo un libro sobre Java a los primeros clasificados en el ranking: Esta ha resultado ser una de las mayores motivaciones para ellos, en ocasiones les oigo hacer comentarios sobre ese libro y lo cerca o lejos que están de conseguirlo.
  • Cada día lo primero que hago al llegar a clase es mostrar cómo va el ranking: Lo muestro ordenado para que los alumnos vean el número de aciertos que llevan en las preguntas, y cómo están situados en el ranking respecto a sus compañeros. Esto ha generado un tipo de competitividad sana entre ellos, y digo "sana" porque compiten y se pican entre ellos por el simple hecho de conseguir el libro, o por ver que ese día están por encima de su compañero/amiguete de al lado, o por ver que han llegado a estar entre los diez primeros de la lista. Promuevo esto con comentarios sobre el ranking cuando lo muestro (algunos jocosos al más puro estilo de un comentarista del Tour), como "parece que Fulanito ya está más cerca del libro", "Fulanito y Menganito siguen mano a mano disputándose los primeros puestos", "Menganito ha remontado varios puestos", etc.
La metodología del ranking es bastante sencilla, y merece la pena por los resultados, aunque supone bastante trabajo adicional para mí (todos los días tengo que llevar preparadas preguntas para el ranking, corregir las del día anterior y mantener la lista actualizada para mostrarla al principio de la clase). La metodología es básicamente la siguiente:
  1. Todos los días al comenzar la clase muestro el ranking ordenado y "comento las mejores jugadas"
  2. Reservo los diez últimos minutos de clase para plantear dos o tres preguntas de tipo test. Es importante que las preguntas estén relacionadas con lo que se ha explicado ese día en clase, esto hace que los alumnos estén más atentos durante la clase porque saben que al final habrá preguntas de "el ranking" sobre eso.
  3. Cada alumno pone su nombre en una hoja junto a sus respuestas a estas preguntas (los primeros años probé a pasar una hoja con sus nombres para que pusiesen ahí las respuestas y facilitarme la corrección, pero se tardaba mucho y además algunos de ellos copiaban las respuestas de sus compañeros).
  4. Después de recoger las hojas con las respuestas de todos, corrijo las preguntas en la pizarra para que vean si han cometido errores y aprendan de ellos.
El ranking ha llegado a tener tanto éxito entre los alumnos que cuando termina la clase algunos me piden que haga más preguntas para poder "subir puestos". Lo nunca visto, alumnos pidiendo que se alargue el tiempo de clase!!!
Además gracias al ranking las clases se han hecho bastante más dinámicas y amenas, y esto es de agradecer porque la asignatura se imparte los viernes por la tarde y cuesta más mantener a los alumnos motivados y atentos, teniendo el fin de semana tan próximo.

Y a ti, ¿qué te parece la iniciativa?
¿Crees que es bueno fomentar la competitividad en clase?
Si has sido alumno mío durante estos últimos cuatro años, ¿te ha gustado el método? ¿qué cambiarías en él?

martes, 18 de octubre de 2011

Vídeo: Levitación cuántica

Impresionante este vídeo en el que se muestra un efecto de "levitación" debido a un efecto cuántico producido en semiconductores a muy baja temperatura.


En este vídeo se explica mejor el efecto.


Visto aquí.

lunes, 17 de octubre de 2011

Vídeo: Keynes en España y el Modelo Parasitario Chino

Muy buen vídeo de un catedrático de economía, explicando la respuesta de España ante la crisis (presionada por Alemania), y el modelo a través del cuál China está dominando la economía mundial.


Para los que os haya gustado, un par de vídeos más:

viernes, 14 de octubre de 2011

Fallece Dennis Ritchie, padre de Unix y el Lenguaje de Programación C


Cuántos informáticos habremos crecido programando en Lenguaje C, teniendo como biblia el famoso "Kernighan & Ritchie". Yo di mis primeros pasitos en C a los 11 años, todavía recuerdo cuando compilé mi primer "Hello World" basándome en un curso de Borland sobre Turbo C.
El fin de semana pasado ha fallecido uno de los geniales inventores del lenguaje C, y creadores entre otras muchas cosas del sistema operativo Unix: Dennis Ritchie.
No fue tan famoso y mediático como Steve Jobs, pero el legado de este desconocido para muchos está a la altura del de los más grandes del mundo de la tecnología.
Descanse en Paz.
Más información aquí, aquí o aquí.