Guía docente de Teoría de la Información y la Codificación (Especialidad Computación y Sistemas Inteligentes) (29611AA)

Curso 2022/2023
Fecha de aprobación: 14/06/2022

Grado

Grado en Ingeniería Informática

Rama

Ingeniería y Arquitectura

Módulo

Complementos de Computación y Sistemas Inteligentes

Materia

Herramientas de Computación Científica

Curso

4

Semestre

1

Créditos

6

Tipo

Optativa

Profesorado

Teórico

  • Manuel Pegalajar Cuéllar. Grupo: A
  • Isaac Triguero Velázquez. Grupo: A

Práctico

  • Manuel Pegalajar Cuéllar Grupo: 1
  • Isaac Triguero Velázquez Grupo: 1

Tutorías

Manuel Pegalajar Cuéllar

Email
  • Primer semestre
    • Lunes de 09:30 a 11:30 (D19 Etsiit)
    • Martes
      • 11:30 a 13:30 (D19 Etsiit)
      • 15:30 a 17:30 (D19 Etsiit)
  • Segundo semestre
    • Martes de 15:30 a 17:30 (D19 Etsiit)
    • Jueves de 11:30 a 13:30 (D19 Etsiit)
    • Viernes
      • 09:30 a 10:30 (D19 Etsiit)
      • 11:30 a 12:30 (D19 Etsiit)

Isaac Triguero Velázquez

Email
No hay tutorías asignadas para el curso académico.

Prerrequisitos y/o Recomendaciones

Tener cursadas las asignaturas las asignaturas básicas y obligatorias del Grado en Ingeniería Informática.

Breve descripción de contenidos (Según memoria de verificación del Máster)

  • Teoría de la Información.
  • Entropía.
  • Sistemas de Transmisión.
  • Códigos Detectores y Correctores.

Competencias

Competencias Generales

  • CG08. Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones.

Resultados de aprendizaje (Objetivos)

  • Conocer y utilizar los conceptos básicos de información y su medida de entropía, cantidad de información y capacidad del canal, asociado a un contexto probabilístico.
  • Conocer el sistema de transmisión desde que la información parte del usuario hasta que se convierte en un determinado código, y luego el paso inverso, descifrarlo para que sea legible por el usuario.
  • Conocer los sistemas de transmisión de información para conseguir que ésta sea lo más rápida, con la menor distorsión y al menor coste posible.
  • Conocer la teoría matemática de la información desarrollada por Shannon, que estudia el problema de la transmisión de información a través de los canales en los que puede haber ruido.
  • Comprender el concepto de codificación de una fuente, que tiene por objetivo adaptar, estadísticamente, la fuente productora de los mensajes que se deben transmitir por el canal.
  • Estudiar los códigos de descodificación única e instantánea: sus propiedades (primer y segundo teorema de Shannon).
  • Tener los conocimientos básicos sobre códigos para canales sin ruido.
  • Saber construir un código de Huffman y ver la diferencia entre códigos binarios y n-arios.
  • Saber construir un código de Shannon-Fano
  • Interpretar la diferencia entre los códigos de Huffman y los de Shannon-Fano
  • Adquirir los conocimientos básicos sobre Códigos para canales con ruido, incidiendo en los distintos códigos detectores y correctores.
  • Saber construir un código lineal
  • Saber construir un código de Hamming e interpretar sus analogías y diferencias con los códigos lineales.
  • Saber construir un código cíclico
  • Interpretar las diferencias entre los códigos cíclicos, BCH, Reed-Solomon y Goppa
  • Ser capaces de ver las ventajas e inconvenientes de cada código y cuando se debe usar cada uno de ellos.
  • Ser capaces de implementar los diferentes códigos aprendidos en las horas de teoría.
  • Ser capaces de implementar las medidas de información estudiadas en el primer módulo.

Programa de contenidos Teóricos y Prácticos

Teórico

El temario de la asignatura contempla dos bloques fundamentales: Teoría y Prácticas. El bloque de teoría se orienta a explicar qué es la información, qué medidas existen de información y sus propiedades, y la construcción de códigos simples. Particularmente, se estudiará la construcción de códigos óptimos para realizar una transmisión/codificación/almacenamiento eficiente de información, cómo usar redundancia de información para desarrollar técnicas para detectar errores en mensajes transmitidos en canales con ruido, y también técnicas para detectar y corregir errores en el mismo tipo de canal, cubriendo todos los objetivos y competencias mostrados en esta guía docente.

Las prácticas de la asignatura se plantearán con un doble objetivo: En primer lugar, servir para asentar los contenidos teóricos e implementar las técnicas aprendidas en teoría en lenguajes de propósito general. Por otra parte, que también se estudie de forma directa la utilidad de la teoría de la información y la codificación en aplicaciones reales. Para alcanzar ambos objetivos, el profesorado pondrá a disposición del alumno diferentes tareas de implementación de códigos y conceptos relacionados con la teoría.

Temario de teoría

  • Tema 1: Introducción a la Teoría de la Información.
  • Tema 2: Medidas de información. Cantidad de información. Información mutua.
  • Tema 3: Información en canales sin ruido. Códigos óptimos.
  • Tema 4: Información en canales con ruido. Códigos para detectar errores.
  • Tema 5: Códigos detectores y correctores de errores.

Práctico

Las prácticas de la asignatura se realizarán en el tiempo de clase, en el laboratorio del centro habilitado al efecto.

En particular, las prácticas serán llevadas a cabo utilizando el lenguaje Python, y consistirán en la implementación de diferentes códigos y algoritmos estudiados, que permitan al alumno poner en práctica los conocimientos teóricos adquiridos. Para ello, se plantea al principio de curso una clase de nivelación, o introducción a Python, cuadernos Jupyter y la biblioteca NumPy, junto con un conjunto de tareas a realizar durante el curso. Se proponen varias tareas por tema, de las cuáles el estudiante deberá escoger 5 en total (una por tema) para su realización.

  • Tema 1.
    • La Teoría de la Información: Buscar un sistema de generación y transmisión de información de la vida cotidiana y analizarlo.
    • Generación de códigos de barras: Diseño y generación de códigos de barras usando Python.
  • Tema 2.
    • Búsqueda Binaria Probabilística: Adaptación del algoritmo clásico de búsqueda binaria haciendo uso de técnicas de Teoría de la Información. Implementación en Python.
    • La Entropía de la información: Diseño e implementación de funciones de cálculo de medidas de información, y análisis en diversos casos. Implementación en Python.
  • Tema 3.
    • Primer Teorema de Shannon: Implementación de funciones en Python para descubrir características de códigos completos e instantáneos. Aplicación y ejemplos.
    • Compresión de datos con el método de Huffman: Implementación en Python del método de Huffman para creación de códigos instantáneos óptimos y aplicación para compresión de ficheros de texto.
  • Tema 4.
    • Codificación de tarjetas bancarias y DNIs: Implementación de funciones en Python para calcular códigos de bloque de suma modular para detección de errores en el cálculo de DNIs y de números de tarjetas bancarias.
  • Tema 5.
    • Códigos lineales: Implementación de funciones para codificar, decodificar y detectar y corregir errores con un código lineal.
    • Códigos de Hamming: Implementación de funciones para codificar, decodificar y detectar y corregir errores con un código de Hamming.
    • Códigos QR: Implementación de funciones para codificar códigos QR, e incluirlos en una matriz de visualización del código.

Bibliografía

Bibliografía fundamental

  • Adámek, J. Foundations of Coding. John Wiley & Sons, 1991.
  • David J.C. MacKay, Information Theory, Inference, and Learning Algorithms, Cambridge University Press 2003
  • Sarah Spence Adams, Introduction to Algebraic Coding Theory, Cornell University, 2006
  • Henk C.A. van Tilborg, CODING THEORY: A first course, Eindhoven University of Technology, 1993

Bibliografía complementaria

  • F. Halsall, “Multimedia Communications”, Pearson Education Limited, 2001.
  • Cover,T,m., Thomas,J.A. Elements of information Theory, Wiley-Interscience. Second edition. 2006
  • Gray,R.M. Entropy and Information Theory. Springer-Verlag. New-York. Second edition. 2010
  • Hamming,R,W. Coding and Information Theory. Prentice Hall. Second edition, 1986.
  • Kullback, S. . Information Theory and Statistics. Wiley. Second edition 1968.
  • Mackay, D. Information Theory, Inference, and Learning Algorithms. Cambridge University Press. 2003
  • Pierce, J.R. An Introduction to Information Theory. Dover Publications; Second edition .1980.
  • Van lInt, J.H. Introduction to coding theory. Springer-Verlag. Third edition. 1999.
  • Woungang,I., Misra, S., Misra,S.C. Selected topics in information and coding theory. Series on Coding Theory and Cryptology. 2010.

Enlaces recomendados

Metodología docente

  • MD01. Lección Magistral (Clases Teóricas-Expositivas) 
  • MD02. Actividades Prácticas (Resolución de Problemas, Resolución de Casos Prácticos, Desarrollo de Proyectos, Prácticas en Laboratorio, Taller de Programación, Aula de Informática, Prácticas de Campo). 

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)

Evaluación Ordinaria

El sistema de calificaciones se expresará mediante calificación numérica de acuerdo con lo establecido en el art. 5 del R. D 1125/2003, de 5 de septiembre, por el que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y validez en el territorio nacional.

Se deberán entregar tareas que se propondrán a los estudiantes con carácter semanal, con las siguientes restricciones:

  • Se deberá realizar sólo 1 tarea por módulo o tema. En total, el estudiante realizará, como mucho, 5 tareas a lo largo del curso (ver apartado "Contenidos" de este documento).
  • Es obligatorio realizar una tarea para 4 módulos, al menos, para ser evaluado. En otro caso, la calificación será numérica con valor 0 sobre 10.
  • Todas las tareas tienen 2 partes de evaluación: Teórica y práctica, donde cada una contará con el 50% de ponderación para obtener la calificación final de la tarea.
  • La evaluación de las tareas se realiza en horario de clase, mediante presentación de los contenidos teóricos y prácticos por parte del estudiante.
  • La calificación final, en convocatoria ordinaria, será expresada con valor numérico de 0 a 10, y se corresponderá con la suma ponderada de la valoración obtenida en cada tarea realizada a lo largo del curso.

Evaluación Extraordinaria

Se realizará un examen escrito con preguntas de desarrollo (teoría) o ejercicios (prácticas) que aseguren adquirir los conocimientos y habilidades requeridos en la asignatura. La evaluación tendrá una puntación en el rango de 0 a 10.

Evaluación única final

Se realizará un examen escrito con preguntas de desarrollo (teoría) o ejercicios (prácticas) que aseguren adquirir los conocimientos y habilidades requeridos en la asignatura. La evaluación tendrá una puntación en el rango de 0 a 10.

Información adicional

Régimen de asistencia

La asistencia a las clases no será obligatoria Se requerirá, siguiendo el sistema de evaluación continua, que el estudiante asista al menos a las sesiones de evaluación de cada tarea y defienda ante el profesor el resultado de la correspondiente práctica.