Información Básica
-
Créditos: 3
-
Horas de trabajo acompañado: 5 / semana (3 horas clase, 2 horas taller)
-
Horas de trabajo independiente: 4 / semana
-
Pre-requisitos:
-
Tipo de curso: Núcleo de Formación Fundamental.
Descripción del Curso
En el curso técnicas y prácticas de computación se abordan los principales conceptos y técnicas que se aplican a los algoritmos, las estrategias de validación y de solución de problemas, los principales conceptos de control de errores y definición de casos de pruebas, y los conceptos fundamentales de construcción de programas. El curso desarrollará unos sólidos conceptos teóricos acompañados de prácticas semanales de los temas vistos en clase.
Objetivos
Al finalizar el curso los participantes podrán:
- Conocer los diferentes comportamientos de los algoritmos, y realizar análisis asintóticos de límites de complejidad superior y esperados.
- Establecer la clases de complejidad de un algoritmo ( Constante, logarítmica, lineal, cuadrática o exponencial)
- Identificar y utilizar diferentes estrategias para la construcción de algoritmos, como: Divide y vencerás, algoritmos numéricos simples, algoritmos de búsqueda secuenciales y binarios, entre otros.
- Conocer los conceptos de validación de entrada, Verificación de programas, computación simultánea múltiple, Objetivos de paralelismos vs concurrencia y la comparación informal de la eficiencia de un algoritmo.
- Definir y utilizar estructuras básicas de datos como los arreglos y las cadenas de caracteres.
- Identificar los diferentes tipos de errores (sintaxis, lógica, en tiempo de ejecución) en un programa.
- Conocer el concepto de una especificación y la programación defensiva (Ej. codificación segura, manejo de excepciones)
- Utilizar las revisiones de código y la generación casos de pruebas para mejor la calidad de los programas.
- Identificar el papel y el uso de contratos, incluyendo pre- y post-condiciones.
- Conocer los principios de diseño de sistemas y los diferentes paradigmas de diseño (diseño estructurado, análisis y diseño orientado a objetos, diseño orientado a eventos, diseño a nivel de componentes).
- Aplicar en los procesos de codificación diferentes técnicas, prácticas de codificación defensiva, prácticas de código seguro y estándares de codificación.
Competencias técnicas específicas que se desarrollan
-
Lenguaje de programación C++ (intermedio).
Contenido
Capítulo 1: Introducción y Conceptos de algoritmos
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Bibliografía |
---|---|---|---|---|
1 | 1 | Presentación del curso. conceptos básicos de algoritmos | ||
1 | 2 | Diferentes comportamientos de los algoritmos. Análisis asintótico de límites de complejidad superior y esperados | ||
2 | 2 | Práctica | ||
3 | 3 | Notación Big O: definición formal. Clases de complejidad ( Constante, logarítmica, lineal, cuadrática y exponencial) | ||
3 | 2 | Práctica | ||
4 | 3 | Las mediciones empíricas de desempeño. Balances de Tiempo y espacio en algoritmos | ||
4 | 2 | Práctica |
Total de Horas: 15
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
1 – 2 | 4 | Búsqueda y reporte de comportamientos de algoritmos | |
3 – 4 | 4 | Taller relacionado con Notación Big O y clases de complejidad |
Total de Horas: 8
Capítulo 2: Estrategias algorítmicas
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Bibliografía |
---|---|---|---|---|
5 | 3 | Algoritmos de fuerza bruta | ||
6 | 2 | Práctica | ||
7 | 3 | Divide y vencerás (referencias cruzadas / Algoritmos y Diseño / estrategias de resolución de problemas) | ||
8 | 2 | Práctica | ||
9 | 3 | Algoritmos numéricos simples (cálculo de la media de una lista de números, encontrar el mínimo, máximo, encontrar el máximo común divisor, etc.) | ||
10 | 2 | Práctica | ||
11 | 3 | Algoritmos de búsqueda secuenciales y binarios | ||
12 | 2 | Práctica |
Total de Horas: 20
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
5 – 6 | 4 | Taller – Aplicación de estrategia de fuerza bruta en la construcción de un algoritmo | |
7 – 8 | 4 | Búsqueda de información de la estrategia de divide y vencerás – Discusión en clase | |
9 – 10 | 4 | Taller – Desarrollo de algoritmos simples | |
11 – 12 | 4 | Taller – Desarrollo de algoritmos secuenciales y binarios |
Total de Horas: 16
Capítulo 3: Validación de algoritmos
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Bibliografía |
---|---|---|---|---|
13 | 3 | Conceptos básicos de validación: Validación de entrada,Verificación de programas, computación simultánea múltiple, Objetivos de paralelismos vs concurrencia, Comparación informal de la eficiencia de un algoritmo | ||
14 | 2 | Práctica |
Total de Horas: 5
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
13 – 14 | 4 | Lectura y realización de mapa conceptual |
Total de Horas: 4
Capítulo 4: Estrategias de Solución de problemas y estructuras básicas de datos
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Bibliografía |
---|---|---|---|---|
15 | 3 | Comparación informal de la eficiencia de un algoritmo. Estrategia divide y vencerás | ||
16 | 2 | Práctica | ||
17 | 3 | Sintaxis básica y semántica de lenguajes de alto nivel. Variables y tipos de datos simples (números, caracteres, booleanos) | ||
18 | 2 | Práctica | ||
19 | 3 | Arrays. Strings y procesamiento de cadena de caracteres | ||
20 | 2 | Práctica |
Total de Horas: 15
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
15 – 16 | 4 | Lectura y resumen para discusión en clase | |
17 – 18 | 4 | Búsqueda de información y realización de comparativo para diferentes lenguajes relacionado con Variables y tipos de datos | |
19 – 20 | 4 | Taller de Arreglos y cadena de caracteres |
Total de Horas: 12
Capítulo 5: Comprensión y correctitud de programas
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Bibliografía |
---|---|---|---|---|
21 | 1 | Comprensión de programas | ||
21 | 2 | Correctitud de programas: Tipos de errores (sintaxis, lógica, en tiempo de ejecución) | ||
22 | 2 | Práctica | ||
23 | 3 | El concepto de una especificación. Programación defensiva (Ej. codificación segura, manejo de excepciones) | ||
24 | 2 | Práctica | ||
25 | 3 | Revisiones de código. Pruebas y generación casos de pruebas. | ||
26 | 2 | Práctica | ||
27 | 3 | El papel y el uso de contratos, incluyendo pre- y post-condiciones. Prueba de la unidad. Estrategias de depuración | ||
28 | 2 | Práctica |
Total de Horas: 20
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
21 – 22 | 4 | Taller – Revisión e identificación de tipos de errores | |
23 – 24 | 4 | Taller – Revisiones de código y definición de casos de Prueba | |
25 – 26 | 4 | Estudio para Examen Final | |
27 – 28 | 4 | Estudio Para Examen Final |
Total de Horas: 16
Capítulo 6: Principios de desarrollo de sistemas
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Bibliografía |
---|---|---|---|---|
29 | 3 | Principios de diseño de sistemas. Paradigmas de diseño (diseño estructurado, análisis y diseño orientado a objetos, diseño orientado a eventos, diseño a nivel de componentes, etc.). Las relaciones entre los requisitos y diseños: transformación de los modelos, el diseño de los contratos, invariantes | ||
30 | 2 | Práctica | ||
31 | 3 | Cualidades internas de diseño (eficiencia, rendimiento, redundancia, tolerancia a fallos, etc.). Prácticas de codificación (técnicas, expresiones idiomáticas / patrones, etc.). Prácticas de codificación defensivos. Prácticas de código seguro. Estándares de codificación | ||
32 | 2 | Práctica |
Total de Horas: 10
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
29 – 30 | 4 | Taller – Diseño de programas | |
31 – 32 | 4 | Investigación y resumen prácticas y estándares de codificación |
Total de Horas: 8
Uso de material en exámenes
No está permitido el uso de notas de clase ni bibliografía. El uso de computadores personales, teléfonos celulares o cualquier otro equipo electrónico se utilizará de acuerdo a las indicaciones del docente.
Asistencia
Obligatoria
Bibliografía
-
Cormen, Leiserson, Rivest, and Stein. Introduction to Algorithms, 3rd Edition (MIT Press). 2009
-
S. Dasgupta, C. H. Papadimitriou, and U. Vazirani. Algorithms. McGraw-Hill Science/Engineering/Math, 2006.
-
T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction to algorithms. MIT Press, Cambridge, MA, USA, 2001.
-
S. S. Skiena. The algorithm design manual. Springer-Verlag New York, Inc., New York, NY, USA, 1998.
-
Roger S. Pressman. Ingeniería de Software, un enfoque práctico. 7ed. McGraw Hill. México, 2010.
-
Ian Sommerville. Ingeniería de Software. 9ed. Pearson Educación S.A. México, 2011.
Instalaciones
Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.