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:
- Diseñar, organizar e implementar algoritmos para resolver problemas específicos del área de ingeniería, ciencias y afines.
- Usar un ambiente de programación para la edición, prueba y depuración de programas.
- Reutilizar componentes de software.
- Aplicar buenas prácticas de construcción de software.
Contenido del curso
Fundamentos de la programación
- Lenguajes de programación: concepto de programación, lenguaje máquina, lenguaje ensamblador, lenguaje de alto nivel, maquina virtual, compilador y paradigmas.
- Ciclo de vida de un programa: problema, análisis, diseño, implementación y prueba.
- Algoritmo: concepto, primitivas y ejemplos.
Introducción a la programación orientada a objetos
- Paradigma: clases e instancias, atributos y métodos, abstracción y reutilización.
- Análisis y diseño: modelaje de clases e instancias.
- Compilación y ejecución.
Sistemas numéricos y representación de datos
- Bases y conversión: decimal, binaria y hexadecimal.
- Sistemas de codificación: ASCII y UNICODE.
Tipos de datos
- Tipos de datos: primitivos (enteros, reales, booleano y caracteres) e hileras.
- Precisión: entero (byte, short, int y long), real (float y double), booleano, carácter e hilera (ejemplo: secuencias de escape).
Definición de variables
- Declaración: tipo, identificador y dirección.
- Inicialización: tipo primitivo (valor), instancia (referencia) y estado de memoria.
- Asignación y conversión (type casting).
Utilización de variables
- Atributos de clase: declaración, ámbito de vida y ocultamiento (encapsulamiento).
- Variables locales: declaración y ámbito de vida.
- Estáticas y constantes: declaración y ámbito de vida.
Entrada y salida básica
- Entrada: parámetros de línea de comandos y diálogo.
- Salida: línea de comandos y diálogo.
Manejo de excepciones
- Concepto, ejemplos y definición (clase), lanzamiento y atrape.
Expresiones y operadores
- Aritméticos binarios (multiplicativos y aditivos) y unarios (negación y posfijos).
- Relacionales (comparación e igualdad), lógicos (binarios y unarios) y asignación.
- Evaluación y orden de precedencia.
Instrucciones y estructuras de control
- Estructuras de secuenciación (
{}
).
- Estructuras de selección o bifurcación (
if/else
y switch
).
- Estructuras de repetición o iteración (
while
, do-while
y for
).
Métodos: fundamentos
- Conceptos: modularización y reutilización, declaración e invocación.
- Componentes: encabezado (identificador, parámetros y tipo de retorno) y cuerpo.
- Métodos estáticos (funciones).
- Sobrecarga: declaración, firmas y resolución de llamados.
Métodos: funcionamiento
- Paso de argumentos: por valor y por referencia.
- Estado de memoria estática, memoria dinámica y pila de llamados.
- Reglas de alcance o ámbito de identificadores.
Constructores
- Concepto y utilización: declaración e invocación.
Recursividad
- Concepto y utilización.
- Orden de llamados.
Arreglos o vectores: fundamentos
- Concepto, estructura y estado de memoria.
- Declaración e inicialización.
- Acceso a celdas y recorrido.
- Parámetros de tipo arreglo y paso de argumentos.
Arreglos o vectores: operaciones
- Utilidad y operaciones comunes (suma, promedio, mínimo, máximo).
- Búsqueda: primitivos e instancias.
- Ordenamiento: primitivos e instancias.
Matrices
- Concepto, estructura y estado de memoria.
- Declaración e inicialización.
- Acceso a celdas y recorrido.
Hileras o cadenas de caracteres
- Concepto.
- 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.
Entrada y salida: archivos
- Conceptos y organización física de archivos.
- Operaciones de archivos: lectura y escritura.
- Procesamiento binario/textual: apertura/cierre y lectura/escritura.
Programación avanzada desarrollando uno de los siguientes temas:
- Matrices, algoritmos y bibliotecas de álgebra lineal.
- Fundamentos de graficación y de interfaces gráficas.
- Punteros y referencias, copia y clonación de objetos.
- Algoritmos de búsqueda y ordenamiento básicos.
- 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
- Equipo audiovisual con presentaciones referentes a cada tema, donde se explica gráficamente los conceptos a desarrollar y se ofrecen los elementos teóricos básicos para el conocimiento de las distintas estructuras de datos y algoritmos.
- Pizarra para explicar en más detalle el funcionamiento de los algoritmos y características de las estructuras de datos. Es un recurso importante para la clarificación de dudas prácticas y presentación de ejercicios prácticos.
- Prácticas de ejercicios y problemas redactados por los profesores de la cátedra o de libros de referencia.
- Laboratorio para conocer los conceptos básicos de una herramienta visual.
Evaluación
- 15%. Quices. Ejercicios cortos que deberá el estudiante resolver en forma individual al iniciar la clase. No se repondrán por llegadas tardías.
- 25%. Tareas cortas. Ejercicios que deberá resolver el estudiante individualmente de forma extraclase.
- 60%. Exámenes parciales. Tres exámenes de igual ponderación, cuyas fechas serán comunicadas oportunamente por el profesor.
Observaciones
- 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.
- La entrega tardía de una evaluación será castigada con 10 puntos porcentuales por día de retraso.
- Cualquier evaluación donde se detecte plagio, su calificación será anulada por completo.
Bibliografía
- 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.
- Barnes, David J.; Kölling Michael. Programación orientada a objetos con Java.
ISBN 978-84-8322-350-5. Pearson Educación, 2007.
- 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 |