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

Curso 2023/2024
Fecha de aprobación: 23/06/2023

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

Práctico

Manuel Pegalajar Cuéllar Grupo: 1

Tutorías

Manuel Pegalajar Cuéllar

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

Prerrequisitos y/o Recomendaciones

Se recomienda 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.

El temario de teoría se organiza en los siguientes módulos o temas:

  • 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. Dichas prácticas 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.

Las prácticas serán llevadas a cabo utilizando Arduino. En particular, la placa Arduino UNO se equipará con elementos sensores y/o actuadores que permitan realizar diferentes tareas relacionadas con el temario de teoría. Las prácticas consistirán, por tanto, en la elaboración de sketchs y su posterior implementación en la placa para resolver diversos problemas, y se organizan en los siguientes proyectos:

  1. Introducción a Arduino. Programación y gestión de entradas y salidas.
  2. Códigos biométricos: Lectura de huellas dactilares con Arduino y sensores.
  3. Lectura y escritura de tarjetas RFID con Arduino, o implementación de transmisión eficiente de datos mediante láser (códigos óptimos).
  4. Detección y corrección de errores con Arduino y lectores de códigos 1D (códigos de barras) y 2D (códigos QR).

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 2022.
  • San Ling, Chaoping Xing, Coding Theory: A first course, Cambridge University Press 2004.
  • Andre Neubauer, Coding theory: algorithms, architectures, and applications, John Wiley, 2008.

Bibliografía complementaria

  • 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. 2013.
  • Mackay, D. Information Theory, Inference, and Learning Algorithms. Cambridge University Press. 2003.
  • 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). 
  • MD03.  Seminarios (Debates, Demos, Exposición de Trabajos Tutelados, Conferencias, Visitas Guiadas, Monografías). 
  • MD04. Actividades no presenciales Individuales. 
  • MD05. Actividades no presenciales Grupales. 
  • MD06. Tutorías Académicas. 

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.

La calificación final será una valoración numérica entre 0 y 10, correspondiente a la suma ponderada de las evaluaciones de los contenidos teóricos y de los contenidos prácticos. El 50% de la calificación se corresponderá con la evaluación de los contenidos teóricos, y el restante 50% con la evaluación de los contenidos prácticos. No se requiere un mínimo de calificación en ninguna de las dos partes para superar la asignatura, aunque sí se requiere haber entregado al menos el 75% de los ejercicios/proyectos de cada parte (de teoría y de prácticas) para asegurar que el alumno alcance las competencias de la asignatura.

El sistema de evaluación ordinaria se realizará mediante evaluación continua. Con respecto a la evaluación de contenidos teóricos, se realizará un proyecto en lenguaje Python por cada uno de los temas de la asignatura. Todos los proyectos contribuyen en el mismo porcentaje (1 punto absoluto) a la calificación final de la asignatura, y serán los siguientes:

  • Proyecto 1 (Tema 1): Generación de códigos de barras en Python.
  • Proyecto 2 (Tema 2): Diseño e implementación de diversas funciones para cálculo de medidas de información en Python.
  • Proyecto 3 (Tema 3): Compresión de datos mediante el método de Huffman.
  • Proyecto 4 (Tema 4): Implementación en Python de algoritmos de detección de errores en tarjetas de crédito y otros sistemas de verificación cotidianos.
  • Proyecto 5 (Tema 5): Generación de códigos QR en Python.

Con respecto a los contenidos prácticos, se evaluarán los diferentes proyectos prácticos realizados en el laboratorio, previamente descritos en la sección "Programa de contenidos teóricos y prácticos" de esta guía docente. Los 4 proyectos prácticos contribuirán con 1.25 puntos absolutos (cada uno) a la calificación final de la asignatura.

La evaluación tanto de los contenidos teóricos como prácticos se realizará mediante entregas de código fuente y memorias de proyecto que describan la solución del alumno a cada problema. Se reservará, no obstante, horas de clase para realizar defensas de cada proyecto (teórico o práctico) que sirvan para verificar la autenticidad del material entregado.

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 puntuació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 puntuació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.