CI0202-Principios Informatica
CI0202-Principios Informatica
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:
1. Diseñar, organizar e implementar algoritmos para resolver problemas específicos del área de ingeniería, ciencias y afines.
2. Usar un ambiente de programación para la edición, prueba y depuración de programas.
3. Reutilizar componentes de software.
4. Aplicar buenas prácticas de construcción de software.
Semana
Contenidos y cronograma
1. Fundamentos de la programación 9-mar
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
2. Sistemas numéricos y representación de datos 9-mar
Bases y conversión: decimal, binaria y hexadecimal
Sistemas de codificación de texto: ASCII y UNICODE
3. Tipos de datos 16-mar
Tipos de datos: enteros, reales, booleanos, caracteres e hileras de texto.
Aritmética de precisión entera, aritmética de precisión flotante.
4. Definición y utilización de variables 16-mar
Definición de valores y variables:
Declaración: tipo, identificador y dirección
Inicialización de acuerdo al tipo de datos: valores, indirección (ej: punteros, referencias)
Estado de la variable en memoria (valor)
Asignación y conversión de tipos
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
5. Entrada y salida básica, verificación 23-mar
Entrada y salida básica:
Entrada: parámetros de línea de comandos y entrada interactiva
Salida: salida estándar y salida interactiva
Verificación de datos y manejo de errores (ej: manejo de excepciones)
6. Expresiones y operadores 23-mar
Evaluación de expresiones y orden de precedencia
Aridad de operadores: unarios (ej: negación) y binarios (ej: multiplicativos y aditivos)
Tipos de operadores: aritméticos, relacionales (comparación e igualdad), lógicos, y de asignación
1/3
7. Instrucciones y estructuras de control 30-mar
Secuencia de instrucciones y bloques de instrucciones
Condición de instrucciones (6-abr: sem santa)
Repetición de instrucciones por condición y por contador
8.a. Subrutinas: fundamentos 13-abr
Conceptos: modularización y reutilización, declaración e invocación
Componentes: encabezado (identificador, parámetros y tipo de retorno) y cuerpo
(13-abr: sem univ)
Funciones y procedimientos
Sobrecarga de subrutinas: declaración y resolución de llamados
8.b. Subrutinas: funcionamiento 20-abr
Paso de argumentos: por valor y por indirección
Alojamiento estático de memoria, alojamiento dinámico de memoria, y alojamiento automático de memoria
27-abr: I examen
(pila de llamados)
(hasta tema 7)
Reglas de alcance o ámbito de identificadores
Constructores: concepto y utilización, declaración e invocación
9. Recursividad 4-may
Concepto y utilización
Orden de llamados
10a. Colecciones lineales de datos: fundamentos 11-may
Concepto (ej: arreglos, listas), estructura y estado de memoria
Declaración e inicialización
Acceso a elementos y recorrido
Paso de colecciones por argumento a subrutinas
10b. Colecciones lineales de datos: operaciones 18-may
Utilidad y operaciones comunes (suma, promedio, mínimo, máximo)
25-may: II examen
Búsqueda (de acuerdo al tipo de datos de los elementos)
(hasta tema 10)
Ordenamiento (de acuerdo al tipo de datos de los elementos)
11. Matrices 1-jun
Concepto, estructura y estado de memoria
Declaración e inicialización
Acceso a elementos y recorrido
12. Hileras o cadenas de caracteres (textos) 8-jun
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
13. Entrada y salida: archivos 8-jun
Conceptos y organización física de archivos
Operaciones de archivos: lectura y escritura
Procesamiento binario/textual: apertura/cierre y lectura/escritura
14. Introducción a la programación orientada a objetos 15-jun
Paradigma: clases e instancias, atributos y métodos, abstracción y reutilización
Análisis y diseño: modelaje de clases e instancias
Construcción (compilación, interpretación) y ejecución
15. Programación avanzada (tema a escoger entre los siguientes) 22-jun, 29-jun
Matrices, algoritmos y bibliotecas de álgebra lineal.
Fundamentos de graficación y de interfaces gráficas.
Indirección (punteros y referencias), copia y clonación de objetos.
Algoritmos de búsqueda y ordenamiento básicos.
Herencia y polimorfismo III examen
Aritmética de precisión arbitraria. (hasta tema 14)
Cuadernos de lenguajes de computación.
Visualización de datos (ej: creación de gráficas, animaciones).
Simulación (ej: a partir de modelos matemáticos, físicos).
Predicción (usando modelos simples).
2/3
Metodología y evaluación
Se sigue una metodología híbrida tradicional-constructivista. En cada semana el estudiante Actividad Peso
dedica 12 horas al curso de Principios de informática, 4 presenciales y 8 extra-clase. Las 4
horas presenciales a la semana se dividen en 2 horas de lecciones magistrales y 2 en el 3 exámenes parciales 60%
laboratorio de cómputo. En las lecciones magistrales se utilizan recursos audiovisuales y la Laboratorios + tareas 30%
pizarra para ilustrar el proceso de resolución de problemas y los conceptos de programación.
En las horas de laboratorio los estudiantes resuelven problemas cortos de programación que Tarea programada 10%
requieren la teoría impartida en las clases magistrales con el apoyo del profesor del curso y el
asistente asignado.
En las 8 horas extra-clase a la semana el estudiante deberá resolver problemas de programación planteados en forma de
laboratorios y tareas cortas individuales de igual ponderación. Los enunciados de las tareas y laboratorios serán provistos por el
profesor en un aula virtual alojada en Mediación Virtual (http://mediacionvirtual.ucr.ac.cr/). La modalidad de uso de la plataforma
será baja virtual. Las clases y laboratorios serán impartidos presencialmente, mientras que la plataforma se utilizará para la entrega
y evaluación de los laboratorios y tareas. En la plataforma también se pondrá a disposición el material y los recursos estudiados en
clase. El estudiante entregará sus soluciones en el aula virtual antes de la fecha límite estipulada en el enunciado de cada tarea.
No se aceptarán entregas tardías.
Se realizarán tres exámenes parciales de igual ponderación (20% c/u) respectivamente en las semanas indicadas en el
cronograma a la derecha de los contenidos. Los exámenes se realizarán en papel durante la lección en el aula y por tanto tendrán
una duración máxima de 1 hora con 40 minutos. En caso de desfase, el profesor ajustará las fechas del cronograma y negociará
las fechas de los exámenes con los estudiantes una vez que se hayan cubierto los contenidos del mismo. Por la naturaleza de los
contenidos, los exámenes son acumulativos. Cada examen planteará un problema que el estudiante debe resolver mediante la
programación de computadoras.
Se realizará una tarea programada en la segunda mitad del curso. El objetivo de este proyecto será resolver un problema de
complejidad superior a aquellos vistos en clase. Para esto, el estudiante deberá realizar tanto labor de investigación para obtener
conocimiento respecto al trasfondo del problema y su solución, así como la implementación de la solución de este problema.
Lineamientos
1. Durante los exámenes el estudiante podrá consultar material teórico (libros, apuntes) o código que sea producto de su
trabajo en el curso o que haya sido proporcionado por el profesor. Los medios para consultar estos materiales durante el
examen serán indicados previamente por el profesor.
2. Es ilegal presentar como propio, código parcial o total escrito por otras personas u obtenido de fuentes de información,
como por ejemplo de libros o de Internet, sin la autorización expresa del docente. Los exámenes son estrictamente
individuales, y en caso de ser por computadora, es ilegal violar esta regla a través de aplicaciones de correo electrónico o
mensajería. En cualquier asignación en que se detecte plagio, se asignará un cero como nota en la evaluación y se
aplicará la normativa estipulada en el Reglamento de Orden y Disciplina de los Estudiantes de la Universidad de Costa
Rica (http://www.cu.ucr.ac.cr/uploads/tx_ucruniversitycouncildatabases/normative/orden_y_disciplina.pdf).
3. Todo código entregado por el estudiante debe compilar sin errores. De lo contrario será calificado con 0.
4. En cualquiera de los tipos de evaluaciones, el profesor podría proponer actividades opcionales por crédito extra en la nota
del curso.
5. Todo trabajo del curso que incluya investigación deberá citar las fuentes de información consultadas. De lo contrario será
calificado con 0.
Bibliografía
1. Rossant, Cyrille, “Learning IPython for Interactive Computing and Data Visualization”, ISBN: 978-1782169949, PACKT
Books, 2013. https://www.packtpub.com/big-data-and-business-intelligence/learning-ipython-interactive-computing-and-
data-visualization
2. Wachenchauzer, Rosita, Manterola, Margarita y otros, “Algoritmos y Programación con lenguaje Python”, OpenLibra, 2011.
https://openlibra.com/es/book/algoritmos-y-programacion-con-lenguaje-python
Software
3/3