Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
CI0202 - Principios de informática. III-2012 (verano)
Grupo 903: K13-15 103-IF, K15-17 212-IN, J13-17 212-IN

Profesor Jeisson Hidalgo-Céspedes
Correo: jeissonh@gmail.com
Casillero: 04 de la Escuela de Computación

Carta al estudiante

Descripción del curso

El curso de Principios de Informática, es un curso básico de programación para estudiantes del área de ingeniería y afines. 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.

Objetivos

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 el estudiante será capaz de:

Contenido del curso

  1. Fundamentos de la programación

    1. Lenguajes de programación: concepto de programación, lenguaje máquina, lenguaje ensamblador, lenguaje de alto nivel, maquina virtual, compilador y paradigmas.
    2. Ciclo de vida de un programa: problema, análisis, diseño, implementación y prueba.
    3. Algoritmo: concepto, primitivas y ejemplos.
  2. Introducción a la programación orientada a objetos

    1. Paradigma: clases e instancias, atributos y métodos, abstracción y reutilización.
    2. Análisis y diseño: modelaje de clases e instancias.
    3. Compilación y ejecución.
  3. Sistemas numéricos y representación de datos

    1. Bases y conversión: decimal, binaria y hexadecimal.
    2. Sistemas de codificación: ASCII y UNICODE.
  4. Tipos de datos

    1. Tipos de datos: primitivos (enteros, reales, booleano y caracteres) e hileras.
    2. Precisión: entero (byte, short, int y long), real (float y double), booleano, carácter e hilera (ejemplo: secuencias de escape).
  5. Definición de variables

    1. Declaración: tipo, identificador y dirección.
    2. Inicialización: tipo primitivo (valor), instancia (referencia) y estado de memoria.
    3. Asignación y conversión (type casting).

    Utilización de variables

    1. Atributos de clase: declaración, ámbito de vida y ocultamiento (encapsulamiento).
    2. Variables locales: declaración y ámbito de vida.
    3. Estáticas y constantes: declaración y ámbito de vida.
  6. Entrada y salida básica

    1. Entrada: parámetros de línea de comandos y diálogo.
    2. Salida: línea de comandos y diálogo.

    Manejo de excepciones

    1. Concepto, ejemplos y definición (clase), lanzamiento y atrape.
  7. Expresiones y operadores

    1. Aritméticos binarios (multiplicativos y aditivos) y unarios (negación y posfijos).
    2. Relacionales (comparación e igualdad), lógicos (binarios y unarios) y asignación.
    3. Evaluación y orden de precedencia.
  8. Instrucciones y estructuras de control

    1. Estructuras de secuenciación ({}).
    2. Estructuras de selección o bifurcación (if/else y switch).
    3. Estructuras de repetición o iteración (while, do-while y for).
  9. Métodos: fundamentos

    1. Conceptos: modularización y reutilización, declaración e invocación.
    2. Componentes: encabezado (identificador, parámetros y tipo de retorno) y cuerpo.
    3. Métodos estáticos (funciones).
    4. Sobrecarga: declaración, firmas y resolución de llamados.

    Métodos: funcionamiento

    1. Paso de argumentos: por valor y por referencia.
    2. Estado de memoria estática, memoria dinámica y pila de llamados.
    3. Reglas de alcance o ámbito de identificadores.

    Constructores

    1. Concepto y utilización: declaración e invocación.
  10. Recursividad

    1. Concepto y utilización.
    2. Orden de llamados.
  11. Arreglos o vectores: fundamentos

    1. Concepto, estructura y estado de memoria.
    2. Declaración e inicialización.
    3. Acceso a celdas y recorrido.
    4. Parámetros de tipo arreglo y paso de argumentos.

    Arreglos o vectores: operaciones

    1. Utilidad y operaciones comunes (suma, promedio, mínimo, máximo).
    2. Búsqueda: primitivos e instancias.
    3. Ordenamiento: primitivos e instancias.
  12. Matrices

    1. Concepto, estructura y estado de memoria.
    2. Declaración e inicialización.
    3. Acceso a celdas y recorrido.
  13. Hileras o cadenas de caracteres

    1. Concepto.
    2. 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.
  14. Entrada y salida: archivos

    1. Conceptos y organización física de archivos.
    2. Operaciones de archivos: lectura y escritura.
    3. Procesamiento binario/textual: apertura/cierre y lectura/escritura.
  15. Programación avanzada desarrollando uno de los siguientes temas:

    1. Matrices, algoritmos y bibliotecas de álgebra lineal.
    2. Fundamentos de graficación y de interfaces gráficas.
    3. Punteros y referencias, copia y clonación de objetos.
    4. Algoritmos de búsqueda y ordenamiento básicos.
    5. Herencia y polimorfismo

Metodología

El curso se basa en 4 lecciones magistrales por semana impartidas por el profesor y 4 lecciones en el laboratorio de cómputo por semana (por impartirse en verano). En las lecciones magistrales se utiliza los recursos audiovisuales y pizarra, para mostrar conceptos e implementaciones. En las lecciones de laboratorio se implementarán los ejercicios cortos de programación.

Se asignan prácticas, tareas cortas y proyectos en los cuales el estudiante podrá profundizar individualmente los temas desarrollados en clase. Parte de la evaluación será a través de exámenes cortos, los cuales se aplicarán en tiempo de clase a criterio y organización del profesor. Se realizarán tres exámenes parciales.

Recursos didácticos

Evaluación

Observaciones

  1. En toda asignación, sea en papel o digital, se evaluará la indentación, uso correcto de paréntesis (redondos, cuadrados y llaves), la eficiencia y las buenas prácticas de programación.
  2. La entrega tardía de una evaluación será castigada con 10 puntos porcentuales por día de retraso.
  3. Cualquier evaluación donde se detecte plagio, su calificación será anulada por completo.

Bibliografía

  1. Deitel, P.J.; Deitel, H.M. Java Cómo programar, séptima edición.
    ISBN 978-97-0261-190-5. Prentice-Hall Pearson, México, 2008.
  2. Barnes, David J.; Kölling Michael. Programación orientada a objetos con Java.
    ISBN 978-84-8322-350-5. Pearson Educación, 2007.
  3. Ceballos, Francisco Javier. Java 2 - Curso de Programación - 3ra edición.
    ISBN 970-15-1164-6. Alfaomega Ra-Ma, 2006.

Cronograma

Lección Fecha Tema
1 08-ene Introducción a la programación
2 10-ene Variables y tipos de datos primitivos. Expresiones y operadores
3 15-ene Estructuras de control condicional: if, if-else, switch
4 17-ene Estructuras de control repetitivo (ciclos): for, while, do-while
5 22-ene (No hay lecciones)
6 24-ene (No hay lecciones)
7 29-ene Objetos: clases, instancias y referencias
8 31-ene Cadenas de caracteres. Examen 01
9 05-feb Métodos (parte 1)
10 07-feb Métodos (parte 2)
11 12-feb Arreglos/vectores (parte 1)
12 14-feb Arreglos/vectores (parte 2). Examen 02
13 19-feb Matrices
14 21-feb Entrada y salida: archivos
15 26-feb Programación avanzada
16 28-feb Programación avanzada. Examen 03