[UCR]
[/\]

Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
[<=] [home] [<>] [\/] [=>

CI-0202 Principios de Informática

II Semestre 2014 Adolfo Di Mare

 

Páginas de otros profesores

Braulio Solano <braulio.solano@ecci.ucr.ac.cr>
http://bsolano.com/ecci/claroline/course/index.php?cid=CI0202

 

OBJETIVO

      Proveer al estudiante la formación básica en programación y construcción de algoritmos para la resolución de problemas usando computadores.

 

OBJETIVOS ESPECIFICOS

      Al finalizar el curso, el estudiante será capaz de:

  1. Comprender el funcionamiento de equipo básico de computación.
  2. Diseñar, organizar e implementar algoritmos para resolver problemas específicos.
  3. Usar un ambiente integrado de desarrollo de programas.
  4. Reutilizar componentes de programación.
  5. Aplicar a nivel básico buenas prácticas de construcción de programas.

 

CONTENIDOS

  1. Fundamentos:
    1. Nociones básicas de lenguaje de programación, algoritmos, arquitectura del computador, sistemas operativos y sistemas de numeración (dec,bin, hex).
    2. Ambientes integrados de desarrollo de programas.
  2. Algoritmos:
    1. Tipos y variables, declaración y asignación.
    2. Hileras, uso y manipulación.
    3. Entrada/salida de datos y de archivos.
    4. Estructuras básicas de control: secuenciación, bifurcación, iteración.
    5. Especificación e implementación de métodos y funciones.
    6. Estructuras de datos basadas en arreglos y matrices multidimensionales.
    7. Introducción a la recursividad.
  3. Clases:
    1. Especificación e implementación: clases, atributos, instancias, referencias.
    2. Clases: parte pública, parte privada, construcción y destrucción de objetos.
    3. Control de excepciones.
    4. Manejo de clases contenedoras parametrizadas básicas.
    5. Uso de herencia, polimorfismo y programación genérica.
  4. Extra:
    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. Memoria estática, memoria dinámica y recolectores de basura.
    5. Algoritmos de búsqueda y ordenamiento básicos.

EVALUACION

      El peso de la evaluación estará en los exámenes, aunque es indispensable que todos los estudiantes realicen los trabajos programados. Los exámenes se realizarán en horas lectivas cuya fecha será anunciada con 2 semanas naturales de anticipación.
Tareas, proyectos, quices   30%    (Prof. Di Mare)
Examen Parcial #1   15%    jueves 25 de setiembre
Examen Parcial #2   20%    jueves 30 de octubre
Examen Final   35%    lunes 24 de noviembre
 


 

INDICE DE MATERIALES DEL CURSO

Exámenes
P #1  -  P #2  -  Final
Tareas
#1  -  #2  -  #3  -  #4
#5  -  #6  -  #7  -  #8
(Prof. Di Mare)
Tareas (Prof. Di Mare)
# 1: Números de Armstrong
# 2: Inversión de los valores de un vector
# 3: Comparación de vectores
# 4: Juego de toques y famas
# 5: Juego del Gato (Tic Tac Toe)
# 6: Operaciones matriciales para regresión lineal múltiple
# 7: Juego de los números palindrómicos
# 8: Menúes de restaurante
Ejemplos de laboratorio (Prof. Di Mare)
Laboratorio # 1   [Java]   [C++]: Números de Armstrong
Laboratorio # 2   [Java]   [C++]: El tamaño de cada tipo de datos
Laboratorio # 3   [Java]   [C++]: while vs for [Matriz]
Laboratorio # 4   [Java]   [C++]: La clase año bisiesto
Laboratorio # 5   [Java]   [CIN]   [C++]: Calculadora de números enteros
Laboratorio # 6   [Java]   [C++]: Clase ord_int para mantener varios números ordenados
Laboratorio # 7   [Java]   [C++]: Recursividad de las funciones Fibonacci() y Factorial()
Laboratorio # 8   [Java]   [C++]: Ordenamiento por Seleccion(), Insercion() y Burbuja()
Laboratorio # 9   [Java]   [C++]: Una clase para clasificar edades
Laboratorio # 10   [C++]: La clase Bolsa para contar números
Laboratorio # 11   [C++]: Argumentos por valor y argumentos por referencia
Laboratorio # 12   [Java]   [C++]: Uso de argumentos en la línea de comandos
Laboratorio # 13   [Java]   [C++]: Lectura de los nombres de archivos del directorio actual
Laboratorio # 14   [Java]   [C++]: Búsqueda lineal y binaria en un vector ordenado
Laboratorio # 15   [Java]   [C++]: Muestra cómo centrar una hilera
Laboratorio # 16   [Java]   [C++]: Muestra como usar una matriz NxM
Laboratorio # 17   [Java]   [C++]: La lista
Laboratorio # 18   [Java]: Java pasa copias de referencias
Laboratorio # 19   [Java]: Fibonacci() super-lerdo y super-rápido
Laboratorio # 20   [Java]: Manejo de Excepciones
Laboratorio # 21   [Java]: Manipulación de hileras
Laboratorio # 22   [Java]: Ventanas
Laboratorio # 23   [Java]: Iteradores
Laboratorio # 24   [Java]: Generador de todos los subconjuntos
Laboratorio # 25   [Java]: String vs StringBuffer
Laboratorio # 26   [Java]: Ejemplo de métodos polimórficos con herencia.
Laboratorio # 27   [Java]: Muestra algunos límites de la aritmética entera.
Laboratorio # 28   [Java]: Muestra error al usar 'static'.
Herramientas
http://www.DrJava.org && DrJava.htm
http://cs.joensuu.fi/jeliot
http://www.BlueJ.org
http://www.JCreator.com
http://java.sun.com/javase/downloads/index.jsp
Bibliotecas de programas
http://math.nist.gov/javanumerics/jama/
http://jchart2d.sourceforge.net/
http://sourceforge.net/projects/javacsv/
http://www.jfree.org/jfreechart/

 

LIBRO DE TEXTO

      Como lenguaje de programación en el curso se usa Java, por lo que conviene que el estudiante adquiera un buen libro de texto para el lenguaje sobre Java, que es el lenguaje que se usará como marco de referencia en todo el curso. Cada estudiante es responsable de conseguir sus libros. Estos son buenos libros de texto:

Barnes, David J. & Kölling Michael
Programación orientada a objetos con Java, ISBN: 978-84-8322-350-5, Pearson Educación, 2007.
      http://www.bluej.org/objects-first/
      http://www.bluej.org/objects-first/resources/projects.zip
Ceballos, Francisco Javier
Java 2 - Curso de Programación - 4º ed., ISBN 978-607-707-112-9, Alfaomega Ra-Ma, 2011.
      http://www.fjceballos.es/publicaciones_java.html
      http://www.ra-ma.es/down/Java2-IGyApIn3ed-Ceballos.zip
Deitel, H.M.; Deitel, P.J.
Java Cómo programar 5ta edición, ISBN 970-26-0518-0, Prentice-Hall, 2004.
      http://www.deitel.com/
      ftp://ftp.prenhall.com/pub/deitel/J_HTP/java-htp5e/examples/java5-examples.zip

BIBLIOGRAFIA

Di Mare, Adolfo
Convenciones de Programación para Pascal, Reporte Técnico ECCI­01­88, Proyecto 326­86­053, Escuela de Ciencias de la Computación e Informática, Universidad de Costa Rica, 1988.
      http://www.di-mare.com/adolfo/p/convpas.htm
Gosling,James & Joy, Bill & Steele, Guy & Bracha, Gilad
The Java Language Specification, 3rd Ed; Addison-Wesley, 2005.
Hommel, Scott (editor)
Java Code Conventions
      http://java.sun.com/docs/codeconv/CodeConventions.pdf
Stroustrup, Bjarne
"The C++ programming language (3rd ed)"; Addison-Wesley; 1998.
      http://www.research.att.com/~bs/3rd.html
Sun Microsystems
"Página oficial de Javasoft"
      http://java.sun.com
Sun Microsystems
JavaTM Platform, Standard Edition 6 API Specification
      http://java.sun.com/javase/6/docs/api/
Sun Microsystems
Trail: Learning the Java Language; The JavaTM Tutorials
      http://java.sun.com/docs/books/tutorial/java/

 

Políticas de Corrección de Tareas

 

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>
Copyright © 2014
Derechos de autor reservados © 2014
[home] <> [/\]