Programa

Unidad 1. Introducción a la programación (Octave/Matlab).
1.1. Algoritmos, programas y lenguajes. Datos e instrucciones.
1.2. El intérprete Octave/Matlab. Expresiones aritméticas. Variables escalares, matriciales y alfanuméricas. Algunas funciones para manipulación de vectores y matrices. Polinomios. Definición de funciones mediante la construcción de funciones anónimas. Gráficas simples de funciones. Programas. Entrada y salida por consola.
1.3. Estructuras de control: secuencia, decisión, iteración. Instrucciones if, while, for. Funciones. Entrada y salida a disco: fopen, fprintf, fclose. Gráficas de datos discretos. Ajuste de datos: polyfit. Ejemplos.

Unidad 2. Programación en lenguaje Python.
2.1. Introducción. Lo básico. Un primer programa. Intérprete. Uso de notebooks y ejecución de scripts. Ejemplos.
2.2. Tipos y estructuras de datos. Numéricos, texto, booleanos, listas, tuplas y diccionarios. Ejemplos.
2.3. Expresiones. Operadores: aritméticos, lógicos, relacionales, asignación, bit. Comparaciones y expresiones lógicas. Control de flujo: if, elif, else, for, range, write. Ejemplos.
2.4. Definición de funciones. Pasaje de parámetros. 
2.5. Manejo de archivos. Crear, abrir, leer y escribir archivos

Unidad 3. Representación de la información en sistemas digitales.
3.1. El bit. Almacenamiento de la información como colección de bits. Bytes, palabras y sus múltiplos.
3.2. Representaciones de números enteros. Bases para representación de números enteros positivos: números decimales, binarios, octales y hexadecimales. Enteros negativos: representación con signo y magnitud, inconvenientes. Representaciones en complemento a la base y complemento a la base reducida. Complemento a 2 y complemento a 1. Representación sesgada.
3.3. Representaciones de números reales. Representación de punto fijo. Representación de punto flotante: signo, exponente y mantisa. El standard IEEE 754. Aritmética en punto flotante, excepciones, Inf y NaN. Errores en la representación: error absoluto y relativo. Redondeo y truncamiento. 
3.4. Representación de textos. Códigos de caracteres: BCD, ASCII.


Unidad 4. Aplicaciones en Octave/Matlab y en Python.
4.1. Discretización de señales/imágenes en tiempo y amplitud. Teorema del muestreo. Análisis en el tiempo y frecuencia. Errores de discretización. Transformada de Fourier 1D y 2D.
4.2. Representación de imágenes, sonido y video. Representación matemática de imágenes. Representación del color. Discretización: pixels y profundidad de color. 
Digitalización del sonido. Procesamiento digital de imágenes en Octave/Matlab y en Python. Ejemplos.
4.3. Aprendizaje no supervisado. Regresión lineal con Python. Ejemplos.
4.4. Ajuste de curvas con Python y Matlab. Ejemplos.
4.5. Cálculo de integrales definidas por programa.


Unidad 5. Elementos de arquitectura y organización de computadoras.
5.1. Expresiones lógicas y álgebra de Boole. Circuitos digitales. Puertas lógicas. Definición circuitos combinacionales y secuenciales.
5.2. La unidad central de procesamiento (CPU). ALU, registros, control y buses.
5.3. El sistema operativo. Funciones del sistema operativo.
Entrada/salida y control de periféricos.
5.4. Lenguaje ensamblador. La traducción o compilación. División de un programa e ejecutable en módulos. Lenguajes de alto nivel.

Bibliografía

  • John W. Eaton, David Bateman y Soren Hauberg, GNU Octave manual version 3, Network Theory Ltd., 3 edition (2008).
  • Rafael C. González, Richard E. Woods y Steven L. Eddins, Digital image processing using Matlab, Gatesmark publishing (2009).
  • Guillem Borrelli Nogueras, Introducción informal a Matlab y Octave, http://webserver.dmt.upm.es/media/les/cursomo.pdf (2008).
  • Brian W. Kernighan y Dennis M. Ritchie, El lenguaje de programación C, Prentice-Hall Hispanoamericana, Mexico, 2 edition (1991).
  • Linda Null y Julia Lobur, Essentials of computer organization and architecture, Jones and Bartlett, Sudbury, USA (2003).
  • Página web, C programming web tutorial, http://www2.its.strath.ac.uk/courses/c/tableofcontents3 1.html (2013).
  • Sergio Sciutto, Apunte de cátedra, inédito (2010).
  •  William Stallings, Computer organization and architecture, Prentice Hall, New Jersey (2003).
  • Andrew S. Tanenbaum, Structured computer organization, Pearson Prentice Hall, 5 edition (2006).