Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
CI0202 - Principios de informática
Grupo 08: K09-11 212-IN, V09-11 103-IF.
Grupo 10: L11-13 212-IN, J11-13 103-IF.

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 2 lecciones magistrales impartidas por el profesor y 2 lecciones en el laboratorio de cómputo. 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 practicas, 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

Semana Tema Contenido Semana calendario
1 1 Introducción a la Programación 06-ago
2 Introducción a la Programación Orientada a Objetos
2 3 Sistemas Numéricos y Representación de Datos 13-ago
4 Tipos de Datos
5 Definición de Variables y Utilización de Variables
3 6 Entrada y Salida Básica 20-ago
Manejo de Excepciones
4, 5 7 Expresiones y Operadores 27-ago, 03-set
8 Instrucciones y Estructuras de Control (if, if-else, switch; for, while, do-while)
6 Examen 01 10-set
7, 8 9 Métodos: Fundamentos 17-set, 24-set
Métodos: Funcionamiento
9 10 Recursividad 01-oct
10 Examen 02 08-oct
11 11 Arreglos o Vectores: Fundamentos 15-oct
Arreglos o Vectores: Operaciones
12 12 Matrices 22-oct
13 13 Hileras o Cadenas de Caracteres 29-oct
14 14 Entrada y Salida: Archivos 05-nov
15, 16 15 Programación Avanzada 12-nov, 19-nov
17 Examen 03 26-nov