Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
CI0202 - Principios de informática
Grupo 11: K11-13 103-IF, V11-13 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 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 nota \(N\) de una tarea o proyecto entregado \(h\) horas tarde se calculará como \(N = x - \frac{25}{18}h\), donde \(x\) es la nota que habría obtenido si se hubiere entregado a tiempo.
  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 Fecha Tema
1 13-ago Introducción a la programación
2 20-ago Variables, tipos de datos, expresiones y operadores
3 27-ago Estructuras de control condicional: if, if-else, switch
4 03-set Estructuras de control repetitivo (ciclos): while
5 10-set Estructuras de control repetitivo (ciclos): for, do-while
6 17-set Objetos: clases, instancias y referencias
7 24-set Cadenas de caracteres. Examen 01 (27-set semanas 1-5)
8 01-oct Métodos (parte 1)
9 08-oct Métodos (parte 2)
10 15-oct Arreglos/vectores (parte 1)
11 22-oct Arreglos/vectores (parte 2). Examen 02 (25-oct semanas 6-9)
12 29-oct Matrices
13 05-nov Entrada y salida: archivos
14 12-nov Herencia*
15 19-nov Interfaces gráficas*. Examen 03 (22-nov semanas 10-13)
16 26-nov Manejo de eventos*

* Temas extra o avanzados.