Topic outline

  • Programación I (2009)

    ingenieria_grafica_-_G709  


    Profesores

    Michael González Harbour

    José Luis Montaña Arnáiz


    Departamento de Matemáticas, Estadística y Computación



    El objetivo de la asignatura es aprender los conceptos básicos de algorítmica, así como la codificación de algoritmos sencillos en un lenguaje de programación concreto




    Palabras Clave de la Asignatura

    Java, Programación, Arrays, GUI, Lenguajes de programación, Programas, Informática, Lenguajes y Sistemas Informáticos, Sistemas Operativos, Algoritmos, Computación

  • Programa

     

     

    Datos identificativos de la Asignatura

    • Asignatura: Programación I

    • Código: 5407

    • Departamento / Área: Matemáticas, Estadística y Computación

    • Título: Ingeniero en Informática

    • Profesores: Michael González Harbour / José Luis Montaña Arnáiz


     

    Objetivos Generales

    Aprender los conceptos básicos de algorítmica, así como la codificación de algoritmos sencillos en un lenguaje de programación concreto.

     

    Objetivos Específicos

    Conocimientos

    - Conocer y comprender la sintaxis y semántica de las expresiones e instrucciones de un lenguaje de programación imperativo.

    - Conocer el concepto de clase y objeto como elementos constituyentes de los programas

    - Conocer y saber utilizar los tipos de datos elementales, las tablas y las secuencias.

    - Conocer los conceptos de método y paso de parámetros.

    - Conocer los principios de la entrada/salida interactiva simple

     

    Habilidades

    - Especificar problemas sencillos de programación

    - Saber aplicar a problemas sencillos el razonamiento inductivo para construir algoritmos.

    - Codificar estos algoritmos en un lenguaje de programación imperativo

    - Utilizar un sistema de desarrollo para editar, compilar y ejecutar programas

    - Razonar informalmente sobre la corrección de los algoritmos

     

    Capacidades

    - Dotar de capacidad para la abstracción (simplificación) y para el razonamiento semiformal pero riguroso.

    - Capacidad para comprender los problemas, desde el enunciado, saber especificar y distinguir datos, resultados y datos/resultados.

    - Capacidad para enfrentarse a los problemas, siendo capaz de resolver nuevas situaciones desde los conocimientos adquiridos.

    - Dotar de capacidad para abordar con éxito el estudio de nuevas materias de la titulación de Ingeniería Informática.

     

     

    Programa

    BLOQUE I: CONCEPTOS Y TÉCNICAS BÁSICAS EN PROGRAMACIÓN

    1. Introducción.

    - Programas y lenguajes.

    - Necesidad de la programación modular.

    - Ciclo de vida de los programas

    - Concepto de algoritmo

    - Noción de proceso.

    - Variables y estado de un programa

    - Traza de un proceso

     

    2. Datos y expresiones. Especificación de algoritmos

    - Tipos primitivos

    - Variables y constantes

    - Operadores y expresiones

    - Noción de especificación

    - Noción de predicado

    - Corrección de un algoritmo

    - Reglas de consecuencia de una especificación

    - Encapsulamiento: Concepto de clase y objeto

    - Diagramas de clases

    - Métodos y paso de parámetros

    - Especificación de clases y objetos

     

    3. Estructuras algorítmicas básicas.

    - La asignación

    - Corrección de la asignación. Regla de inferencia

    - Composición secuencial de instrucciones

    - La instrucción alternativa simple

    - La instrucción alternativa múltiple

    - Alternativa exclusiva y general

     

    4. Iteración y recursión.

    - Diseño iterativo. Instrucción de bucle

    - Corrección de la implementación iterativa: Trazas, invariantes y cotas

    - Fases del diseño iterativo

    - Otras instrucciones de bucle

    - Recursión

    - Corrección de la implementación recursiva

    - Fases del diseño recursivo

     

    5. Iteración y recursión sobre secuencias.

    - Introducción

    - Descripción de la secuencia. Interfaz

    - Recorridos sobre secuencias

    - Búsquedas en secuencias

    - Esquemas mixtos

     

    6. Iteración y recursión sobre tablas.

    - Concepto de tabla. Sintaxis

    - Operaciones sobre tablas

    - Recorrido de tablas

    - Búsqueda en tablas

    - Búsqueda binaria

    - Algoritmos sencillos de ordenación en tablas

     

    BLOQUE II: ELEMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA

     

    1. Introducción a los lenguajes de programación

    - El software del sistema.

    - Lenguajes de Programación.

    - Lenguajes de alto y bajo nivel.

    - Ensambladores, compiladores e intérpretes.

    - Algunos lenguajes de alto nivel.

    - El proceso de compilación.

    - El ciclo de vida del software

     

    2. Estructura de un programa

    - Introducción al lenguaje Java

    - Clases y objetos en Java

    - Estructura de un programa

    - Estructura de una clase

    - Estructura de una operación

     

    3. Datos y expresiones simples

    - Tipos primitivos

    - Los datos en Java

    - Operadores y expresiones

    - Conversión de tipos

    - Uso de funciones matemáticas

    - Declaración de clases y objetos

    - Strings

    - Composición de objetos

     

    4. Instrucciones de control

    - Instrucciones simples y compuestas

    - Instrucción condicional simple

    - Instrucción condicional múltiple

    - Instrucciones de bucle

    - Bucle con condición de permanencia al principio

    - Bucle con condición de permanencia al final

    - Bucle con variable de control

    - Instrucciones de salto en bucles

     

    5. Entrada/Salida simple

    - Entrada salida de texto

    - Entrada/salida de números

    - Dibujos

    - Gráficas de funciones

    - Menús

     

    6. Arrays, secuencias y tablas

    - Construcción de tablas mediante arrays

    - Arrays unidimensionales

    - Uso de arrays

    - Recorrido y recorrido parcial

    - Búsqueda

    - Arrays multidimensionales

    - Tablas de tamaño variable

     

     

    BLOQUE III: HERRAMIENTAS DE LABORATORIO

     

    1. Sistemas operativos

    - Conceptos básicos

    - Sistemas operativos comunes

    - Inicio y terminación de sesiones

    - El sistema de ficheros

    - Nombres de ficheros en Unix

    - Directorio de trabajo

    - Intérprete de órdenes

    - Órdenes más usuales

    - Gestión de directorios

    - Gestor gráfico de ficheros

    - Uso de memorias USB

    - Aspectos avanzados

     

    2. Entorno integrado de desarrollo de programas

    - Proceso de desarrollo de programas

    - El editor de texto

    - Compilar y ejecutar programas Java

    - Uso del entorno de desarrollo

    - Gestión de proyectos

    - La compilación

    - La depuración

    - Generación de documentación

    - Empaquetamiento del programa

     

     

  • Bibliografía

     

    Básica

    • Castro J., et al. “Curso de Programación”, McGrawHill, 2001.

    • D.J. Barnes y M. Kölling, “Objects first with Java: A practical introduction using Bluej”, Prentice Hall, 2003.

    • David M. Arnow, Gerald Weiss. “Introducción a la programación con Java: Un enfoque orientado a objetos”. Prentice Hall, 2000. ISBN 84-7829-033-8



    Complementaria

    • Ken Arnold, James Gosling, David Holmes, “El lenguaje de programación Java”, 3ª edición. Addison-Wesley, 2000, ISBN 84-7829-045-1

    • Shen A. “Algorithms and Programming: problems and solutions”, Birkhauser, 1997.

    • E. Bueno, y otros. “Algoritmos y Ejercicios resueltos en Java”. Prentice Hall 2003. ISBN 84-705-4024-2

    • B. Eckel, “Piensa en Java”, Addison Wesley, 2002. ISBN 84-205-3192-8

    • Bishop J. “Java. Fundamentos de programación”, Addison Wesley, 1999

  • Materiales de Clase

     

    BLOQUE I: CONCEPTOS Y TÉCNICAS BÁSICAS EN PROGRAMACIÓN

    • MC-F-001. 1. Introducción.

    • MC-F-002. 2. Datos y expresiones. Especificación de algoritmos

    • MC-F-003. 3. Estructuras algorítmicas básicas.

    • MC-F-004. 4. Iteración y recursión.

    • MC-F-005. 5. Iteración y recursión sobre secuencias.

    • MC-F-006. 6. Iteración y recursión sobre tablas.


    BLOQUE II: ELEMENTOS DEL LENGUAJE DE PROGRAMACIÓN JAVA

    • MC-F-007. 1. Introducción a los lenguajes de programación

    • MC-F-008. 2. Estructura de un programa

    • MC-F-009. 3. Datos y expresiones simples

    • MC-F-010. 4. Instrucciones de control

    • MC-F-011. 5. Entrada/Salida simple. Enlace web

    • MC-F-012. 6. Arrays, secuencias y tablas



    BLOQUE III: HERRAMIENTAS DE LABORATORIO

    • MC-F-014. 1. Sistemas operativos

    • MC-F-015. 2. Entorno integrado de desarrollo de programas

    • MC-F-016. Ejercicios con Unix

  • Prácticas

     

    Prácticas


    Problemas

  • Pruebas de Evaluación

     

    Exámenes

    • PE-A-001. Examen Informática febrero 2006
    • PE-A-002. Examen Programación I febrero 2006
    • PE-A-003. Examen Programación I septiembre 2006
    • PE-A-004. Examen Programación I febrero 2007
    • PE-A-005. Examen Programación I septiembre 2007
    • PE-A-006. Examen Programación I febrero 2008
    • PE-A-007. Examen Programación I septiembre 2008

     

    Criterios de Evaluación

    PROCEDIMIENTO ORDINARIO: evaluación mixta, con un 40% de peso correspondiente al trabajo continuo en las prácticas de la asignatura y un 60% al examen final de cuestiones y problemas.

    PROCEDIMIENTO EXTRAORDINARIO: se podrá admitir en casos excepcionales y justificados una evaluación única de las prácticas en el laboratorio, mediante un examen de prácticas. A este examen se podrá optar tras la entrega de los informes de las prácticas y ejercicios obligatorios de la asignatura. El examen final de cuestiones y problemas es el mismo que el del procedimiento ordinario. Los pesos de cada examen también (40% examen de prácticas, y 60% examen de cuestiones y problemas).

    En ambos procedimientos es preciso superar por separado las prácticas y el examen de cuestiones y problemas.

     

    Descripción de la evaluación continua: actividades que debe desarrollar el alumno y su valoración

    La evaluación continua se realizará a través de la valoración de las prácticas y de la colección de ejercicios que deben ser resueltos por el alumno.

    Criterios de evaluación de las prácticas:

    a) Trabajo en el laboratorio

    Conocimientos: Conocimiento de los conceptos de algoritmos y del lenguaje Java

    Grado de Resolución: Grado de resolución de la práctica alcanzado durante las horas en el laboratorio.

    b) Informes sobre las prácticas

    Especificación y diseño: Facilidad para especificar diseñar y comprender algoritmos.

    Estilo: Estilo de programación, claridad del código, documentación del código.

    Organización: Organización del informe, claridad en la exposición

    Fecha de entrega: Entrega del informe dentro del plazo marcado, con el objetivo de conseguir una evaluación realmente continuada.

    El profesor de prácticas puede pedir que se muestre el correcto funcionamiento de la práctica en el laboratorio. Las prácticas cuyo informe se presente con retraso de hasta una semana tendrán un punto menos (sobre 10) y las de informes presentados con retraso entre una y dos semanas tendrán tres puntos menos. Las entregas pasadas dos semanas del plazo no se evaluarán, pero su presentación es obligatoria.

     

    Descripción del examen final (duración, se pueden llevar apuntes o no, tiene partes diferenciadas o no, se promedian teoría y problemas o no, etc).

    El examen final escrito de cuestiones y problemas constará de dos partes. La primera parte se referirá a la evaluación de conocimientos teóricos para que lo que se plantearán una serie de preguntas y ejercicios de respuesta rápida. La segunda parte se referirá a la comprensión y utilización del lenguaje de programación para lo que se planteará un problema de dificultad media. Ambas partes tienen la misma puntuación global y tendrán un tiempo asignado de 90 minutos. Se podrán utilizar apuntes y bibliografía.

    El examen de prácticas del procedimiento extraordinario es un examen en el laboratorio con una duración de dos horas en las que se pedirá el diseño de un algoritmo especificado por el profesor y su codificación en lenguaje de programación, utilizando los equipos del laboratorio.

     

    Observaciones

    Para superar la asignatura es preciso superar tanto el examen como las prácticas. La nota final estará compuesta por:

    - 60% examen escrito de cuestiones y problemas

    - 40% nota de prácticas

    En caso de que una de estas partes no se supere, la nota final será el máximo de 4.5 y la media obtenida.

    En caso de aprobar únicamente una de las dos partes en la convocatoria de junio, se guardaría la nota de esa parte para septiembre.

  • Guía de Aprendizaje

     

  • Sobre el Profesor

     

    Logo de la UC

     

    Michael González Harbour

    Catedrático de Universidad

     

    Departamento de Matemáticas,

    Estadística y Computación


     

     

     

     

    Logo de la UC

     

    José Luis Montaña Arnaiz

     Profesor Titular

     

    Departamento de Matemáticas,

    Estadística y Computación