Download universidad mayor de san simón
Document related concepts
no text concepts found
Transcript
UNIVERSIDAD MAYOR DE SAN SIMÓN FACULTAD DE CIENCIAS Y TECNOLOGÍA GESTIÓN I/2010 PLAN GLOBAL I. IDENTIFICACIÓN. ASIGNATURA: Introducción a la Programación SIGLA: INF – 135 COD_SIS: 2010010 NIVEL(AÑO/SEMESTRE): Primer semestre PRE-REQUISITOS: 1. ÁREAS DE COORDINACIÓN CURRICULAR VERTICAL HORIZONTAL Elementos de programación Calculo I y estructuras de datos Álgebra I Métodos técnicas y taller Lógica de programación DÍA Miércoles Jueves Sábado HORARIO AULA 9:45-11:15 690B 18:45-20:15 690B 9:45-11:15 NOMBRE DEL DOCENTE: M.Sc. Lic. Victor Hugo Montaño Quiroga DIRECCIÓN: Dpto. de Informática y Sistemas TELEFONO: 4233719 E-MAIL: victor@memi.umss.edu.bo II. JUSTIFICACIÓN GENERAL. La materia de Introducción a la Programación es fundamental en la formación de un futuro Licenciado en Informática y en Ingeniería de Sistemas ya que en esta materia : - Se dan las primeras pautas para resolver problemas pequeños con la ayuda de la tecnología, lo cual le va formando su capacidad de innovar en la solución creativa a problemas aplicando técnicas y métodos adecuados. - Se fomenta la investigación, ya que para poder adquirir práctica el futuro Licenciado en Informática y en Ingeniería de Sistemas deberá munirse de información adicional por su propia cuenta. - Se da mucha importancia a la habilidad que tienen para resolver prácticas en la computadora, lo cual cubre en una pequeña parte la capacidad que en el futuro tendrá para llevar a cabo proyectos de software. - Se toma como herramienta de aplicación un lenguaje de programación de alto nivel para realizar las practicas en computadora, respondiendo así a la conciencia de cambio, desde el punto de vista tanto del docente como del alumno. - Se explota y se da la importancia a la lógica en la resolución de problemas. En resumen la materia es importante en las Carreras de Informática e Ingeniería de Sistemas ya que introduce los primeros conceptos y herramientas básicas para que el alumno pueda plantear soluciones a problemas diversos a través de programas. Esto es fundamental para un profesional del área. 1 III. PROPÓSITOS GENERALES. El presente plan propone introducir los elementos básicos de programación y conceptos de programación orientada a objetos. Para ello se hará bastante énfasis en la resolución de problemas, haciendo uso de un lenguaje de programación de alto nivel. Tomando en cuenta esto se espera que: - Los estudiantes apliquen razonamiento lógico para definir y resolver problemas. - Los estudiantes presenten soluciones correctas a pequeños problemas. - Los estudiantes utilicen los elementos básicos de programación para la resolución de problemas. - Los estudiantes utilicen de forma correcta la herramienta de programación. - Los estudiantes adquieran práctica en la solución de problemas, mediante la utilización adecuada de variables, constantes, estructuras de control y estructuras de datos. - Los estudiantes adquieran práctica en la solución de problemas, mediante la utilización adecuada de clases y objetos. - Los estudiantes enfrenten y tomen interés en lo que es la investigación IV. OBJETIVOS GENERALES. El - alumno al terminar el semestre ser capaz de: Plantear soluciones correctas a pequeños problemas Escoger tipos de datos adecuados Escoger estructuras de control adecuadas Escoger estructuras de datos adecuadas Distinguir entre datos temporales y persistentes Realizar algoritmos para resolución de problemas Programar soluciones, utilizando de manera correcta la sintaxis del lenguaje de programación Programar soluciones utilizando clases y objetos. Asumir el reto a la investigación de un cierto tópico V. ESTRUCTURACIÓN EN UNIDADES DIDÁCTICAS Y SU DESCRIPCIÓN. NOMBRE DE LA UNDAD (1): Conceptos básicos de programación DURACIÓN DE LA UNIDAD EN PERIODOS ACADÉMICOS: DIEZ TEORIA – CUATRO PRACTICA OBJETIVOS DE LA UNIDAD: El alumno será capaz de: 1. Reconocer los componentes fundamentales de toda computadora 2. Resolver problemas sencillos de forma correcta, aplicando algoritmos 3. Representar algoritmos mediante pseudo código y notación gráfica 4. Realizar pruebas de la correctitud de los algoritmos mediante pruebas escritorio 2 de CONTENIDO: - Tema 1. Introducción a la computación. Componentes de una computadora. Hardware/Software. Ambientes de programación. Lenguajes de alto nivel y bajo nivel. Concepto de Intérprete y Compilador. Máquina virtual. Programas. - Tema 2. Algoritmos. Concepto de algoritmo. Robustez de un algoritmo. Correctitud de un algoritmo. Completitud de un algoritmo. Eficiencia de un algoritmo. Aplicar concepto de algoritmos en un ejemplo. Resolución de problemas pequeños utilizando algoritmos. Prueba de escritorio. - Tema 3. Entrada / Salida Principios de Entrada / Salida. Obteniendo datos. Mostrando resultados - Tema 4. Principios de programación. Variables. Declaración de variables. Nombre de variable. Tipo de una variable. Constantes. Declaración de constantes. Nombre de constante. Tipo de una constante. Expresiones. Operadores. Prioridad de operadores. Tipos. Comentarios. - Tema 5. ¿Qué es un programa? Estructura de un programa. Un programa sencillo. Asignación. Mecanismos de salida. Mecanismos de entrada. METODOLOGÍA DE LA ENSEÑANZA: TÉCNICAS PREDOMINANTES PROPUESTAS PARA LAUNIDAD: 1. Exposición dialogada que se realizará con la problematización del tema a tocar y para poder generalizar conceptos se harán metáforas. 2. En el Tema 2 se resolverán ejercicios y problemas para que el alumno adquiera destreza en el manejo de los conceptos involucrados en los temas mencionados. 3. Planteamiento de tareas de investigación referente a lo que son expresiones, operadores. EVALUACIÓN DE LA UNIDAD: 1. Se realizaran evaluaciones formativas con preguntas incidentales. 2. Se motivará la participación de alumnos en clase para resolver ejercicios, por otro lado se contará con el apoyo de clases prácticas en laboratorio con el objetivo de fomentar al estudiante para el uso de la computadora. BIBLIOGRAFÍA ESPECIFICA DE LA UNIDAD: 1. [Algorithms 90] Thomas H. Cormen, Charles E. Leiserson y Ronald L. Rivest. Introduction to Algorithms. MIT Press, 1990. 2. [BG 87] Silvia Braunstein y Alicia Gioia. Introducción a la Programación y a las Estructuras de Datos. Editorial Universitaria de Buenos Aires, 1987. 3. [Bishop 99] Judy Bishop. Java: Fundamentos de Programación. Addison-Wesley, 1999. 4. [Deitels 97] H.M. Deitel y P.J. Deitel. Como Programar en Java. Segunda Edición. Prentice-Hall, 1998. 5. [Java2 98] Ken Arnold y James Gosling. The Java Programming Language. Second Edition. Addison-Wesley, 1998. 6. [Lecca 11] Eduardo Raffo Lecca. análisis y Diseño de Algoritmos. 3 NOMBRE DE LA UNDAD (2): Estructuras de Control DURACIÓN DE LA UNIDAD EN PERIODOS ACADÉMICOS: DIEZ TEORIA – SEIS PRACTICA OBJETIVOS DE LA UNIDAD: El alumno será capaz de: 1. Aplicar estructuras condicionales simples, en el planteamiento de soluciones a problemas que requieren procesos de selección 2. Aplicar estructuras condicionales anidadas, para resolver problemas que necesitan de procesos de selección múltiple 3. Aplicar estructuras iterativas, en problemas en los cuales el límite de veces que se repite un proceso está acotado por un intervalo discreto dado por el usuario 4. Aplicar estructuras iterativas, en problemas que tienen el límite de la iteración especificado mediante una condición 5. Distinguir la aplicación de iteraciones de 0 o más, ó 1 o más veces 6. Programar soluciones a problemas, mediante la utilización adecuada de las estructuras de control 7. Realizar investigación sobre la sentencia CONTENIDO: - Tema 6. Estructuras de programación condicionales o de selección. La sentencia if-then-else|. Orden de ejecución de una estructura condicional. Estructuras condicionales simples. Estructuras condicionales anidadas. Estructuras de selección múltiple. Resolución de ejercicios, mediante programas, que hacen uso de estructuras condicionales simples y/o anidadas - Tema 7. Estructuras de programación iterativas. Iteración con límite desconocido o determinado por el usuario. Sentencia while. Orden de ejecución de la sentencia while. Sentencia do-while. Orden de ejecución de la sentencia do-while. Iteración con límite conocido o dado en el programa. Sentencia for. Orden de ejecución de la sentencia for. Resolución de problemas aplicando las estructuras de control adecuadas para el problema. METODOLOGÍA DE LA ENSEÑANZA: TÉCNICAS PREDOMINANTES PROPUESTAS PARA LAUNIDAD: 1. Exposición dialogada, introduciendo los conceptos asociándolos con aspectos de la vida cotidiana. Gran parte del contenido de esta unidad se dedica al planteo de ejercicios y problemas; su análisis y resolución, motivando al estudiante a ser partícipe en la búsqueda de soluciones a los mismos. 2. Planteamiento de tareas de investigación referente a lo que es la sentencia condicional múltiple (switch). 3. Adicionalmente se les asignan prácticas para que resuelvan en computadora. EVALUACIÓN DE LA UNIDAD: 1. Se realizarán evaluaciones formativas con preguntas incidentales. 2. Se incentivará la participación de alumnos en clase para resolver ejercicios, por otro lado se contará con el apoyo de clases prácticas en laboratorio con el objetivo de motivar al estudiante para el uso de la computadora. 4 BIBLIOGRAFÍA ESPECIFICA DE LA UNIDAD: 1. [BG 87] Silvia Braunstein y Alicia Gioia. Introducción a la Programación y a las Estructuras de Datos. Editorial Universitaria de Buenos Aires, 1987. 2. [Bishop 99] Judy Bishop. Java: Fundamentos de Programación. Addison-Wesley, 1999. 3. [Blanco 97] Leticia Blanco. Guías prácticas: Introducción a la Programación. 1997. 4. [Deitels 97] H.M. Deitel y P.J. Deitel. Como Programar en Java. Segunda Edición. Prentice-Hall, 1998. 5. [EJava 97] Patrick Niemeyer y Joshua Peck. Exploring Java. O'Reilly & Associates, 1997. 6. [Java2 98] Ken Arnold y James Gosling. The Java Programming Language. Second Edition. Addison-Wesley, 1998. NOMBRE DE LA UNDAD (3): Estrategias de Estructuración DURACIÓN DE LA UNIDAD EN PERIODOS ACADÉMICOS: OCHO TEORIA – CUATRO PRACTICA OBJETIVOS DE LA UNIDAD: El alumno será capaz de: 1. Aprender las estrategias para estructurar programas: dividir para conquistar y refinamiento sucesivo 2. Determinar pre y pos condiciones de un subproceso 3. Determinar entradas y salidas de un subproceso CONTENIDO: - Tema 8. Subprogramas. Definición. Funciones procedimientos. Parámetros. Pre y pos condiciones. Entradas Salidas de un subproceso. Estrategias de división: dividir para conquistar, refinamiento sucesivo. Bibliotecas. Paquetes. METODOLOGÍA DE LA ENSEÑANZA: TÉCNICAS PREDOMINANTES PROPUESTAS PARA LAUNIDAD: 1. Exposición dialogada que se realizará con la problematización del tema a tocar y para poder generalizar conceptos se harán metáforas. 2. Planteamiento de tareas de investigación referente a los parámetros de entrada y salida. EVALUACIÓN DE LA UNIDAD: 1. Se realizaran evaluaciones formativas con preguntas incidentales. 2. Se motivará la participación de alumnos en clase para resolver ejercicios, por otro lado se contará con el apoyo de clases prácticas en laboratorio con el objetivo de fomentar el uso de la computadora en el estudiante. 5 BIBLIOGRAFÍA ESPECIFICA DE LA UNIDAD: 1. [Algorithms 90] Thomas H. Cormen, Charles E. Leiserson y Ronald L. Rivest. Introduction to Algorithms. MIT Press, 1990. 2. [BG 87] Silvia Braunstein y Alicia Gioia. Introducción a la Programación y a las Estructuras de Datos. Editorial Universitaria de Buenos Aires, 1987. 3. [Bishop 99] Judy Bishop. Java: Fundamentos de Programación. Addison-Wesley, 1999. 4. [Deitels 97] H.M. Deitel y P.J. Deitel. Como Programar en Java. Segunda Edición. Prentice-Hall, 1998. 5. [Java2 98] Ken Arnold y James Gosling. The Java Programming Language. Second Edition. Addison-Wesley, 1998. 6. [Lecca 11] Eduardo Raffo Lecca. análisis y Diseño de Algoritmos. NOMBRE DE LA UNDAD (4): Programación orientada a objetos: conceptos básicos DURACIÓN DE LA UNIDAD EN PERIODOS ACADÉMICOS: CATORCE TEORIA – OCHO PRACTICA OBJETIVOS DE LA UNIDAD: El alumno será capaz de: 1. Identificar un dato abstracto (abstracción de datos) 2. Identificar propiedades (atributos) de un tipo de dato abstracto (objeto) 3. Identificar acciones (métodos) de un tipo de dato abstracto (objeto) 4. Implementar el tipo de dato abstracto en términos de clases y objetos del lenguaje de programación elegido para la materia 5. Programar soluciones utilizando el paradigma orientado a objetos CONTENIDO: - Tema 9. Introducción a la Programación Orientada a Objetos. Definición. Objeto. Abstracción. Clase, atributo, métodos. Definición. de un método. Parámetros de un método. - Tema 10. Propiedades básicas de la programación Orientada a Objetos. Encapsulamiento. Interfaces de un objeto. Polimorfismo: sobrecarga Tipo TÉCNICAS PREDOMINANTES PROPUESTAS PARA LAUNIDAD: 1. Exposición dialogada que se realizará con la problematización del tema a tocar y para poder generalizar conceptos se harán metáforas. 2. Se fomentara la reflexión y crítica a lo aprendido. METODOLOGÍA DE LA ENSEÑANZA: EVALUACIÓN DE LA UNIDAD: 1. Se realizarán evaluaciones formativas con preguntas incidentales. 2. Se motivará la participación de alumnos en clase para resolver ejercicios. El objetivo es de verificar que los estudiantes apliquen los conceptos fundamentales a programas y obtengan la practica necesaria para proseguir con el resto del contenido, asimismo que los estudiantes puedan aprendan de sus aciertos y de sus posibles errores. 6 BIBLIOGRAFÍA ESPECIFICA DE LA UNIDAD: 1. [Bishop 99] Judy Bishop. Java: Fundamentos de Programación. Addison-Wesley, 1999. 2. [Deitels 97] H.M. Deitel y P.J. Deitel. Como Programar en Java. Segunda Edición. Prentice-Hall, 1998. 3. [Java2 98] Ken Arnold y James Gosling. The Java Programming Language. Second Edition. Addison-Wesley, 1998. NOMBRE DE LA UNDAD (5): Estructuras de datos básicas DURACIÓN DE LA UNIDAD EN PERIODOS ACADÉMICOS: CUATRO TEORIA – DOS PRACTICA OBJETIVOS DE LA UNIDAD: El alumno será capaz de: 1. Aplicar arreglos para solucionar problemas, identificando el tipo de datos adecuado que manipulara el arreglo 2. Programar ordenamiento de arreglos, dado un método específico 3. Programar búsquedas en arreglos, dada una técnica específica 4. Aplicar matrices para solucionar problemas 5. Programar cadenas de tamaño fijo (estáticas) 6. Programar soluciones a problemas, haciendo uso adecuado de las estructuras de datos CONTENIDO: - Tema 11. Arreglos. Concepto de Arreglo. Acceso a un elemento específico de un arreglo. Recorrido de los elementos de un arreglo. Técnicas de búsqueda de elementos del arreglo. Métodos de ordenamiento de elementos del arreglo. Matrices. Acceso a elementos de una matriz. Resolución de problemas aplicando arreglos en programas. Cadenas. TÉCNICAS PREDOMINANTES PROPUESTAS PARA LAUNIDAD: 1. Exposición dialogada, cada tema que se toca en esta unidad requiere de mucha aplicación de los conceptos en la programación de soluciones a problemas, es por esa razón que se da mucho énfasis a la resolución de problemas e implementación de programas que hagan uso de los conceptos vistos en esta unidad. METODOLOGÍA 2. Planteamiento de tareas de investigación referente a DE LA bibliotecas. ENSEÑANZA: 3. Al igual que en la anterior unidad las prácticas para realizar programas en computadora son fundamentales, para un aprovechamiento óptimo del alumno. EVALUACIÓN DE LA UNIDAD: 1. Se realizarán evaluaciones formativas con preguntas incidentales. 2. Se incentivará la participación de alumnos en clase para resolver ejercicios, por otro lado se contara con el apoyo de clases prácticas en laboratorio con el objetivo de motivar al estudiante para el uso de la computadora. 7 BIBLIOGRAFÍA ESPECIFICA DE LA UNIDAD: 1. [BG 87] Silvia Braunstein y Alicia Gioia. Introducción a la Programación y a las Estructuras de Datos. Editorial Universitaria de Buenos Aires, 1987. 2. [Bishop 99] Judy Bishop. Java: Fundamentos de Programación. Addison-Wesley, 1999. 3. [Blanco 97] Leticia Blanco. Guías prácticas: Introducción a la Programación. 1997. 4. [Deitels 97] H.M. Deitel y P.J. Deitel. Como Programar en Java. Segunda Edición. Prentice-Hall, 1998. 5. [EJava 97] Patrick Niemeyer y Joshua Peck. Exploring Java. O'Reilly & Associates, 1997. 6. [Java2 98] Ken Arnold y James Gosling. The Java Programming Language. Second Edition. Addison-Wesley, 1998. 7. [Lecca 11] Eduardo Raffo Lecca. análisis y Diseño de Algoritmos. NOMBRE DE LA UNDAD (6): Programación orientada a objetos: conceptos avanzados DURACIÓN DE LA UNIDAD EN PERIODOS ACADÉMICOS: VEINTIDOS TEORIA – DIEZ PRACTICA OBJETIVOS DE LA UNIDAD: El alumno será capaz de: 1. Definir polimorfismo 2. Definir métodos sobrecargados 3. Definir la herencia 4. Definir métodos sobreescritos 5. Definir métodos para serializar objetos 6. Definir métodos para hacer persistentes a los objetos 7. Programar soluciones utilizando el paradigma orientado a objetos CONTENIDO: - Tema 12. Herencia Definición. Tipos de herencia: simple y múltiple. Polimorfismo: sobreescritura TÉCNICAS PREDOMINANTES PROPUESTAS PARA LAUNIDAD: 1. Exposición dialogada con la ayuda de transparencias para ilustrar el concepto de herencia e interfaces. 2. Resolución de ejercicios y problemas que involucran el uso de herencia y herencia múltiple. 3. Prácticas en grupos, cada clase después de dar los conceptos y resolver problemas, se planteará problemas a los grupos para METODOLOGÍA que en franca discusión entre ellos puedan proponer, discutir y DE LA argumentar soluciones. ENSEÑANZA: 4. Como en las anteriores unidades se plantearan prácticas. EVALUACIÓN DE LA UNIDAD: 1. Preguntas incidentales. 2. La evaluación se basará en la solución que los grupos encuentren cada clase a los problemas planteados, como siempre el criterio de evaluación es la destreza que adquieran al practicar con lenguaje de programación elegido como herramienta de la materia, como también la destreza para resolver problemas a través de programas. BIBLIOGRAFÍA ESPECIFICA DE LA UNIDAD: 8 1. [Bishop 99] Judy Bishop. Java: Fundamentos de Programación. Addison-Wesley, 1999. 2. [Deitels 97] H.M. Deitel y P.J. Deitel. Como Programar en Java. Segunda Edición. Prentice-Hall, 1998. 3. [EJava 97] Patrick Niemeyer y Joshua Peck. Exploring Java. O'Reilly & Associates, 1997. 4. [Java2 98] Ken Arnold y James Gosling. The Java Programming Language. Second Edition. Addison-Wesley, 1998. VI. EVALUACIÓN. Durante todo el semestre se realizaran dos exámenes parciales y un examen final, estas pruebas tendrán un valor de 100 puntos. Una primera opción de obtener la nota final es promediando las dos notas de parciales, la nota mínima de aprobación es de 51. En una segunda opción para obtener la nota final, el estudiante podrá optar por el examen final sobre 100 puntos. Si el estudiante no aprueba en las dos primeras opciones tiene derecho a un examen de segunda instancia, según se establece en el reglamento de evaluación estudiantil, cumpliendo con las restricciones del mismo; es decir pueden rendir examen aquellos estudiantes que tengan un promedio en los dos parciales mayor o igual a 26 y siempre y cuando no haya dado más de dos exámenes de segunda instancia. El examen de segunda instancia se basa en el mismo contenido del examen final VII. CRONOGRAMA. Primer Parcial Segundo parcial Final Segunda Instancia VIII. DISPOSICIONES GENERALES. La tolerancia de retraso para el ingreso al aula, tanto de los alumnos como del docente, es de 10 minutos. Se espera que con esta medida se fomente la asistencia puntual a las clases. Se organizaran grupos de trabajo en aula para la Unidad 6, esta actividad estará condicionada a la cantidad de alumnos que asistan, es decir si existen demasiados, no se podrá realizar. Las prácticas son personales/grupales y deben ser entregadas en disquetes. La definición de la modalidad personal/grupal, se establecerá de forma oportuna de acuerdo al trabajo. Cualquier tipo de fraude en los exámenes es motivo automático de reprobación de la materia en el semestre en curso. El estudiante debe dar los exámenes en lo cursos correspondientes a su grupo y docente, previa presentación de un documento idóneo que acredite su identidad. Las herramientas de apoyo en esta materia son: Bluej y lenguaje de programación Java. Se sugiere el uso de la versión libre Java 2 SDK, Standard Edition, versión 1.4. 9 Material de estudio en forma electrónica Información adicional sobre la materia se puede encontrar en la página web de la materia, http://www.memi.umss.edu.bo/progra. Por ejemplo: ejercicios adicionales, herramientas y software, enlaces interesantes con más material para aprender a programar y el lenguaje de programación que se enseña, noticias sobre fechas importantes, notas, etc. Se sugiere el uso del foro de discusión técnico, acerca de los temas que se tocan en la materia o los ejercicios. más información sobre este foro se puede encontrar en la página web de la materia, bajo el enlace “Lista de discusión”. Finalmente también se encuentra a disposición del estudiante un CD que contiene un compilador para el lenguaje de programación usado y ambientes y editores para introducir los programas. Preguntar sobre el CD en la secretaría de la Carrera. IX. BIBLIOGRAFÍA GENERAL. 1. [Algorithms 90] Thomas H. Cormen, Charles E. Leiserson y Ronald L. Rivest. Introduction to Algorithms. MIT Press, 1990. 2. [BG 87] Silvia Braunstein y Alicia Gioia. Introducción a la Programación y a las Estructuras de Datos. Editorial Universitaria de Buenos Aires, 1987. 3. [Bishop 99] Judy Bishop. Java: Fundamentos de Programación. Addison-Wesley, 1999. 4. [Deitels 97] H.M. Deitel y P.J. Deitel. Como Programar en Java. Segunda Edición. Prentice-Hall, 1998. 5. [EJava 97] Patrick Niemeyer y Joshua Peck. Exploring Java. O'Reilly & Associates, 1997. 6. [Flanagan 99] David Flanagan. Java in a Nutshell. Third Edition. O'Reilly & Associates, 1999. 7. [Java2 98] Ken Arnold y James Gosling. The Java Programming Language. Second Edition. Addison-Wesley, 1998. 8. [LangSpec 00] James Gosling, Bill Joy, Guy Steele and Gilad Bracha. The Java Language Specification. Second Edition. Addison-Wesley, 2000. 9. [Lecca 11] Eduardo Raffo Lecca. análisis y Diseño de Algoritmos. 10