Es un curso básico de programación para estudiantes del área de ingeniería y afines. En el curso se introduce al estudiante al pensamiento abstracto para la resolución de problemas de ingeniería y científicos, automatizable por medio de herramientas informáticas de desarrollo, utilizando metodologías sistemáticas. El estudiante aprenderá a reconocer la aplicabilidad de flujos de control y modelos de datos básicos para lograr el diseño e implementación de programas y algoritmos.
Proveer formación básica en programación y construcción de algoritmos y de programas, para la resolución de problemas utilizando técnicas actuales.
Al finalizar este curso la persona estudiante será capaz de:
- Diseñar, organizar e implementar algoritmos para resolver problemas específicos del área de ingeniería, ciencias y afines.
- Usar un ambiente de programación para la edición, prueba y depuración de programas.
- Reutilizar componentes de software.
- Aplicar buenas prácticas de construcción de software.
Objetivo específico | Eje temático | Desglose | |
---|---|---|---|
1, 2 | 1. Fundamentos de la programación |
Lenguajes de programación: concepto de programación, lenguaje máquina, lenguaje ensamblador, lenguaje de alto nivel, maquina virtual, compilador y paradigmas. Ciclo de vida de un programa: problema, análisis, diseño, implementación y prueba. Algoritmo: concepto, primitivas y ejemplos. Construcción (compilación, interpretación) y ejecución. |
|
1 | 2. Sistemas numéricos y representación de datos |
Bases y conversión: decimal, binaria y hexadecimal. Sistemas de codificación de texto: ASCII y UNICODE. Tipos de datos: enteros, reales, booleanos, caracteres e hileras de texto. Aritmética de precisión entera, aritmética de precisión flotante. |
|
1, 4 | 3. Definición y utilización de variables |
Definición de valores y variables: Declaración: tipo, identificador y dirección. Inicialización de acuerdo con el tipo de datos: valores, indirección (ej: punteros, referencias). Estado de la variable en memoria (valor). Asignación y conversión de tipos. Utilización de variables: Atributos de clase: declaración, ámbito de vida y ocultamiento (encapsulamiento). Variables locales: declaración y ámbito de vida. Estáticas y constantes: declaración y ámbito de vida. |
|
1, 2, 4 | 4. Entrada y salida básica, verificación |
Entrada: parámetros de línea de comandos y entrada interactiva. Salida: salida estándar y salida interactiva. Verificación de datos y manejo de errores (ej: manejo de excepciones). |
|
1 | 5. Expresiones y operadores |
Evaluación de expresiones y orden de precedencia. Aridad de operadores: unarios (ej: negación) y binarios (ej: multiplicativos y aditivos). Tipos de operadores: aritméticos, relacionales (comparación e igualdad), lógicos, y de asignación. |
|
1 | 6. Instrucciones y estructuras de control |
Secuencia de instrucciones y bloques de instrucciones. Condición de instrucciones. |
|
1 | 7. Repetición | Repetición de instrucciones por condición y por contador. | |
1, 3, 4 | 8. Subrutinas |
Conceptos: modularización y reutilización, declaración e invocación. Componentes: encabezado (identificador, parámetros y tipo de retorno) y cuerpo. Funciones y procedimientos. Sobrecarga de subrutinas: declaración y resolución de llamados. |
|
1, 3, 4 | 9. Indirección |
Paso de argumentos: por valor y por indirección. Alojamiento estático de memoria, alojamiento dinámico de memoria, y alojamiento automático de memoria (pila de llamados). Reglas de alcance o ámbito de identificadores. |
|
1, 3 | 10. Recursividad |
Concepto y utilización. Orden de llamados |
|
1, 3 | 11. Colecciones lineales de datos: fundamentos |
Concepto (ej: arreglos, listas), estructura y estado de memoria. Declaración e inicialización. Acceso a elementos y recorrido. Paso de colecciones por argumento a subrutinas. |
|
1, 3 | 12. Colecciones lineales de datos: operaciones |
Utilidad y operaciones comunes (suma, promedio, mínimo, máximo). Búsqueda (de acuerdo con el tipo de datos de los elementos). Ordenamiento (de acuerdo con el tipo de datos de los elementos). |
|
1, 3 | 13. Matrices |
Concepto, estructura y estado de memoria. Declaración e inicialización. Acceso a elementos y recorrido. |
|
1 | 14. Hileras o cadenas de caracteres (textos) |
Concepto. Operaciones: concatenación, obtener tamaño, extraer carácter o fragmento, comparación, búsqueda, reemplazo, conversión a mayúscula o minúscula, conversión a arreglo. |
|
1, 2, 4 | 15. Entrada y salida: archivos |
Conceptos y organización física de archivos. Operaciones de archivos: lectura y escritura. Procesamiento binario/textual: apertura/cierre y lectura/escritura. |
|
3, 4 | 16. Introducción a la programación orientada a objetos |
Paradigma: clases e instancias, atributos y métodos, abstracción y reutilización. Análisis y diseño: modelaje de clases e instancias. Constructores: concepto y utilización, declaración e invocación. |
|
* | 17. Programación avanzada |
Tema a escoger entre los siguientes: Matrices, algoritmos y bibliotecas de álgebra lineal. Fundamentos de graficación y de interfaces gráficas. Indirección (punteros y referencias), copia y clonación de objetos. Algoritmos de búsqueda y ordenamiento básicos. Herencia y polimorfismo. Aritmética de precisión arbitraria. Cuadernos de lenguajes de computación. Visualización de datos (ej: creación de gráficas, animaciones). Simulación (ej: a partir de modelos matemáticos, físicos). Predicción (usando modelos simples). |
- Guttag, John V. “Introduction to Computation and Programming Using Python: With Application to Understanding Data”, 2nd edition, The MIT Press, 2016.
- Langtangen, Hans Petter. “A Primer on Scientific Programming with Python”, 5th edition, Springer Berlin Heidelberg, 2016.
- Rossant, Cyrille, “Learning IPython for Interactive Computing and Data Visualization”, ISBN: 978-1782169949, PACKT Books, 201
- Wachenchauzer, Rosita, Manterola, Margarita y otros, “Algoritmos y Programación con lenguaje Python”, OpenLibra, 2011.
Este no es un documento oficial. Documentos oficiales se entregan en la secretaría de la escuela.