Curso
de Programación I
Programación Basada en Objetos
Plan
del curso
Financiado por:
Elaborado por:
Diseño de contenido: MSc. Edgar Casasola Murillo
Diseño curricular: MSc. Melvin Chaves Duarte
Diseño gráfico: Bach. Jorge Villalobos Sancho
Módulo 1:
Bases para la programación por objetos
Módulo 2:
Vectores-Matrices e Hileras
En la actualidad existen múltiples perfiles
profesionales y académicos en el área de computación. Sin embargo,
las habilidades y conocimientos adquiridos en cuanto a programación de
computadoras son medulares en la formación de cualquier profesional en esta
disciplina.
El primer curso de programación pretende
que el estudiante vaya desarrollando su habilidad para resolver problemas de
forma metódica. En este caso el ciclo de
desarrollo de un programa inicia con la identificación del problema a resolver
y culmina con la implementación de un programa en algún lenguaje
específico. Aunque existen una serie de
contenidos fundamentales que todo programador debe conocer, lo esencial en un
programador no es el conocimiento que adquiera de las características
específicas de un lenguaje de programación sino su habilidad para resolver
problemas.
Se pretende en este curso que desde un
inicio el estudiante vaya experimentado el proceso de resolución de problemas
mientras va aprendiendo los conceptos básicos de programación. El estudiante iniciará identificando un
problema, llevando a cabo un análisis y descomposición del mismo, creará un
modelo y diseñará una especificación de un algoritmo apropiado para finalmente
codificar en un lenguaje su solución. La calidad del código y el proceso de
verificación de los productos obtenidos en cada fase son importantes también.
En la actualidad el desarrollo de
software se ha inclinado hacia el desarrollo de aplicaciones modulares
implementadas bajo técnicas de análisis orientado a objetos. Además, la mayoría
de los programas de estudio en Computación han optado por iniciar la formación
en computación mediante la enseñanza de la programación, y específicamente
mediante el Paradigma de Programación Orientado a Objetos. Es por esto que la herramienta mediante la cual
el estudiante concretará sus soluciones será un lenguaje de programación
orientado a objetos. Como todos sabemos
el conocimiento de la herramienta aunque no sea un elemento central, sigue
siendo primordial, ya que en algunos momentos puede facilitar o condicionar las
opciones de implementación, debido a los mecanismos y abstracciones presentes
en el lenguaje. El proceso de análisis y
diseño, el lenguaje de programación y la herramienta deben pertenecer al mismo paradigma.
El análisis, diseño e implementación
basada en objetos será utilizado como hilo conductor del proceso de
enseñanza. Se pretende que el
estudiante pueda ver el panorama general al iniciar el proceso de aprendizaje
de manera que pueda tener un contexto de trabajo. El estudiante irá construyendo y aprendiendo
los conceptos mediante su integración al marco conceptual que se va
formando. Cada nuevo concepto será
integrado y se explorará la ortogonalidad del mismo con respecto a los
conceptos previamente adquiridos.
En este curso el estudiante creará
soluciones para resolver problemas simples mediante el diseño de algoritmos y
desarrollo de programas, aplicando técnicas actuales de desarrollo de software
orientado a objetos y considerando criterios de calidad apropiados.
Al finalizar el curso el estudiante
deberá ser capaz de:
·
Identificar
problemas específicos.
·
Representar
problemas mediante la utilización de modelos abstractos.
·
Comprender
los elementos y estructuras básicas presentes en un lenguaje de programación
orientado a objetos para implementar programas modulares, claros, simples y
generales como sea posible.
·
Aplicar
a nivel básico buenas prácticas de construcción de software tales como uso de
estándares de documentación, codificación, verificación y validación para el
aseguramiento de la calidad.
·
Analizar
problemas mediante un proceso de descomposición y refinamiento en pasos
sucesivos.
·
Sintetizar
los resultados del proceso de análisis para diseñar algoritmos para la
resolución de problemas.
·
Aplicar
una metodología de resolución de problemas que le permita trabajar con orden y
disciplina.
·
Descubrir
la importancia del desarrollo de buenas prácticas de trabajo en equipo y de
comunicación oral para la resolución de problemas.
·
Aplicar
técnicas apropiadas de comunicación escrita para la documentación de la
solución de cada problema.
El curso está dirigido fundamentalmente
a los Estudiantes de informática en
general, con un énfasis especial para los estudiantes de los siguientes
centros:
CENFOTEC
Colegio
Universitario de Alajuela
Colegio
Universitario de Cartago
Colegio
Universitario de Puntarenas
Instituto
Tecnológico de Costa Rica
Universidad
de Costa Rica
Universidad
Estatal a Distancia
Universidad
Latina
Universidad
Nacional.
Es aconsejable pero no imprescindible,
tener algunos conocimientos del desarrollo de la computación y del campo de la
programación, al igual que familiaridad en cuanto al uso del computador.
El curso de Programación I se extenderá
preferiblemente a lo largo de 4 meses de trabajo, o una equivalencia aproximada
de 180 horas bi-modales.
60 Horas
presenciales
120 Horas extra
clase
* Bajo un esquema semestral la recomendación para el estudiante es que
le dedique al menos 2 horas diarias al curso de programación.
En cada módulo podremos ver:
Contenidos del curso: Documentos a
estudiar. Colgados del Web o CDROM con formato PDF, de fácil impresión.
Material Complementario: lecturas
complementarias necesarias para la realización de las actividades programadas.
Actividades: Se podrán visualizar y consultar en
el manual del estudiante Serán tareas planificadas semanalmente (o después de
cada 4 horas de clase).
Seguidamente se muestra una tabla
donde se puede ver claramente la estructura detallada del curso:
Contenidos |
Fechas previstas |
Módulo 1: Bases para la programación por objetos Objetivo general: El
estudiante reconocerá la utilización de los elementos necesarios para
construir programas desde una perspectiva de objetos en función de la
resolución de problemas. Objetivos específicos: ·
Describir el ciclo de desarrollo de un programa. ·
Utilizar la estructura básica de un programa orientado a objetos. ·
Utilizar los tipos de valores, constantes, variables y referencias a
instancias de objetos, para representar los atributos de una clase. ·
Identificar la importancia de los estándares de codificación y del
control de calidad y utilizarlos a un nivel básico. ·
Aplicar apropiadamente las estructuras de control de flujo de
programas para la resolución de problemas. ·
Utilizar los operadores lógicos y relacionales para escribir
condiciones de control. ·
Construir métodos apropiados para estructurar y desarrollar clases
para la resolución de problemas. ·
Crear instancias de clases mediante el uso de métodos. ·
Utilizar la asignación de valores, la entrada-salida básica de datos,
los operadores aritméticos y la evaluación de expresiones para resolver
problemas simples. ·
Aplicar técnicas de recursividad para la resolución de problemas. ·
Evaluar problemas para determinar el uso de recursividad para la
resolución de casos. Temas: 1. Bases para la programación por objetos. ·
Introducción al ciclo de desarrollo de un programa: Identificación del
problema, Análisis y descomposición
del problema, Diseño, Implementación, Ejecución del programa, y Pruebas. ·
Conceptos de: Ambiente de desarrollo, lenguaje, código fuente, código
objeto, compiladores e intérpretes. ·
Estructura básica de un programa orientado a objetos. ·
Escritura, compilación y ejecución de un programa. 2. Primitivas de codificación. ·
Valores (literales) tipos, constantes, variables, referencias a
instancias de objetos y su uso para la representación de atributos de una
clase. ·
Declaración e inicialización de variables para el almacenamiento de
valores. ·
Uso de variables como atributos de un objeto ·
Entrada y salida básica de datos. ·
Acceso a los atributos de un objeto (guardar y devolver los valores de
cada atributo de un objeto). ·
Operadores aritméticos y evaluación de expresiones para la solución de
problemas. 3. Estructuras de Control. ·
Tipos de estructuras de control del flujo de programas. (Secuencial,
condicional y de repetición) ·
Eje transversal: Importancia de los estándares de
codificación. ·
Eje transversal: Importancia del control de
calidad, listas de revisión y casos de prueba. ·
Operadores relacionales, operadores lógicos y prioridad entre los
mismos. ·
Conceptos de estructuras de: condición, selección de casos, ciclos con
contador, ciclos con condición de entrada y ciclos con condición de salida, y
su uso para el diseño y desarrollo de soluciones a los problemas. Ejemplo: if, if-else, switch, for, while,
do-while. 4. Métodos. ·
Funciones matemáticas de biblioteca. Por ejemplo: Generación de
números aleatorios. ·
Métodos. Pase de parámetros por valor y por referencia. Uso de los
métodos para representar las acciones que lleva a cabo un objeto. ·
Sobrecarga de métodos. ·
Constructores y destructores. ·
Principio de localidad de las variables. ·
Recursividad y su uso para resolución de problemas. ·
Creación de objetos mediante métodos “fábrica”. ·
Encadenamiento de métodos. |
32 horas
presenciales 8 semanas del día ____________ al día ____________ del mes ____________ del año ____________ |
Contenidos |
Fechas previstas |
Módulo 2: Vectores-Matrices e Hileras Objetivo general: El
estudiante resolverá problemas mediante estructuras de datos de tipo: vector,
matriz e hileras de caracteres. Objetivos específicos: ·
Utilizar vectores y matrices para resolver problemas computacionales. ·
Crear y utilizar las operaciones y manipulación de hileras y
caracteres para problemas de texto. ·
Utilizar el conocimiento de matrices para diferenciar la
representación interna de una estructura de datos y su interfaz. ·
Utilizar la graficación para estimular la creatividad y la
originalidad en el diseño de la interfaz. Temas: 1. Fundamentos de Vectores y Matrices. ·
Vectores y su uso para la representación y desarrollo de estructuras
de datos. ·
Matrices y su uso para la representación y desarrollo de estructuras
de datos. ·
Algoritmos clásicos de ordenamiento (burbuja y selección) y búsqueda
en vectores (búsqueda binaria y secuencial). 2. Manipulación de Caracteres e Hileras de Texto. ·
Manipulación de caracteres. ·
Hileras de caracteres (Ejemplo: String). ·
Operaciones básicas con hileras de caracteres. Ejemplo: convertir a
mayúscula, minúscula, eliminar blancos, buscar sub-hileras, comparar hileras. 3. Fundamentos de graficación ·
Contextos gráficos. La pantalla
gráfica vista como una matriz de píxeles. ·
Diferenciación entre la representación interna de una estructura de
datos y la interfaz visualizada por el usuario. ·
Manejo básico de tipos de letra y color. ·
Formas simples: líneas, círculos, rectángulos y polígonos. ·
Desarrollo de interfaces gráficas. |
32 horas
presenciales 8 semanas del día ____________ al día ____________ del mes ____________ del año ____________ |
Del _______________ al
_______________
1ª Semana:
TEMA
Bases para la programación por objetos
Del _______________ al
_______________
2ª Semana:
TEMA
Primitivas de codificación (variables)
·
Tipos,
literales, constantes, variables, referencias a instancias de objetos y su uso
para la representación de atributos de una clase.
·
Declaración
e inicialización de variables para el almacenamiento de valores.
·
Uso
de variables como atributos de un objeto.
Del _______________ al
_______________
3ª Semana:
TEMA
Primitivas de codificación (Entrada-almacenamiento-salida)
Del _______________ al
_______________
4ª Semana:
TEMA
Primitivas de codificación (Operadores Aritméticos)
Del _______________ al
_______________
5ª Semana:
TEMA
Estructuras de Control (condición, selección de casos, ciclos con contador)
Del _______________ al
_______________
6ª Semana:
TEMA Estructuras
de Control (Ciclos con condición)
Del _______________ al
_______________
7ª Semana:
TEMA
Métodos
Del _______________ al
_______________
8ª Semana:
TEMA
Métodos (y objetos)
Del _______________ al
_______________
9ª Semana:
TEMA
Recursividad
Del _______________ al
_______________
10ª Semana:
TEMA
Fundamentos de Vectores
·
Vectores
y su uso para la representación y desarrollo de estructuras de datos.
Del _______________ al
_______________
11ª Semana:
TEMA
Vectores
·
Algoritmos
de ordenamiento en vectores (burbuja y selección).
·
Algoritmos
de búsqueda en vectores (búsqueda binaria y secuencial).
·
Algoritmos
recursivos y vectores (ordenamiento, búsqueda).
Del _______________ al
_______________
12ª Semana:
TEMA
Matrices
·
Matrices
y su uso para la representación y desarrollo de estructuras de datos.
Del _______________ al
_______________
13ª Semana:
TEMA
Manipulación de Caracteres e Hileras de Texto.
·
Manipulación
de caracteres.
·
Hileras
de caracteres (Ejemplo: String).
·
Operaciones
básicas con hileras de caracteres. Ejemplo: convertir a mayúscula, minúscula,
eliminar blancos, buscar subhileras, comparar hileras, etc).
Del _______________ al
_______________
14ª Semana:
TEMA
Fundamentos de graficación y desarrollo de interfaces
Del _______________ al
_______________
15ª Semana:
TEMA
Repaso de actividades del curso
Para la instrucción de este curso se ha
elegido una metodología denominada Bimodal,
mediante la cual los objetivos formativos se alcanzan a través de la
interacción entre estudiantes y profesor utilizando una combinación de medios
digitales basados en Internet, CDROM y “cara a cara”. Dejando prevista la posibilidad de
implementar el curso vía Videconferencia.
Los participantes
del curso comienzan y finalizan a la vez el proceso formativo, y gracias a
este aspecto, todos ellos tienen la posibilidad de experimentar el ambiente que
más se adapte a su realidad. Así los estudiantes y facilitadores de la UNED
pueden utilizar sus sistemas de Videoconferencia, los de la UNA la plataforma
en Internet, o una combinación de ellos.
Con esta metodología y el trabajo en grupo se produce un continuo flujo
de comunicación y estímulos que surgen en el transcurso del proceso formativo.
Por un lado el desarrollo de los
contenidos y estudio de casos y algunas tutorías se llevarán a cabo en una fase
presencial. Por otra parte los proyectos
o casos de programación para ser resueltos por
grupos de estudiantes corresponden a la fase a distancia. Por supuesto todo esto acompañado del
material y tutoría apropiados.
Para lograr los objetivos se pretende
seguir la siguiente metodología a lo largo del curso:
1. Para
cada tema se da una presentación de conceptos con el fin de que el estudiante
tenga un primer contacto con los mismos.
2. Se
proveerá al estudiante de un ejemplo meramente operacional (“ruido mínimo”) con
respecto a la mecánica de implementación de cada concepto aprendido.
3. Se
presentará un ejemplo básico donde se contextualizará lo aprendido dentro del
paradigma de la Programación por
Objetos.
4. Posteriormente
se presentará un caso de aplicación contextualizado dentro de todo lo aprendido
hasta el momento.
5. El
hilo conductor del curso será la noción de objeto, aunque al inicio del curso
se debe trabajar solamente con la mínima cantidad de instancias y clases para
evitar ruido en las soluciones. Sin
embargo el estudiante podrá, en etapas tempranas de su aprendizaje, concentrar
su trabajo en la implementación de métodos para resolver problemas específicos,
y mediante programas de prueba para proveer un contexto estático implementando
la solución general dentro del método principal de la clase o “main”.
6. Para
aplicar los conceptos aprendidos en cada módulo se le presentará al estudiante
un problema básico en forma de caso que deberá resolver en grupo y que implica:
· Modelado del problema a resolver
identificando “responsabilidades” y “responsables” de las funciones a llevar a
cabo.
· Posteriormente se propondrá un
refinamiento mediante pasos sucesivos para la descomposición del problema
identificando cada vez de una manera más específica “quien” y
“qué” se desea hacer, hasta
llegar a unidades atómicas que describan más el “como” llevar a cabo cada paso.
· Al desarrollar una solución
programada se pondrá énfasis en los estándares de codificación y calidad de los
productos de cada fase.
7. La
depuración del modelo y de los programas se llevará a cabo mediante casos de
prueba y listas de chequeo.
8. Posteriormente
se presentarán problemas de mayor complejidad para que sean resueltos mediante
supervisión del profesor-tutor por parte de los estudiantes bajo la modalidad
de proyecto programado en equipo.
9. Se
deberán presentar avances escritos y reportes orales de los proyectos.
En resumen todos los contenidos serán
implementados aplicando una lógica basada en procesos didácticos o ciclos
pedagógicos multifactoriales. Esto quiere decir que los contenidos serán
abordados desde un dominio básico con pocas variables hasta alcanzar un nivel
superior por el estudiante. El siguiente gráfico ejemplifica la metodología
expuesta.
Para el desarrollo del curso se
emplearán recursos informáticos, que facilitarán las comunicaciones entre los
participantes, y recursos documentales. Éstos últimos serán de carácter
didáctico e informático.
Para el presente curso es necesario que
las computadoras cumplan los siguientes requisitos (Hardware): Procesador
Pentium II, 64Mb RAM o superior, 10Gb DD o superior.
Además se emplearán los siguientes
programas, previamente instalados en las computadoras (Software): Sistemas
operativos Linux o bien alguna versión
de Windows igual o superior a 98, navegador para Internet, compilador de Java y Máquina Virtual jdk1.3 o
superior, IDE de desarrollo apropiado a
las capacidades del equipo con que se cuenta (Dr. Java es recomendable).
Para la realización de este curso se
cuenta con los siguientes documentos en formato PDF:
Manual o Guía del Estudiante.
Manual o Guía del Tutor.
Para la realización de este curso se cuenta con un CD con lo siguiente:
Manual o Guía del Estudiante.
Manual o Guía del Tutor.
Contenidos completos del curso.
Ejemplos y ejercicios.
Habrá actividades que deberán ser
resueltas individualmente.
La resolución de casos en forma de
tareas programadas o proyectos deberán ser llevadas a cabo en subgrupos de 2 estudiantes o más si así lo dispone el tutor.
En otras ocasiones los estudiantes
tendrán que participar en discusiones y
resolución de problemas con todo el grupo, ya sea electrónicamente o
presencialmente.
Para aprobar el curso usted debe
completar los siguientes requisitos:
1.
Reporte
de ejercicios individuales y en grupo.
2.
Tareas
programadas (proyectos de programación en grupo).
3.
Exámenes
parciales.
A continuación el desglose de los
criterios de evaluación:
1. Ejercicios................................................... 10 %
2. Tareas Programadas.................................. 30 %
3. Exámenes parciales.................................... 60 %
4. Total.......................................................... 100
%