miércoles, 31 de julio de 2013

Escuela de ajedrez


El origen del ajedrez se remonta a tiempos muy pretéritos, posiblemente en la antigua India donde se jugaba a cuatro jugadores. Tras la conquista de Persia por los árabes, el ajedrez se divulgó en todo el imperio islámico, en especial en la España del siglo IX. Posteriormente, en el siglo XII el rey Alfonso X el Sabio promulgó el juego del ajedrez en su tratado Libro de los juegos cuyo éxito no tardó en extenderse por toda la Europa medieval. Pero no será hasta el siglo XV cuando se determinen las reglas del ajedrez moderno tal como lo conocemos en la actualidad.

El ajedrez es un juego que invita a la reflexión y a la lógica, con la idea de pasar un rato entretenido con amigos y familiares. También promueve el desarrollo intelectual y el carácter en las personas que lo practican.
Si está interesado en iniciarse en el juego, competir o mejorar sus aptitudes como jugador puede contactar con la Escuela de Ajedrez de la UNED:


"La Escuela de Ajedrez de la UNED desarrolla actividades de formación a distancia y promueve entre sus alumnos la participación en competiciones de ajedrez.
En el caso de las actividades a distancia, el sistema de funcionamiento es fundamentalmente por correspondencia y correo electrónico, con atención personalizada.
Los cursos de la Escuela están estructurados en tres niveles: Inicio (alumnos con experiencia nula o escasa), Medio (jugadores con experiencia en competiciones oficiales) y Alto  (jugadores con ELO nacional o internacional superior a 1900)". 


Herramientas para el estudio de grafos

La historia de los grafos comienza en la localidad de Königsberg (antigua Prusia, actualmente pertenenciente a Rusia) cuando el matemático suizo Leonhard Euler se vio en la necesidad de resolver el intrincado problema de cruzar, de una sola vez, todos los puentes situados en las dos islas del río Pregel, comenzando en un punto arbitrario y finalizando en el mismo lugar. Para resolver dicho problema surgió la teoría de grafos y el famoso problema de los siete puentes de Königsberg.

Hoy en día la utilidad de los grafos en informática es de importancia suma, pues se utiliza como estructura de datos para resolver problemas matemáticos en campos tan dispares como las redes de ordenadores, topología, sociología hasta el reconocimiento del lenguaje. 
En esta sección proponemos la aplicación con licencia Creative Commons (by-nc-sa) del profesor de la UPV Alejandro Rodríguez Villalobos para el estudio de los grafos http://arodrigu.webs.upv.es/grafos/doku.php?id=inicio

También incluimos una útil librería para grafos en Java: http://jgrapht.org/ y para C++: http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/index.html

lunes, 29 de julio de 2013

Segmentación y RISC

Flickr: by rafkt

El estudio de las CPUs segmentadas cerca del ecuador de la carrera de informática es esencial para la compresión y el análisis de arquitecturas diferentes a las ya conocidas y basadas en procesadores multiciclo. La invención de la segmentación y la estructura de instrucciones RISC en el diseño de microprocesadores acarreó un avance considerable en el rendimiento del software, al conseguir un paralelismo a nivel de instrucción con un CPI óptimo (CPI = 1) y consiguientemente un aumento de los MIPS totales.

Por todo ello, cabe mencionar algunas arquitecturas de microprocesadores actuales que le ayudarán a comprender y aplicar sus conocimientos de programación RISC:


viernes, 12 de julio de 2013

Herramientas de cálculo simbólico

Fuente: Wiris

Desde muy temprana edad el conocimiento de las matemáticas es imprescindible para fomentar las capacidades cognitivas como la geometría, la lógica y la aritmética. En los estudios universitarios de ingeniería son fundamentales los conocimientos de Álgebra, Cálculo, Física, Estadística, Química y Geometría. En la carrera de Informática en particular, son necesarios los conocimientos específicos de Álgebra, Cálculo, Estadística, Lógica matemática y Física.

Para facilitar el aprendizaje y la práctica de los instrumentos matemáticos más habituales: integrales, derivas, ecuaciones diferenciales, límites, matrices, etc. proponemos una serie de herramientas de software libre para ejercitar dichas habilidades de cálculo simbólico:

Wiris:  Herramienta escrita en Java y en línea para la resolución de problemas matemáticos. Incluye lenguaje de programación muy elemental. 

GNU-Octave: Software open-source multiplataforma basado en el conocido programa MatLab y compatible con éste. 

wxMaxima:  Potente herramienta multiplataforma para el cálculo simbólico también gratuita. 

R: Potente programa gratuito y multiplataforma para el análisis estadístico y representación gráfica.  

Además, un estudio del profesor de secundaria Antonio Pérez Sanz del I.E.S Salvador Dalí de Madrid, sobre el software más adecuado para iniciarse en el mundo del álgebra, cálculo y geometría:

miércoles, 10 de julio de 2013

Linux kernel in depth

Fuente: Wikipedia (Linux kernel map)

Se acaba de liberar el kernel 3.10 de Linux el 30 de junio de 2013. Son muchos los desarrolladores de código libre los que han hecho posible la última versión del núcleo. Gracias a su licencia GPL (General Public License) muchos programadores y diseñadores de sistemas pueden beneficiarse del código del núcleo para mejorarlo o adaptarlo a otros dispositivos. El núcleo de Linux está programado íntegramente en lenguaje C y compilado con GCC, aunque algunas partes se encuentran implementadas en ensamblador.  
Las características y funcionalidades del núcleo de la familia Unix/Linux se estudian en segundo curso de las carreras de Ingeniería Informática e Ingeniería Técnica Informática de manera teórica y práctica. El estudio de su arquitectura es fundamental para conocer la estructura formal de un sistema operativo moderno. No obstante, si está interesado en profundizar en la temática o quizá ser un miembro activo del kernel de Linux, le proponemos la lectura del libro: "Understanding the Linux Kernel" de Daniel P. Bovet y Marco Cesati de la editorial O'Reilly. El presente libro se encuentra accesible para evaluación en Google Books en la siguiente dirección: 


Si está interesado en acceder a los repositorios de la última versión del núcleo, puede visitar la siguiente URL:  https://www.kernel.org/ 

lunes, 8 de julio de 2013

Sistemas criptográficos

Fuente: Wikipedia (Diffie-Hellman)

Los sistemas criptográficos han sido utilizados desde la antigüedad para cifrar mensajes estratégicos en campañas militares sin que pudieran ser reconocidos por el enemigo. También fueron muy utilizados en la Gran Guerra, y sobre todo, en la Segunda Guerra Mundial donde se utilizó la famosa máquina alemana Enigma. Tras la conclusión de la Segunda Guerra Mundial, la criptografía tiene un desarrollo teórico importante, siendo Claude Shannon y sus investigaciones sobre teoría de la información esenciales hitos en dicho desarrollo.

En este sección proponemos un tutorial muy práctico sobre criptografía proporcionado por el profesor de la Universidad de Jaén: Manuel J. Lucena López . Estos apuntes de tercer curso de Ingeniería Técnica en Informática de Gestión presentan de forma completa las técnicas para cifrar y descifrar mensajes basadas en un enfoque de la teoría de la información (TIC). En el presente documento podrá encontrar información que comprende desde los conceptos básicos, pasando por la complejidad algorítmica hasta las nuevas técnicas de cifrado asimétrico de doble clave, curvas elípticas y criptografía cuántica.

miércoles, 3 de julio de 2013

Técnicas de recolección de basura (Garbage collection)


Las técnicas y mecanismos para la recolección de basura son de gran relevancia cuando se diseñan lenguajes del tipo interpretados o semi-interpretados como Java, C#, Eiffel, Lua o Haskell. El concepto de recolección de basura fue inventado por John McCarthy en 1958 para evitar la gestión manual de memoria en el lenguaje Lisp. Desde entonces han surgido diferentes algoritmos con la idea de resolver el problema de la liberación de objetos residentes en la memoria del heap. Las técnicas de recolección de basura (garbage collection) son uno de los temas más complejos dentro del área de la Ingeniería Informática y más concretamente de la asignatura de Compiladores.

Si está interesado en tener unas leves nociones sobre dichas técnicas y algoritmos le proponemos las siguientes lecturas:

lunes, 1 de julio de 2013

Sistemas multiagente

Un sistema multiagente (SMA) es un sistema compuesto por múltiples agentes inteligentes que interactúan entre ellos. Los sistemas multiagente pueden ser utilizados para resolver problemas que son difíciles o imposibles de resolver para un agente individual o un sistema monolítico.
Los ámbitos de aplicación de estos sistemas, estudiados en la asignatura de Inteligencia Artificial, son fundamentales para modelar los comportamientos humanos como la cooperación, las interacciones sociales, las transacciones comerciales, las negociaciones y también en aplicaciones de sistemas robóticos y videojuegos. 

Un entorno especialmente útil para el desarrollo de sistemas multiagente en Java es JADE (Java Agent Development Framework). Con este framework es posible desarrollar soluciones multiagente prácticas y reales.
En la siguiente sección proponemos un tutorial sobre la implementación de sistemas multiagente con el entorno JADE, para el cual es necesario el conocimiento del lenguaje Java e Inteligencia Artificial (especialmente ontologías):


El contenido de la referencia URL es una actividad docente dentro de la asignatura de Sistemas Multiagente, materia optativa de de 5º curso de la Ingeniería Superior en Informática (Escuela Superior de Ingeniería Informática de la Universidad de Vigo).