GRADUADO EN INGENIERÍA DE
COMPUTADORES – Guía de Aprendizaje
Información al estudiante
DATOS DESCRIPTIVOSASIGNATURA: Codificación de la Información Nombre en inglés: Information Coding
MATERIA: CODIFICACIÓN DE LA INFORMACIÓN CARÁCTER: Optativa
TITULACIÓN: Graduado en Ingeniería de Computadores CURSO/SEMESTRE: Cuarto/primero
ESPECIALIDAD:
CURSO ACADÉMICO 2010 -- 2011
PERIODO IMPARTICIÓN:
Septiembre – Enero Febrero -- Junio x
IDIOMA IMPARTICIÓN:
Sólo Castellano Sólo Ingles Ambos x
CONOCIMIENTOS PREVIOS REQUERIDOS PARA PODER SEGUIR CON NORMALIDAD LA ASIGNATURA ASIGNATURAS SUPERADAS: Matemática Discreta Álgebra OTROS RESULTADOS DE APRENDIZAJE NECESARIOS
o Manejar con soltura la aritmética modular y el cálculo matricial.
DEPARTAMENTO: Matemática Aplciada PROFESORADO
NOMBRE Y APELLIDOS (C = Coordinador
DESPACHO Correo electrónico
Ana Isabel Lías Quintero (C) 2003A alias@eui.upm.es
Alfonsa García López 2104B alfonsa.garcia@eui.upm.es
OBJETIVOS DE APRENDIZAJE
COMPETENCIAS Y NIVEL ASIGNADAS A LA ASIGNATURA
CÓDIGO COMPETENCIA NIVEL
GENERALES UPM
G1 Comunicación oral y escrita 5 4 3 2 1 G2 Creatividad 5 4 3 2 1 G3 Liderazgo de equipos 5 4 3 2 1 G4 Organización y planificación 5 4 3 2 1 G5 Respeto por el medioambiente 5 4 3 2 1 G6 Uso de lengua inglesa 5 4 3 2 1 G7 Uso de las tecnologías de la información y las
comunicaciones 5 4 3 2 1
GENERALES DEL TITULO
G8 Trabajo en equipo 5 4 3 2 1 G9 Aprendizaje autónomo 5 4 3 2 1 G10 Capacidad de análisis y síntesis 5 4 3 2 1 G11 Iniciativa y capacidad emprendedora 5 4 3 2 1 G12 Motivación por la calidad y mejora continua 5 4 3 2 1 G13 Razonamiento crítico 5 4 3 2 1 G14 Resolución de problemas 5 4 3 2 1 G15 Toma de decisiones 5 4 3 2 1 G16 Trabajo en un contexto internacional 5 4 3 2 1
COMPETENCIAS Y NIVEL ASIGNADAS A LA ASIGNATURA
CÓDIGO COMPETENCIA NIVEL
COMPETENCIAS COMUNES A LA RAMA DE INFORMÁTICA ASIGNADAS A LA ASIGNATURA
I1
Capacidad para la resolución de los problemas matemáticos que puedan plantarse en la ingeniería. Aptitud para aplicar los conocimientos sobre: algebra, cálculo diferencial e integral y métodos numéricos; estadística y optimización
5 4 3 2 1
I2
Capacidad para comprender y dominar los fundamentos físicos y tecnológicos de la informática: electromagnetismo, ondas, teoría de circuitos, electrónica y fotónica y su aplicación para la resolución de problemas propios de la ingeniería
5 4 3 2 1
I3
Capacidad para comprender y dominar los conceptos básicos de matemática discreta, lógica, algorítmica y complejidad computacional, y su aplicación para el tratamiento automático de la información por medio de sistemas computacionales y su aplicación para la resolución de problemas propios de la ingeniería
5 4 3 2 1
I4
Conocimiento de los fundamentos del uso y programación de los computadores, los sistemas operativos, las bases de datos y, en general, los programas informáticos con aplicación en ingeniería
5 4 3 2 1
I5
Conocimiento de la estructura, funcionamiento e interconexión de los sistemas informáticos, así como los fundamentos de su programación
5 4 3 2 1
I6
Conocimiento adecuado del concepto de empresa y su marco institucional y jurídico, así como los aspectos básicos de organización y gestión de empresa
5 4 3 2 1
I7
Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente
5 4 3 2 1
I8
Capacidad para planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha y su mejora continua y valorando su impacto económico y social
5 4 3 2 1
I9
Capacidad para comprender la importancia de la negociación, los hábitos de trabajo efectivos, el liderazgo y las habilidades de comunicación en todos los entornos de desarrollo de software
COMPETENCIAS Y NIVEL ASIGNADAS A LA ASIGNATURA
CÓDIGO COMPETENCIA NIVEL
I10
Capacidad para elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y normativas vigentes
5 4 3 2 1
I11 Conocimiento, administración y mantenimiento
sistemas, servicios y aplicaciones informáticas 5 4 3 2 1
I12
Conocimiento y aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos
5 4 3 2 1
I13
Conocimiento, diseño y utilización de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de un problema
5 4 3 2 1
I14
Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados
5 4 3 2 1
I15
Capacidad de conocer, comprender y evaluar la estructura y arquitectura de los computadores, así como los componentes básicos que los conforman
5 4 3 2 1
I16
Conocimiento de las características, funcionalidades y estructura de los Sistemas Operativos y diseñar e implementar aplicaciones basadas en sus servicios
5 4 3 2 1
I17
Conocimiento y aplicación de las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y diseñar e implementar aplicaciones basadas en ellas
5 4 3 2 1
I18
Conocimiento y aplicación de las características, funcionalidades y estructura de las bases de datos, que permitan su adecuado uso, y el diseño y el análisis e implementación de aplicaciones basadas en ellos
5 4 3 2 1
I19
Conocimiento y aplicación de las herramientas necesarias para el almacenamiento, procesamiento y acceso a los Sistemas de información, incluidos los basados en Web
5 4 3 2 1
I20
Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real
5 4 3 2 1
I21
Conocimiento y aplicación de los principios fundamentales y técnicas básicas de los sistemas inteligentes y su aplicación práctica
COMPETENCIAS Y NIVEL ASIGNADAS A LA ASIGNATURA
CÓDIGO COMPETENCIA NIVEL
I22
Conocimiento y aplicación de los principios, metodologías y ciclos de vida de la ingeniería de software
5 4 3 2 1
I23
Capacidad para diseñar y evaluar interfaces persona computador que garanticen la accesibilidad y usabilidad a los sistemas, servicios y aplicaciones informáticas
5 4 3 2 1
I24
Conocimiento de la normativa y la regulación de la informática en los ámbitos nacional, europeo e internacional
5 4 3 2 1
COMPETENCIAS ESPECÍFICAS DE INGENIERÍA DE COMPUTADORES ASIGNADAS A LA ASIGNATURA
E1
Capacidad de diseñar y construir sistemas digitales, incluyendo computadores, sistemas basados en microprocesador y sistemas de comunicaciones
5 4 3 2 1
E2
Capacidad de desarrollar procesadores específicos y sistemas empotrados, así como desarrollar y optimizar el software de dichos sistemas
5 4 3 2 1
E3
Capacidad de analizar y evaluar arquitecturas de computadores, incluyendo plataformas paralelas y distribuidas, así como desarrollar y optimizar software de para las mismas
5 4 3 2 1
E4 Capacidad de diseñar e implementar software de
sistema y de comunicaciones 5 4 3 2 1
E5
Capacidad de analizar, evaluar y seleccionar las plataformas hardware y software más adecuadas para el soporte de aplicaciones empotradas y de tiempo real
5 4 3 2 1
E6 Capacidad para comprender, aplicar y gestionar la
garantía y seguridad de los sistemas informáticos 5 4 3 2 1 E7
Capacidad para analizar, evaluar, seleccionar y configurar plataformas hardware para el desarrollo y ejecución de aplicaciones y servicios informáticos
5 4 3 2 1
E8 Capacidad para diseñar, desplegar, administrar y
gestionar redes de computadores 5 4 3 2 1
CÓDIGO RESULTADOS DE APRENDIZAJE DE LA ASIGNATURA
RA1 Conoce los distintos tipos de codificación de la información según el objetivo perseguido (corregir errores, encriptar información o comprimirla). RA2 Distingue y conoce criptosistemas de clave pública y clave privada.
CÓDIGO RESULTADOS DE APRENDIZAJE DE LA ASIGNATURA
RA3 Cifra y descifra utilizando los criptosistemas de traslación, afín y matricial afín.
RA4 Cifra y descifra utilizando los criptosistemas RSA y ElGamal.
RA5 Conoce y aplica protocolos de autenticación (firma digital) e intercambio de claves basados en criptosistemas de clave pública.
RA6 Codifica, detecta y corrige errores utilizando los códigos lineales.
RA7 Conoce y aplica test de primalidad deterministas y probabilísticos.
RA8 Comprime ficheros, usando códigos compresores adecuados.
RA9 Utiliza adecuadamente software para la resolución de problemas de codificación de la información.
RA10 Conoce la complejidad computacional de las operaciones aritméticas elementales y es capaz de determinar la de ciertos algoritmos sencillos. CONTENIDOS Y ACTIVIDADES DE APRENDIZAJE
CONTENIDOS ESPECÍFICOS (TEMARIO)
TEMA APARTADOS
Tema 1. Introducción a la Codificación de la información y Criptología 1.1 Trasmisión de la Información.
1.2 Tipos de Códigos.
1.3 Introducción a la Criptología: Criptografía y Criptosistemas. 1.4 Criptosistemas de clave secreta: traslación, afín y matricial. 1.5 Criptoanálisis.
Tema 2. Complejidad computacional 2.1 Problemas, algoritmos.
2.2 Complejidad de las operaciones aritméticas elementales. 2.3 Clasificación de problemas según su complejidad.
Tema 3. Teoría de números
3.1 El grupo multiplicativo de las unidades módulo n. 3.2 Función φ de Euler.
3.3 Teoremas de Euler y Fermat.
3.4 Orden de un elemento. Raíz primitiva módulo n. 3.5 Logaritmo discreto.
Tema 4. Criptosistemas de clave pública 4.1 Criptosistema RSA.
CONTENIDOS ESPECÍFICOS (TEMARIO)
TEMA APARTADOS
4.3 Firma digital.
4.4 Protocolo de intercambio de claves de Diffie- Hellman. Tema 5. Teoría de Números
5.1 Test deterministas: Criba de Eratóstenes y Divisiones sucesivas. 5.2 Test probabilísticos: Test de Fermat, de Miller y de Miller-Rabin. Tema 6. Códigos correctores de errores y códigos compresores
6.1 Códigos lineales. 6.2 Códigos de Hamming. 6.3 Códigos de Huffman.
BREVE DESCRIPCIÓN DE LAS MODALIDADES ORGANIZATIVAS UTILIZADAS Y MÉTODOS DE ENSEÑANZAS EMPLEADOS
CLASES DE TEORÍA
Se trata de clases magistrales participativas en las que se presentan conceptos, resultados y ejemplos.
CLASES PROBLEMAS
En ellas los estudiantes, siguiendo las indicaciones del profesor, resolverán individualmente o en grupo un conjunto de problemas de cuyos enunciados disponen con antelación.
PRÁCTICAS Están previstas cinco sesiones de 2 horas de trabajo en laboratorio. Se usará el sistema de cálculo matemático Maple para programar algoritmos y resolver problemas relacionados con los objetivos del curso.
TRABAJOS AUTÓNOMOS
Los estudiantes realizarán de modo autónomo las siguientes tareas: a) Estudiar conceptos y propiedades.
b) Resolver ejercicios y problemas. c) Responder cuestionarios on-line. TRABAJOS
EN GRUPOS
Los alumnos deberán realizar cuatro trabajos en grupos de dos personas sobre distintos temas del curso, en los que deberán programar en Maple diversos algoritmos y usarlos para resolver los problemas que se les señalen en las especificaciones de cada trabajo.
TUTORÍAS Salvo que surja una necesidad concreta, sólo se contemplan tutorías individuales en el horario establecido por cada profesora.
RECURSOS DIDÁCTICOS
BIBLIOGRAFÍA
[1] Buchmann, Johannes A.: “Introduction to Cryptography”.
Second Edition. Springer-Verlag. 2004.
[2] Koblitz, Neal: “A Course in Number Theory and
Cryptography”. Second Edition. Springer-Verlag. 1994.
RECURSOS DIDÁCTICOS
[3] Lucena, Manuel José: “Criptografía y Seguridad en Computadores”. 1999. wwwdi.ujaen.es/~mlucena
[4] Munuera, Carlos; Tena, Juan: “Codificación de la
Información”. Universidad de Valladolid. 1997.
[5] Ramió, Jorge: “Aplicaciones Criptográficas”. Escuela
Universitaria de Informática. U. Politécnica de Madrid. 1998.
[6] Rincón, Félix; García, Alfonsa; Martínez, Ángeles: “Cálculo
científico con Maple”. RA-MA. 1995.
[
7] Trappe, Wade; Washington, Lawrence C.: “Introduction to
Crytography with Coding Theory”. Prentice-Hall. 2002.
RECURSOS WEB Entorno Moodle de la UPM:
http://moodle.upm.es/titulaciones/oficiales/ Contiene información y material de apoyo
EQUIPAMIENTO Instrumentación de Laboratorio: Ordenadores personales
Aplicaciones Software: Maple, Moodle
SISTEMA DE EVALUACIÓN DE LA ASIGNATURA EVALUACIÓN
REF INDICADOR DE LOGRO Relacionado
con RA T1_2 Distingue distintos tipos de códigos según el objetivo perseguido RA1
T1_3 Define con precisión criptosistema, criptograma, texto en claro y
longitud de un mensaje. RA2
T1_4,T4_1 Obtiene el equivalente numérico de un mensaje. RA3, RA4,
RA9
T1_4 Cifra y descifra mensajes utilizando los criptosistemas de traslación, afín y matricial afín. RA3, RA9
T1_5
Realiza ataques a criptogramas mediante análisis de frecuencias para cifradores monoalfabéticos y ataques a texto en claro conocido para los criptosistemas de traslación, afín y matricial afín.
RA3, RA9
T2_2 Define complejidad en tiempo y en espacio de un algoritmo. RA10
T2_3 Calcula la complejidad, en número de operaciones bit, de cálculos
y bucles sencillos. RA10
EVALUACIÓN
REF INDICADOR DE LOGRO Relacionado
con RA T2_2 Conoce y aplica el algoritmo de exponenciación (modular) rápida. RA10
T3_2 Conoce la función Phi de Euler y la evalúa de modo eficiente,
usando sus propiedades. RA4
T3_3 Conoce y aplica correctamente los teoremas de Euler y Fermat. RA4
T3_4 Obtiene raíces primitivas módulo n en casos sencillos. RA4
T4_4 Conoce y aplica el protocolo de intercambio de claves de
Diffie-Hellman. RA5, RA9
T4_1,2 Cifra y descifra mensajes numéricos mediante los criptosistemas de ElGamal y RSA. RA4, RA9
T4_3 Aplica correctamente el criptosistema RSA en protocolos de firma digital. RA5, RA9
T5_1 Comprueba la primalidad de un número aplicando de modo eficiente test deterministas. RA7, RA9
T5_1 Conoce la diferencia entre test de primalidad deterministas y probabilísticos. RA7
T5_2 Conoce y aplica los test de primalidad de Fermat, de Miller y de
Miller-Rabin. RA7, RA9
T5_2 Reconoce las propiedades de un código lineal binario como
espacio vectorial RA6
T6_1 Conoce la relación entre matriz generadora y matriz de control de
un código lineal binario. RA6, RA9
T6_1,2 Detecta y corrige errores aplicando códigos lineales adecuados. RA6, RA9
T6_2 Implementa algoritmos para la corrección de errores mediante códigos de Hamming. RA6, RA9
T6_3 Aplica las propiedades de los códigos de Huffman para la comprensión de archivos. RA8
EVALUACIÓN SUMATIVA
BREVE DESCRIPCIÓN DE LAS ACTIVIDADES QUE SE EVALÚAN
MOMEN
TO LUGAR
PESO EN LA CALIFICACIÓN
Prueba escrita sobre los temas 1 y 2 14-10 Aula 10% Prueba escrita sobre los temas 3 ,4 y 5 18-11 Aula 20% Prueba escrita sobre los temas 6 y 7 16-12 Aula 10% Trabajo práctico: Criptosistemas de clave privada 8-10 Moodle 12.5% Trabajo práctico: Criptosistemas de clave pública 19-11 Moodle 12.5% Trabajo práctico: Test de primalidad 3-12 Moodle 12.5% Trabajo práctico: Códigos lineales 22-12 Moodle 12.5%
DESCRIPCIÓN GENERAL DE LAS ACTIVIDADES QUE SE EVALÚAN Y DE LOS CRITERIOS DE CALIFICACIÓN
Cuestionarios on line:
Los estudiantes tendrán la oportunidad de realizar un cuestionario on-line, con diez preguntas sobre cada tema del curso. Cuando la calificación de dicho cuestionario sea superior a 7 se sumará 0.2 a la nota final acumulada, hasta un máximo de un punto.
Pruebas escritas:
Se realizan en horario presencial y en ellas los estudiantes deben responder a cuestiones teóricas y resolver ejercicios y problemas.
En la calificación, al menos el 70% corresponderá a logros de objetivos básicos y se exigirá precisión en el lenguaje y rigor en la presentación de resultados.
Trabajo práctico: Criptosistemas de clave privada
Se realizará parejas y consistirá en programar en Maple el cifrador Matricial Afín e identificar casos particulares. Los estudiantes deberán cifrar y descifrar algunos mensajes y criptoanalizar varios textos, cifrados con sistemas de César y Vigenere, definiendo previamente una función Maple para hacer el análisis de frecuencias. Valoración: Procedimientos definidos 50% (valorando eficiencia, claridad y documentación del código), resolución de los ejercicios 40%, rigor matemático, elegancia en la presentación de resultados y precisión en el lenguaje 10%.
Trabajo práctico: Criptosistemas de clave pública
Se realizará parejas y consistirá en hacer una librería Maple que incluya funciones para generar claves cifrar y descifrar con el criptosistema ElGamal. Como material de apoyo, los estudiantes dispondrán de una librería análoga para el criptosistema RSA. Valoración: Procedimientos definidos 60%, construcción de la librería y páginas de ayuda 20%, realización de pruebas adecuadas 10%, rigor matemático, elegancia en la presentación de resultados y precisión en el lenguaje 10%.
DESCRIPCIÓN GENERAL DE LAS ACTIVIDADES QUE SE EVALÚAN Y DE LOS CRITERIOS DE CALIFICACIÓN
Trabajo práctico: Test de primalidad
Se realizará por parejas y consistirá en hacer una librería Maple con tres funciones que implementen test de primalidad, hacer pruebas con números grandes y comparar tiempos de ejecución.
Valoración: Procedimientos definidos 60%, construcción de la librería 10%, realización de pruebas adecuadas 10%, análisis de los resultados 10%, rigor matemático, elegancia en la presentación de resultados y precisión en el lenguaje 10%.
Trabajo práctico: Códigos lineales
Hacer una librería Maple con funciones para trabajar con códigos lineales. Usarla para resolver problemas de corrección de errores con códigos de Hamming.
Valoración: Procedimientos 50%, ejercicios 40%, rigor matemático, elegancia en la presentación de resultados y precisión en el lenguaje 10%.
ALTERNATIVA DE EVALUACIÓN MEDIANTE SÓLO PRUEBA FINAL
El día designado por Jefatura de Estudios, los estudiantes que elijan esta opción deberán realizar una prueba escrita relativa a los contenidos teóricos de la asignatura (definiciones, propiedades, ejercicios y problemas) junto con un examen práctico en el que se deberá programar en Maple algunos de los algoritmos contenidos en el programa de la asignatura. El valor de cada una de estas dos pruebas es del 50% de la nota final.
CRONOGRAMA DE TRABAJO DE LA ASIGNATURA
SEMANA Actividades Aula Laboratorio Trabajo Individual Trabajo en Grupo Actividades Evaluación Otros 6-09 al 10-09 Presentación de la asignatura. Tema 1: 1.1, 1.2 y 1.3 Ejercicios de prerre-quisitos. P1: Introducción al sistema Maple. (1h.) a) Estudiar T1 b) Hacer ejercicios de prerrequisitos (repaso) 13-09 al 17-09 Tema 1: 1.4 y 1.5 Problemas (tema 1 y prerrequisitos) a) Estudiar T1 b) Hacer ejercicios 20-09 al 24-09 Problemas (1h.) P2: Programación en Maple (2h.)
Cuestionario on-line del T1 TG1
27-09 al 1-10 Tema 1: Problemas Tema 2: 2.1 y 2.2 Problemas a) Estudiar T2 b) Hacer ejercicios TG1 4-10 al 8-10 Tema 2: 2.3 Problemas
Cuestionario on-line del T2 Entrega TG1
11-10 al 15-10 Prueba T1y T2 (1h.) Tema 3: 3.1, 3.2 y 3.3 Problemas a) Estudiar T3 b) Hacer ejercicios PE1
SEMANA Actividades Aula Laboratorio Trabajo Individual Trabajo en Grupo Actividades Evaluación Otros 18-10 al 22-10 Tema 3: 3.4 Problemas (1h.) P3: Construcción de librerías Maple (2h.) a) Estudiar T3 b) Hacer ejercicios T3 25-10 al 29-10 Tema 4: 4.1 y 4.2 Problemas T3 Problemas T4 a) Estudiar T4
b) Cuestionario on-line del T3 TG2 2-11 al 5-11 Tema 4: 4.3 y 4.4 Problemas a) Estudiar T4 b) Hacer ejercicios T4 TG2 8-11 al 12-11 Tema 4: Problemas (1h.) P4: Criptosistemas de clave pública (2h.)
Cuestionario on-line del T4
15-11 al 19-11 Prueba Temas 3 y 4 (1h) Tema 5: 5.1 y 5.2 Problemas Estudiar T5 TG2 PE2 Entrega TG2 22-11 al 25-11 Tema 5: 5.2 Problemas Problemas del T5 con Maple (1h.) a) Estudiar T5
b) Cuestionario on-line del T5 TG3 29-11 al 3-12 Tema 6: 6.1 y 6.2 Problemas a) Estudiar T6 b) Hacer ejercicios TG3 Entrega TG3
SEMANA Actividades Aula Laboratorio Trabajo Individual Trabajo en Grupo Actividades Evaluación Otros 6-12 al 11-12 Tema 6: 6.3 Problemas a) Estudiar T6
b) Cuestionario on-line del T6
TG4
13-12 al 17-12 Prueba temas 5 y 6 (1h.) Práctica de Códigos (2h.)
TG4 PE3