PDF de programación - Introducción de la programación concurrente en el primer curso de programación

Imágen de pdf Introducción de la programación concurrente en el primer curso de programación

Introducción de la programación concurrente en el primer curso de programacióngráfica de visualizaciones

Actualizado el 18 de Mayo del 2018 (Publicado el 18 de Enero del 2017)
1.468 visualizaciones desde el 18 de Enero del 2017
136,8 KB
7 paginas
Creado hace 13a (20/05/2010)
Eighth LACCEI Latin American and Caribbean Conference for Engineering and Technology (LACCEI’2010)
“Innovation and Development for the Americas”, June 1-4, 2010, Arequipa, Perú.



Introducción de la programación concurrente en el primer curso

de programación

Adolfo Di Mare

Escuela de Ciencias de la Computación e Informática

Universidad de Costa Rica

[email protected]



RESUMEN

Se presenta una forma simple y directa de incorporar los fundamentos de programación concurrente en el primer
curso de programación, sin que esta modificación curricular signifique una carga académica adicional excesiva.
Además se discute el impacto que este cambio curricular tiene en el docente universitario.

Palabras clave: Programación concurrente, diseño curricular, programación por ejemplos, introducción de
técnicas de programación, software.


ABSTRACT

We present a simple and straightforward way to include the most important concurrent programming techniques
in the first programming course, without having this curricular change impose an excessive additional academic
burden. The impact that this curriculum change has on the university professor is also discussed.

Keywords: Concurrent programming, curricular design, programing by example, introduction to
programming techniques, software.

1. INTRODUCCIÓN
Es una realidad que los seres humanos vivimos tomando decisiones en cada momento. Hacer algo siempre
significa dejar de hacer muchas otras cosas más. Por eso, cuando necesitamos hacer más en la misma cantidad de
tiempo tenemos 2 caminos: dejar de lado lo que antes considerábamos necesario o inventar una forma diferentes
de acción que permita lograr lo mismo pero con menos recursos. A los segundo lo llamamos tecnología, y las
ideas que se presentan aquí nacen de aprovechar la tecnología para mejorar la productividad del proceso de
enseñanza aprendizaje. Conviene comenzar por una propuesta curricular básica como la que se presenta en
(DiMare-1997) o la de la ACM (Association for Computing Machinery) para el primer curso de programación,
"CS1" (CC2001).

Desafortunadamente, no pasó siquiera la mitad de la década que termina en el 2010 y ya no fue posible continuar
duplicando en cada nuevo ciclo de construcción la velocidad de los procesadores (HPG-2002). Para aumentar el
rendimiento y la potencia de las máquinas actuales ya no es posible simplemente adquirir otros equipos: ahora es
necesario programarlos mejor. Por eso, para aprovechar las nuevas arquitecturas de varios núcleos es necesario
contar con programadores más educados, quienes conozcan y dominen las técnicas de programación concurrente
y distribuida (talvez antes de dos décadas los compiladores y sistemas operativos le incluyan la concurrencia a los
algoritmos automáticamente, pero antes de llegar a ese paraíso soñado hay que vivir la realidad actual). Por eso es
necesario que los profesionales y académicos de la computación conozcan las técnicas de programación



Arequipa, Perú

WE1-1 June 1-4, 2010

8th Latin American and Caribbean Conference for Engineering and Technology



concurrente, como también es un hecho que la mayor parte de los docentes, quienes tienen la misión de liderar el
proceso que lleve a la asimilación de estas tecnologías, son personas que encuentran muchas razones para
posponer la asimilación de estos nuevos conocimientos. Ese es el temor a lo desconocido que muchas veces
impide alcanzar los objetivos.

El problema inmediato que hay que resolver es determinar cómo convencer a los maestros para que aprendan y
enseñen programación concurrente. Además de mostrar un enfoque apropiado para lograr esta meta, aquí también
se indica cómo puede el docente lograr cambiar su enfoque paradigmático para incorporar las nuevas tecnologías
sin que eso engorde innecesariamente su curso. Es necesario que la actitud del maestro sea positiva para que trate
de buscar la forma de usar concurrencia desde el principio; aquí se exponen ideas que muestran que esa tarea no
es tan complicada como parece, pero después de todo solo es el mismo profesor el que puede tomar la decisión de
adoptar la concurrencia porque no es usual en los ambientes académicos obligar a digerir el nuevo conocimiento.

2. APRENDIZAJE EN EL PRIMER CURSO DE PROGRAMACIÓN

La gran mayoría de los estudiantes han interactuado mucho con computadores, pues todo el tiempo usan aparatos
electrónicos como música MP3, teléfonos celulares, cajeros automáticos, etc. Enfrentarlos a problemas de
programación es más fácil y por eso sí es posible cubrir más materia en menos tiempo.



CS1: PROGRAMACIÓN I

Objetivo: Proveer al estudiante la formación básica en
programación para su adecuado desempeño en los cursos
subsiguientes de la carrera, fomentándole sus habilidades generales
para la resolución de problemas.
Contenidos: Algoritmos y estructuras de datos, bifurcación,
iteración, recursividad, entrada y salida, clases y objetos, herencia,
polimorfismo, jerarquías funcionales y procedimentales,
excepciones, clases contenedoras, ordenamiento, concurrencia y
sincronización, documentación, prueba de programas, herramientas,
depuración.

Figura 1

En la Figura 1 se muestra el programa del primer curso de programación, en el que están la mayor parte de los
conceptos fundamentales que incorporan los lenguajes contemporáneos más importantes. El tema de la
concurrencia aparece como un tópico más; a ningún estudiante le causará molestia alguna verlo ahí incluido.

Si el docente escoge bien los ejemplos utilizados a lo largo del curso, la mayor parte de sus alumnos los
asimilarán; notarán que algunos conceptos son más difíciles que otros: eso es lo normal cuando se estudia
cualquier cosa. Por eso, lograrán asimilar todos esos conceptos básicos durante el curso. En muchos casos
conviene incorporar las siguientes ideas al impartir un curso en el que la programación concurrente es un tópico
relevante:

• Use un ambiente de desarrollo Java adecuado.
• Los alumnos deben hacer al menos 5 proyectos programados por ciclo lectivo.
• Con el fin de que los estudiantes tengan la oportunidad de resolver sus dudas inmediatamente imparta al

menos un 20% de lecciones en el computador.

• Utilice las buenas ideas de la programación extrema (Beck-2000): ponga una pareja de alumnos por

máquina e intercambie el rol del que maneja el teclado.

• Para motivar a los estudiantes use al menos un programa en que se necesiten usar gráficos o juegos

(KP-2001).



Arequipa, Perú

WE1-2 June 1-4, 2010

8th Latin American and Caribbean Conference for Engineering and Technology



• Programe usando una biblioteca preconstruida y muestre cómo el uso de concurrencia permite aumentar

el desempeño.

• Exponga tanto en forma teórica como práctica la teoría relevante.

La técnica "MapReduce" expuesta en (DG-2004) es defendida por muchos como una alternativa muy simple para
implementar concurrencia. Su uso en el primer curso de programación es saludable si ya se cuenta con algunos
ejemplos que los estudiantes pueden utilizar.

Varios ejemplos específicos de programación concurrente están disponibles en la red, por ejemplo en
(Hartley-1998).

3. CÓMO VENCER EL TEMOR DEL PROFESOR

El temor a lo desconocido es un sentimiento natural que nos protege de acciones que puedan producirnos daño.
Por eso, al emprender una nueva aventura es necesario controlar el temor. Para los jóvenes la programación
concurrente no representa un gran reto, pues están acostumbrados a lidiar con muchos tipos de máquinas
programables como su teléfono celular, su MP3 personal, el cajero electrónico del banco, etc. Pero para el
profesor, quien ha consolidado un arsenal educativo para los cursos que imparte, aprender un tema como éste
puede ser abrumador.

Sin embargo, no es la primera vez que los maestros debemos enfrentar un enfoque paradigmático diferente. La
OOP, Programación Orientada a los Objetos, también causó revuelo en la comunidad académica, que encontró
muchas razones para no adoptarlas. Si se examina el temario de un curso de programación para los años sesenta o
setenta, es difícil encontrar referencias a los conceptos tan comunes como herencia o clase. En los pasillos de las
universidades se escuchan muchos argumentos contra la adopción temprana de técnicas de programación
concurrente: es demasiado duro, requiere de equipo especializado, faltan herramientas, el concepto es abrumador
para los alumnos que están acostumbrados a pensar secuencialmente, etc. Todas estas apreciaciones son
incorrectas, en especial la última, pues los seres humanos vivimos en un mundo altamente concurrente (¡podemos
hablar por teléfono celular mientras conducimos el auto!), mientras que obligar a una persona a pensar
secuencialmente es una de las grandes barreras que debe aprender cualquier programador. Afortunadamente, la
experiencia incorporando OOP en los cursos de programación es muy útil para mostrarnos el camino para hacer lo
mismo con los conceptos de concurrencia. Veremos en el mediano plazo que ambas experiencias son similares.

Hace falta que el docente, conscientemente, cambie su actitud. En lugar de encontrar todas las razones por la que
no es posible hacerlo, más bien conviene pensar en como sí se puede lograr. Una buena estrategia de acción puede
incorporar varias de e
  • Links de descarga
http://lwp-l.com/pdf1990

Comentarios de: Introducción de la programación concurrente en el primer curso de programación (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad