- ¿Qué es un algoritmo? Medidas de eficiencia.
Complejidad. Complejidad computacional de algoritmos numéricos.
Análisis de algoritmos. Límites de complejidad.
BIBLIOGRAFíA: [1], Cap. 1; [9], Cap. 1.
- Introdución al lenguaje de programación C (I).
Nociones sobre trabajo en el sistema UNIX. El editor vi. Compilado,
enlace, ejecución y depuración de programas en C.
Variables escalares, subindicadas (arrays) y constantes.
Operadores y funciones standard más usuales. Orden de precedencia
entre operadores.
BIBLIOGRAFíA: [6], Cap. 1 y 2.
- Introdución al lenguaje de programación C (II).
Declaraciones. Tipos de datos: carácter, enteros, enumeración,
y de coma flotante. Conversiones de tipo. Nociones sobre
representación de datos e implicaciones sobre la precisión numérica.
BIBLIOGRAFíA: [6], Cap. 2.
- Introdución al lenguaje de programación C (III).
Sentencias de control de flujo: for, if, do, while, switch.
Ejemplos de uso. Funciones: anatomía y uso. Convenciones sobre
paso de argumentos. Recursión. Funciones definidas en stdio
y math.
BIBLIOGRAFíA: [6], Cap. 3 y 4.
- Algoritmos iterativos: órdenes de convergencia.
Resolución de ecuaciones. Método de bisección simple.
Métodos de Newotn-Raphson y de la secante. Regula falsi. Comparación
de sus respectivos órdenes de convergencia. Generalización a sistemas
de ecuaciones. Métodos de Newton-Raphson y Gauss-Seidel.
BIBLIOGRAFíA: [9], Cap. 3; [2], Cap. 6.
- Métodos de ordenación. Análisis teórico: orden de complejidad
óptimo alcanzable para algoritmos ``en el sitio.'' Métodos simples
de complejidad
: comparación, inserción, burbuja. Métodos
de complejidad
: Quicksort y Heapsort.
BIBLIOGRAFíA: [1], Cap. 3; y [8] como referencia.
- Nociones sobre arquitectura de ordenadores. Memoria,
canales de entrada/salida, unidad central de proceso o CPU. La
metáfora del enano computador. Lenguage de máquina, lenguajes
de ensamblado, lenguajes de alto nivel.
BIBLIOGRAFíA: [10].
- El lenguaje de programación C (IV). Direccionamiento
indirecto. Punteros: variables que contienen la ubicación en memoria
de otras variables. Algebra de punteros. Punteros y funciones:
paso de argumentos por referencia haciendo uso de punteros.
Algunas funciones revisitadas: funciones que retornan punteros.
Ejemplos de utilización de punteros.
BIBLIOGRAFíA: [6], Cap. 5.
- El lenguaje de programación C (V).
Tipos de datos definidos por el usuario: estructuras. Punteros a
estructuras y estructuras ligadas. Listas, pilas, árboles. Ejemplos de
uso.
BIBLIOGRAFíA: [6], Cap. 6.
- Breve repaso de nociones de Algebra Lineal. Solución de sistemas
de ecuaciones lineales: método de eliminación gaussiana.
Inversión de matrices: método de Gauss-Jordan. Estabilidad numérica
y su mejora: pivotado, total y parcial. Complejidad algorítmica.
BIBLIOGRAFíA: [5]; [2], Cap. 5.
- Solución de ecuaciones lineales sin inversión de la matriz de
coeficientes. La descomposición de Cholesky. La descomposición LU.
Sustitución hacia atrás. Complejidad y estabilidad numérica.
Cálculo de vectores y valores propios de matrices simétricas.
El método de la potencia. El método de Jacobi.
BIBLIOGRAFíA: [2], Cap. 5.
- Generación de números aleatorios. Simulación.
Números aleatorios y Método de Montecarlo.
Integración numérica. Otras aplicaciones
Generación de observaciones pseudoaleatorias uniformes.
Algoritmos de generación multiplicativos: elección de
multiplicador, módulo y semilla. Generadores más utilizados
BIBLIOGRAFíA: [11]; [7] como referencia.
- Generación de variables no uniformes.
Método de inversión. Ejemplos: variables con distribución exponencial
y gamma. Método de
transformación. Ejemplos: variables con distribución
normal (método de Box-Muller).
Método de rechazo. Ejemplos.
BIBLIOGRAFíA: [7] y [3], ambos como referencia.
- Ejemplos de simulación. Simulación de un servicio de atención
médica. Implementación en C y análisis del diseño efectuado.
BIBLIOGRAFíA: [4].