Introducción a la Programación

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: Ninguno
  • Tipo de curso: Núcleo de Formación Fundamental.

Descripción del Curso

Esta asignatura presenta al estudiante una alternativa para apropiar la disciplina de la programación como herramienta conceptual y tecnológica que permite solucionar problemas reales en ingeniería.

Objetivos

Al finalizar el curso los participantes podrán:

  1. Describir un sistema con sus elementos e interacciones.
    1. Conocer la noción de modelo.
    2. Relacionar sistemas con modelos computacionales.
    3. Especificar las constantes, variables y tipos de datos de un sistema.
    4. Identificar los estados de un sistema.
    5. Reconocer las operaciones que tiene un sistema para cambiar su estado.
    6. Construir algoritmos.
  2. Definir, implementar y aplicar operaciones.
    1. Construir operaciones con parámetros.
    2. Aplicar operaciones con argumentos acordes con los parámetros definidos.
    3. Determinar el alcance de variables.
    4. Reconocer la diferencia entre función y procedimiento.
    5. Depurar códigos simples.
    6. Desarrollar programas con documentación y usando librerías.
    7. Conocer el valor de verdad de una condición.
    8. Describir el flujo de ejecución de un algoritmo.
    9. Implementar operaciones con condicionales.
    10. Utilizar programación defensiva y control de versiones.
    11. Trabajar con cadenas de caracteres.
  3. Resolver problemas usando algoritmos que involucren repeticiones.
    1. Seguir algoritmos con un flujo de ejecución repetitivo.
    2. Implementar operaciones iterativas y recursivas.
    3. Construir programas con interfaz gráfica.
    4. Comparar la eficiencia de dos algoritmos.
  4. Conocer la noción de estructura de datos.
    1. Construir y manipular listas.
    2. Solucionar problemas con listas.
    3. Trabajar con diccionarios.
    4. Desarrollar video juegos sencillos.
    5. Leer y escribir en archivos.
    6. Incluir la noción de persistencia en aplicaciones.
    7. Reconocer la diferencia entre archivos texto y archivos binarios.
    8. Conocer sistemas para manejar archivos binarios.

Competencias técnicas específicas que se desarrollan

  1. Modelamiento computacional de sistemas.
  2. Desarrollo de programas usando Python 3 y librerías del lenguaje.
  3. Sistema de control de versiones Git.
  4. Desarrollo de video juegos sencillos.

Contenido

Capítulo 1: Nociones de Sistema, Observación y Estado

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
1 3 Definición de Sistema. Rol y propósito de un sistema operativo. Modelos. Variables y constantes. Tipos de datos primitivos (e.g. números, caracteres, Booleans). Subtipos y supertipos. Bits, bytes y otras medidas de almacenamiento, y su relación con los tipos de datos. Familiaridad [1]
2 2 Desglose de un sistema en sus elementos observando las interacciones. Evaluación [1]
3 3 Estado de un sistema. Operaciones que modifican el estado. El concepto y propiedades de algoritmos. Expresiones y asignaciones. Uso [1,2]
4 2 Sintaxis y semántica de un lenguaje de programación de alto nivel. El rol de los algoritmos en el proceso de solución de un problema. Evaluación [1,2,3,4,9]

Total de Horas: 10.

Sesión Horas de trabajo independiente Temas Bibliografía
1-2 4 Tomar diferentes sistemas, realizar una observación, encontrar los elementos del sistema, diferenciar cuáles son variables y cuáles son constantes, y hallar el tipo de datos de las variables. [1]
3-4 4 Resolver problemas sencillos usando el lenguaje de programación Python y librería de la Tortuga. [1,2,3,4]

Total de Horas: 8

Capítulo 2: Nociones de Abstracción y Condición

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
5 3 Abstracción. Uso [1,2,4]
6 2 Descomposición de un programa. Evaluación [1,2,4]
7 3 Funciones, procedimientos, parámetros y argumentos. Variables locales y globales, alcance. Uso [1,2,4]
8 2 Implementación de funciones y procedimientos. Evaluación [1,2,3,4]
9 3 Errores en programación. Tipos de errores (sintaxis, lógicos, en ejecución). Comprensión de programas. El concepto de especificación. El rol y uso de contratos, incluyendo pre- y post-condiciones. Familiaridad [4]
10 2 Estrategias de depuración. Pruebas unitarias. Correctitud de un programa. Búsqueda y acceso a librerías. Evaluación [4]
11 3 Condicionales. Conectivos lógicos. Uso [1,2,4]
12 2 Programación defensiva. Documentación y estilo de programación. Diagramas de flujo. Uso de IDEs. Uso de control de versiones. Evaluación [4,9]
13 3 Cadenas de caracteres y procesamiento de cadenas. Uso [1,2,4]
14 2 Práctica del tipo de dato cadenas de caracteres. Evaluación [1,2,3,4]

Total de Horas: 25.

Sesión Horas de trabajo independiente Temas Bibliografía
5-6 4 Construir programas que solucionen problemas definiendo operaciones. [1,2,3,4]
7-8 4 Definir funciones o procedimientos que solucionen problemas dados. [1,2,3,4]
9-10 4 Encontrar errores en programas, proteger un programa contra posibles errores simples, definir correctamente contratos de programas. [2,4,9]
11-12 4 Resolver problemas usando condicionales. [1,2,3,4]
13-14 4 Resolver problemas con cadenas de caracteres. [1,2,3,4]

Total de Horas: 20

Capítulo 3: Noción de Repetición

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
15 3 Estructuras de control iterativas. Uso [1,2,4]
16 2 Repetición con while. Evaluación [1,2,4]
17 3 Funciones matemáticas iterativas. Uso [1,2,4]
18 2 Práctica de funciones iterativas. Evaluación [1,2,4]
19 3 Interfaces gráficas. Familiaridad [1,5]
20 2 Construcción de interfaces gráficas. Evaluación [1,5]
21 3 El concepto de recursión. Funciones matemáticas recursivas. Familiaridad [1,4]
22 2 Práctica de funciones recursivas. Evaluación [1,4]
23 3 Comparación informal de la eficiencia de algoritmos (e.g. conteo de operaciones). Familiaridad [4]
24 2 Comparación y refactorización simple de programas. Evaluación [4]

Total de Horas: 25.

Sesión Horas de trabajo independiente Temas Bibliografía
15-16 4 Resolver problemas iterativos. [1,2,3,4]
17-18 4 Resolver problemas matemáticos como series usando while. [1,2,3,4]
19-20 4 Desarrollar un programa con interfaz gráfica. [1,5]
21-22 4 Resolver problemas recursivos. [1,3,4]
23-24 4 Encontrar la complejidad de programas simples y crear programas con una complejidad dada. [4]

Total de Horas: 20

Capítulo 4: Nociones de Abstracción de datos y Persistencia

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
25 3 Listas y arreglos. Uso [1,2,4,7]
26 2 Algoritmos numéricos simples como calcular el promedio de una lista de números, encontrar el min, max y la moda en una lista, aproximar la raíz cuadrada de un número, o encontrar el máximo común divisor. Evaluación [4,7]
27 3 Conjuntos y Diccionarios. Uso [4,7]
28 2 json y programación web. Familiaridad [6]
29 3 Recorridos iterativos y recursivos de estructuras de datos. Implementación de juegos. Uso [1,4,8]
30 2 Ciclo for-each. Evaluación [1,2,4]
31 3 Archivos. Uso [1,2,4]
32 2 Entrada y salida de datos con archivos. Evaluación [1,2,4]

Total de Horas: 20.

Sesión Horas de trabajo independiente Temas Bibliografía
25-26 4 Resolver problemas con listas. [1,2,3,4,7]
27-28 4 Construir una página web y recuperar datos json. [6]
29-30 4 Crear un juego simple. [1,3,8]
31-32 4 Desarrollar programas que almacenen y recuperen datos de archivos. [1,2,3,4]

Total de Horas: 16

Integración Curricular

Resultados de Programa (ABET)

(A) La habilidad para aplicar conocimientos de matemáticas, ciencias e ingeniería.

(B) La habilidad para analizar un problema e identificar los requerimientos necesarios para su definición y solución.

(C) La habilidad para diseñar, implementar y evaluar procesos y sistemas computacionales.

(D) La habilidad para funcionar en equipos de trabajo.

(E) El entendimiento de la responsabilidad profesional y ética.

(F) La habilidad para comunicarse efectivamente.

(G) La habilidad para analizar los impactos de la computación y la ingeniería en las personas, organizaciones y la sociedad.

(H) El reconocimiento de la necesidad de, y la habilidad para, continuar con el desarrollo profesional.

(I) La habilidad para usar las técnicas, destrezas y herramientas modernas para la práctica de la computación.

(J) La habilidad para aplicar los fundamentos y principios de las matemáticas y de la computación en el modelamiento y diseño de sistemas computacionales de manera que se demuestre comprensión de las ventajas y desventajas en las decisiones de diseño.

(K) La habilidad para aplicar los principios de diseño y desarrollo de software en la construcción de sistemas de diferente complejidad.

Relevancia del curso con los resultados de programa

Resultados de Programa
A B C D E F G H I J K
Relevancia 4 1 4 1 5

Escala: (1) baja relevancia - (5) alta relevancia.

Integración de objetivos, contenido y metodología del curso

Resultados del Programa Indicadores de Desempeño Objetivos/Contenido del Curso Actividades de aprendizaje Instrumentos de medición
(A) Aplicación de Conocimientos (A1) Identificar los fundamentos científicos y los principios de ingeniería que rigen un proceso o sistema. (Conocimiento) (A2) Resolver problemas relacionados con la disciplina y otras áreas por medio de la utilización de conocimientos, modelos y formalismos de las ciencias de la computación, las matemáticas y la ingeniería. (Aplicación) (A3) Analizar conjuntos de datos. (Análisis) Todos los capítulos Exposiciones del profesor, solución de ejercicios y lecturas Exámenes y proyecto
(B) Análisis de problemas y requerimientos (B1) Describir procesos de manera declarativa ignorando los detalles de su implementación. (Comprensión). (B2) Utilizar el lenguaje propio de las matemáticas, la lógica y la ingeniería para especificar requerimientos funcionales y no funcionales de un sistema o proceso. (Aplicación). Todos los capítulos Solución de ejercicios y lecturas Exámenes y Proyecto
(C) Diseño (C1) Utilizar estándares de codificación en la implementación de componentes de software. (Aplicación). (C2) Identificar componentes, interacciones, relaciones e interfaces entre componentes. (Análisis). Todos los capítulos Solución de ejercicios y lecturas Exámenes y Proyecto
(F) Comunicación efectiva (F1) Producir textos de manera efectiva teniendo en cuenta la estructura, coherencia, flujo, ortografía y correcto uso del lenguaje. (Aplicación). (F2) Comunicarse de manera efectiva de acuerdo al público objetivo haciendo uso correcto del lenguaje, estilo, tiempo y expresión corporal. (Aplicación). (F3) Utilizar recursos gráficos para comunicar y expresar una idea. (Aplicación). (F4) Defender ideas con precisión y claridad. (Evaluación). Todos los capítulos Proyecto y tareas Reportes escritos
(I) Uso de herramientas y técnicas (I1) Utilizar herramientas de desarrollo de software. (Aplicación). (I2) Utilizar herramientas de diseño, modelamiento y simulación. (Aplicación). (I3) Combinar herramientas de software y hardware para resolver un problema. (Síntesis). (I4) Demostrar flexibilidad para adaptarse a diferentes paradigmas y lenguajes de programación. (Valuación). Todos los capítulos Laboratorios y lecturas Proyecto y tareas

Contribución al Desarrollo de Competencias (CNA)

Resultados de Programa
A B C D E F G H I J K
Ciudadanía U U
Comunicación escrita E
Lectura crítica U
Inglés U
Razonamiento cuantitativo E U U E

Contribución a los objetivos educacionales

La Carrera de Ingeniería de Sistemas y Computación plantea los siguientes objetivos educacionales, El estudiante graduado de la carrera será capaz de:

  1. Ejercitar la práctica de la Ingeniería de Sistemas y Computación profesionalmente.
  2. Diseñar y operar sistemas de computación que contribuyen a la solución de problemas relacionados a la disciplina, otra área de la ciencia y la ingeniería u otras disciplinas.
  3. Contribuir al bienestar de las comunidades desde posiciones prominentes en la industria, academia, sector público o como un emprendedor.
  4. Ser distinguido por su bases sólidas en computación, su sentido de ciudadanía responsable, su profesionalismo y liderazgo.
  5. Continuar su desarrollo profesional o involucrarse en estudios de posgrado.
Resultados de Programa
A B C D E F G H I J K
EO1 X X X
EO2 X X X
EO3 X
EO4 X X
E05 X

A través de los factores ABET declarados en la fórmula del curso, éste contribuye a los objetivos educacionales del programa y de esta manera se relaciona con los planes educativos del programa y de la Universidad.

Reglas del curso

Calificación y Balance de Evaluación del Curso

Instrumento Porcentaje A B C D E F G H I J K
Parcial 1 15% 4% 1% 4% 1% 5%
Parcial 2 15% 4% 1% 4% 1% 5%
Parcial 3 20% 7% 1% 5% 1% 6%
Parcial 4 20% 7% 1% 5% 1% 6%
Proyecto 20% 2% 9% 2% 7%
Tareas 10% 5% 5%

Uso de material en exámenes

No está permitido el uso de computadores personales, teléfonos celulares ó cualquier otro dispositivo electrónico.

Asistencia

Obligatoria.

Bibliografía

  1. Gerardo M. Sarria M. y Mario J Mora. “Introducción a la Programación”. Lulu Press. Enero, 2015.
  2. Guido Van Rossum. “An Introduction to Python”. Network Theory Ltd. March, 2011.
  3. Guido Van Rossum. “The Python Language Reference Manual (Python Manual)”. Network Theory Ltd. March, 2011.
  4. John V. Guttag. “Introduction to Computation and Programming Using Python”. The MIT Press. August, 2013.
  5. Burkhard A. Meier. “Python GUI Programming Cookbook”. Packt Publishing. December, 2015.
  6. Ryan Mitchell. “Web Scraping with Python: Collecting Data from the Modern Web”. O'Reilly Media. July, 2015.
  7. Bradley N. Miller y David L. Ranum. “Problem solving with algorithms and data structures using Python”. Franklin, Beedle & Associates Incorporated. August, 2011.
  8. Alejandro Rodas de Paz and Joseph Howse. “Python Game Programming by Example”. Packt Publishing. October, 2015.
  9. Mark Lutz y David Ascher. “Learning Python”. O'Reilly & Associates. July, 2013.

Instalaciones

Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.

Material de este semestre

 
materias/introduccionprogramacion.txt · Última modificación: 2016/09/04 17:25 por gsarria
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki